我在host1
,我希望shell脚本shell1.sh
在另一台主机shell2.sh
中执行另一个shell脚本host2
。需要ssh相同。对不起,我对这个脚本来说并不陌生
所以:
host1$ sh shell1.sh ----ssh----> host2$ shell2.sh
答案 0 :(得分:2)
在shell1.sh
上:
#!/bin/sh
ssh host2 '/bin/sh /path/to/shell2.sh'
并且,如果shell2.sh
文件不在host2
上:
#!/bin/sh
ssh host2 < /path/to/shell2.sh
在第一个替代方案中,您将向ssh
传递第二个参数,它将其解释为在远程计算机上执行的命令。
来自man ssh
:
如果指定了命令,则会在远程主机而不是登录shell上执行。
在第二个脚本上,shell2.sh
上的命令通过stdin传递给ssh
命令,然后stdin将它们转发到host2
的shell,最后执行它们。
答案 1 :(得分:1)
你可以这样做:
local.sh :
#!/bin/bash
hostname
whoami
ifconfig
然后,使用本地脚本,您可以远程运行它:
ssh host < local.sh
远程主机的STDIN
shell将与本地shell脚本连接。