This is quite a common task for Linux system administrators, when it is needed to execute some command or a local Bash script from a one Linux workstation or a server on another remote Linux machine over SSH.
In this article you will find the examples of how to execute a remote command, multiple commands or a Bash script over SSH between remote Linux hosts and get back the output (result).
This information will be especially useful for ones, who want to create a Bash script that will be hosted locally on a one Linux machine but would be executed remotely on the other hosts over SSH.
Cool Tip: Connect to a remote SSH server without typing a password! Configure a passwordless authentication! Only 3 easy steps! Read more →
SSH: Execute Remote Command
Execute a remote command on a host over SSH:
$ ssh USER@HOST 'COMMAND'
Get the uptime of the remote server:
$ ssh firstname.lastname@example.org 'uptime'
Reboot the remote server:
$ ssh email@example.com 'reboot'
SSH: Run Multiple Remote CommandsIn the most cases it is not enough to send only one remote command over SSH.
Much more often it is required to send multiple commands on a remote server, for example, to collect some data for inventory and get back the result.
There are a lot of different ways of how it can be done, but i will show the most popular of them.
Run multiple command on a remote host over SSH:
$ ssh USER@HOST 'COMMAND1; COMMAND2; COMMAND3'
– or –
$ ssh USER@HOST 'COMMAND1 | COMMAND2 | COMMAND3'
– or –
$ ssh USER@HOST << EOF COMMAND1 COMMAND2 COMMAND3 EOF
Cool Tip: SSH login is too slow? This can be fixed easily! Get rid of delay during authentication! Read more →
Get the uptime and the disk usage:
$ ssh firstname.lastname@example.org 'uptime; df -h'
Get the memory usage and the load average:
$ ssh email@example.com 'free -m | cat /proc/loadavg'
Show the kernel version, number of CPUs and the total RAM:
$ ssh firstname.lastname@example.org << EOF uname -a lscpu | grep "^CPU(s)" grep -i memtotal /proc/meminfo EOF
SSH: Run Bash Script on Remote ServerThe equally common situation, when there is some Bash script on a Linux machine and it needs to connect from it over SSH to another Linux machine and run this script there.
The idea is to connect to a remote Linux server over SSH, let the script do the required operations and return back to local, without need not to upload this script to a remote server.
Certainly this can be done and moreover quite easily.
$ ssh USER@HOST 'bash -s' < SCRIPT
Cool Tip: Want to ROCK? Start a GUI (graphical) application on a remote Linux workstation over SSH! Read more →
Execute the local
script.sh on the remote server:
$ ssh email@example.com 'bash -s' < script.sh