![](/img/trans.png)
[英]Is it possible to send multiple commands to vagrant ssh via a shell script?
[英]What's the best way to send multiple commands via ssh whilst running a script?
我正在制作一个偶尔通过 ssh 向另一台机器发送命令的脚本。 目前,我只是调用这个 function 为它发送的每个命令打开一个新的 shell,如下所示:
#!/bin/bash
port='22'
user='user'
host='hostname'
send_ssh() {
ssh -oBatchMode=yes -oConnectTimeout=5 -p "$1" -tq "$2"@"$3" "$4" || exit 1
}
send_ssh "$port" "$user" "$host" true
# it worked so do some stuff locally blah blah
send_ssh "$port" "$user" "$host" anothercommand
# rest of script
我已经研究过在后台保持隧道打开和/或使用控制套接字,这样我就可以加快速度,而不必为每个命令打开新连接,但无法确定在这种情况下是否值得这样做。
设置一个控制套接字非常简单,我认为这是绝对值得做的,即使只调用了send_ssh
。
send_ssh() {
ssh -o ControlMaster=auto -o ControlPersist=10 -oBatchMode=yes -oConnectTimeout=5 -p "$1" -tq "$2"@"$3" "$4" || exit 1
}
ControlMaster=auto
表示如果可用,将使用现有连接,否则将为您打开一个。
设置ControlPersist=10
表示与远程主机的连接将在客户端存在后保持打开 10 秒,您可以根据需要进行调整。 您可以将其设置为0
或yes
以使其永久打开,在这种情况下,您需要确保类似
ssh -o exit -p "$1" "$2@$3"
在脚本退出以关闭主连接之前执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.