我必须在远程机器上运行本地shell脚本(windows/Linux)。
我在机器A和机器B上都配置了SSH。我的脚本在机器A上,它将在远程机器B上运行我的一些代码。
本地和远程计算机可以是基于Windows或Unix的系统。
是否有一种方法来运行这个使用plink/ssh?
我必须在远程机器上运行本地shell脚本(windows/Linux)。
我在机器A和机器B上都配置了SSH。我的脚本在机器A上,它将在远程机器B上运行我的一些代码。
本地和远程计算机可以是基于Windows或Unix的系统。
是否有一种方法来运行这个使用plink/ssh?
当前回答
我已经开始使用Fabric进行更复杂的操作。Fabric需要Python和一些其他依赖项,但仅在客户机上。服务器只需为ssh服务器即可。我发现这个工具比交付给SSH的shell脚本强大得多,并且非常值得费心设置(特别是如果您喜欢用Python编程)。Fabric处理在多个主机(或具有某些角色的主机)上运行的脚本,帮助促进幂等操作(例如向配置脚本添加一行,但如果已经有一行就不行),并允许构造更复杂的逻辑(例如Python语言可以提供的逻辑)。
其他回答
如果Machine A是一台Windows机器,您可以使用Plink (PuTTY的一部分)和-m参数,它将在远程服务器上执行本地脚本。
plink root@MachineB -m local_script.sh
如果Machine A是一个基于unix的系统,你可以使用:
ssh root@MachineB 'bash -s' < local_script.sh
您不应该必须将脚本复制到远程服务器才能运行它。
另外,如果想从目标主机获取变量,不要忘记转义变量。
这在过去曾让我陷入困境。
例如:
user@host> ssh user2@host2 "echo \$HOME"
输出/home/user2
而
user@host> ssh user2@host2 "echo $HOME"
打印出/home/user
另一个例子:
user@host> ssh user2@host2 "echo hello world | awk '{print \$1}'"
正确地输出“hello”。
我已经开始使用Fabric进行更复杂的操作。Fabric需要Python和一些其他依赖项,但仅在客户机上。服务器只需为ssh服务器即可。我发现这个工具比交付给SSH的shell脚本强大得多,并且非常值得费心设置(特别是如果您喜欢用Python编程)。Fabric处理在多个主机(或具有某些角色的主机)上运行的脚本,帮助促进幂等操作(例如向配置脚本添加一行,但如果已经有一行就不行),并允许构造更复杂的逻辑(例如Python语言可以提供的逻辑)。
cat ./script.sh | ssh <user>@<host>
chmod +x script.sh
ssh -i key-file root@111.222.3.444 < ./script.sh