HowTo: Execute A Script On Remote UNIX / Linux Server

Posted on in Categories , , , , , , , last updated September 16, 2015

How do I execute a script on remote server called server2.example.com from my PC? How to run a shell/python/perl script on remote Unix-like systems?

You can use the ssh client which is a part of most *BSD/Linux/OS X/Linux distros/Unix-like oses. If you are on MS-Windows operating systems you need to download and use Putty client.

ssh command line syntax

The basic syntax is as follows:

ssh [email protected] /path/to/script
ssh [email protected] /path/to/script arg1 arg2 arg3

OR

ssh [email protected] /path/to/command
ssh [email protected] /path/to/command arg1 arg2

Examples

Open the Terminal. To run a script called /root/scripts/backup.sh on remote UNIX or Linux server called server1.cyberciti.biz, enter:

ssh root@server1.cyberciti.biz /root/scripts/backup.sh

You can pass command line arguments too:

ssh root@server1.cyberciti.biz /scripts/job.init --job=sync --type=aws --force=true

You can execute the date command as follows on remote server:

ssh user@server2.example.com date

You may need to specify full script path. In this example, run /root/backup.sh script as follows:

ssh user@server2.example.com /root/backup.sh

To avoid password prompt set password less ssh keys or use tool such as keychain – a manager for ssh-agent, typically run from ~/.bash_profile.

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

13 comment

  1. How to run these below at the same time. (Parallelly). Is it possible?
    by anyway is fine like (Perl/Python/shell)

    ssh [email protected] /root/scripts/backup.sh
    ssh [email protected] /root/scripts/backup.sh

    1. Put & at the end of the command as below. Ampersand will put the command in the background.
      ssh [email protected] /root/scripts/backup.sh &
      ssh [email protected] /root/scripts/backup.sh &

    2. Hi All,

      I have used following syntax to run a script in my remote system
      “ssh [email protected] /root/scripts/backup.sh ”
      There is a perl script inside my shell script, its failing to run while use the above syntax.
      i’m getting “No such file or directory” error at the line of perl script.

      Suggest the way forward..

      Thanks in advance

      1. Add the file path in your perl script or add a cd to change to the directory first. It may be trying to run the perl script from /root directory while the file is in /root/scripts directory.

  2. ssh requires remote login privileges accorded to a registered user on the server, as I understand it. Is this approach going to ask for login credentials, and how are those presented? My concern is
    having ssh login privileges along side ftp user login privileges, such as one would find on a remote
    web hosting service server for the web site administrator. Would I use this approach AFTER having logged into my account via ssh?

Leave a Comment