开发者

Execute remote python script via SSH

I want to execute a Python script on 开发者_JAVA技巧several (15+) remote machine using SSH. After invoking the script/command I need to disconnect ssh session and keep the processes running in background for as long as they are required to.

I have used Paramiko and PySSH in past so have no problems using them again. Only thing I need to know is how to disconnect a ssh session in python (since normally local script would wait for each remote machine to complete processing before moving on).


This might work, or something similar:

ssh user@remote.host nohup python scriptname.py &

Basically, have a look at the nohup command.


On Linux machines, you can run the script with 'at'.

echo "python scriptname.py" ¦ at now


If you are going to perform repetitive tasks on many hosts, like for example deploying software and running setup scripts, you should consider using something like Fabric

Fabric is a Python (2.5 or higher) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks.

It provides a basic suite of operations for executing local or remote shell commands (normally or via sudo) and uploading/downloading files, as well as auxiliary functionality such as prompting the running user for input, or aborting execution.

Typical use involves creating a Python module containing one or more functions, then executing them via the fab command-line tool.


You can even use tmux in this scenario.

As per the tmux documentation:

tmux is a terminal multiplexer. It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminal. And do a lot more

From a tmux session, you can run a script, quit the terminal, log in again and check back as it keeps the session until the server restart.

How to configure tmux on a cloud server

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜