How to Execute a Bash Script From an URL on Internet

Table of Contents

Various installation guides in Linux involve running a shell script first, which we download and then execute separately using Bash. Not only installation guides but also custom shell scripts written for automating manual activities involve downloading and executing scripts.

In this tutorial, we’ll cover a way using curl and wget to download and execute a script in a single step

Note

We must be cautious when using this method because downloading and executing scripts through an unsecured connection may lead to installing malware

This is my test script at https://bonguides.com/test.sh.

echo " ******************************************************"
echo " * This is a test script                              *" 
echo " * Author: https://bonguides.com                      *"
echo " ******************************************************"

Download and Execute a Bash Script Using curl

Some Linux distributions may not have curl installed by default. We can install it using the following command:

###Ubuntu/Debian
sudo apt-get -y install curl

###CentOs/Fedora/Redhat
sudo yum -y install curl

Now, to download and execute a script with cURL, we can use the option. Then, we pipe the result to bash:

curl -s https://bonguides.com/test.sh | bash

When we use the option, we’re asking curl to get all content at the URL silently which doesn’t display statistics like average download speed and total time.

# curl -s https://bonguides.com/test.sh | bash

 ******************************************************
 * This is a test script                              *
 * Author: https://bonguides.com                      *
 ******************************************************

Download and Execute a Bash Script Using wget

Most Linux distributions have wget installed by default.

###Ubuntu/Debian
sudo apt-get -y install wget

###CentOs/Fedora/Redhat
sudo yum -y install wget

Now, to download and execute a script with wget, we can use the options, a hyphen, and then pipe the result to bash:

wget -qO - https://bonguides.com/test.sh | bash

The option O is used to save the content of test.sh to a file. The trailing hyphen (the one between -qO and https://) is to tell wget to direct this content to /dev/stdout. Anything directed to /dev/stdout is displayed right on the terminal, that’s the reason why the content of test.sh is never written to disk.

If we use wget without a trailing hyphen and capital O, then get will save the content of the file to disk with the filename script.sh. This is because wget is actually used to download files in Linux.

Note

On the other hand, curl will never download files by default

# wget -qO - https://bonguides.com/test.sh | bash

 ******************************************************
 * This is a test script                              *
 * Author: https://bonguides.com                      *
 ******************************************************

Conclusion

In this short article, we learned how to execute a shell script directly from a URL using curl and wget.

Leave a Comment

Required fields are marked *