繁体   English   中英

在运行脚本时通过 ssh 发送多个命令的最佳方法是什么?

[英]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 秒,您可以根据需要进行调整。 您可以将其设置为0yes以使其永久打开,在这种情况下,您需要确保类似

ssh -o exit -p "$1" "$2@$3"

在脚本退出以关闭主连接之前执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM