Bash:如何远程运行脚本

我有一个脚本(比如说run.py ),我想把它传给远程机器(比如说10.1.100.100 ),cd到远程机器的一个目录中,然后在那个目录下执行run.py

如何将上述过程封装在一个bash脚本中? 我不知道如何让bash在另一台机器上远程执行命令。

希望我能在terminal看到run.py标准输出。 但是,如果我只能redirect它,那也不错。

 chmod +x ./run.py scp -pq ./run.py 10.1.100.100:'/home/myremotedirectory/run.py' ssh 10.1.100.100 'cd /somedirectory && /home/myremotedirectory/run.py' 

看看是否有帮助

你可以这样做:

 ssh -l yourid 10.1.100.100 << DONE cd /your/dir/ ./run.py DONE 

以上已经被编辑了,我不记得原来是什么样子,如果我想在一个单一的连接,我会这样做。

 ssh -l yourid 10.1.100.100 python < <( echo "import os" echo "os.chdir('/yourdir')" echo "print(os.getcwd())" cat yourscript.py ) 

如何通过SSH运行本地脚本

概要:

通过SSH执行脚本而不复制脚本文件。 你需要一个简单的SSH连接和一个本地脚本。

码:

 #!/bin/sh print_usage() { echo -e "`basename $0` ssh_connexion local_script" echo -e "Remote executes local_script on ssh server" echo -e "For convinient use, use ssh public key for remote connexion" exit 0 } [ $# -eq "2" ] && [ $1 != "-h" ] && [ $1 != "--help" ] || print_usage INTERPRETER=$(head -n 1 $2 | sed -e 's/#!//') cat $2 | grep -v "#" | ssh -t $1 $INTERPRETER 

例子:

  - ssh-remote-exec root@server1 myLocalScript.sh #for Bash - ssh-remote-exec root@server1 myLocalScript.py #for Python - ssh-remote-exec root@server1 myLocalScript.pl #for Perl - ssh-remote-exec root@server1 myLocalScript.rb #for Ruby 

一步一步的解释

这个脚本执行这个操作:1°捕获第一行#! (即:Perl,Python,Ruby,Bash解释器),2°通过SSH启动远程攻击者,3°通过SSH发送所有脚本主体。

本地脚本:

本地脚本必须以#!/ path / to / interpreter开头

 - #!/bin/sh for Bash script - #!/usr/bin/perl for Perl script - #!/usr/bin/python for Python script - #!/usr/bin/ruby for Ruby script 

该脚本不是基于本地脚本扩展,而是基于#! 信息。

请记住,这不是一个规则,你必须cd到所请求的目录。

一旦访问远程机器,只需输入该文件的相对路径,而不使用cd:

 /some_folder/./run.py