Bash 什么';运行脚本时通过ssh发送多个命令的最佳方式是什么?

Bash 什么';运行脚本时通过ssh发送多个命令的最佳方式是什么?,bash,ssh,Bash,Ssh,我正在编写一个脚本,它偶尔会通过ssh向另一台机器发送命令。目前,我只是调用这个函数,它为它发送的每个命令打开一个新的shell,如下所示: #!/bin/bash port='22' user='user' host='hostname' send_ssh() { ssh -oBatchMode=yes -oConnectTimeout=5 -p "$1" -tq "$2"@"$3" "$4"

我正在编写一个脚本,它偶尔会通过ssh向另一台机器发送命令。目前,我只是调用这个函数,它为它发送的每个命令打开一个新的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\u ssh

send_ssh() {
    ssh -o ControlMaster=auto -o ControlPersist=10 -oBatchMode=yes -oConnectTimeout=5 -p "$1" -tq "$2"@"$3" "$4" || exit 1
}

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

我认为在ControlPersist设置为0的情况下将ControlPath设置为谨慎。无论ControlPersist的值是多少,这可能是一个好主意。
ssh -o exit -p "$1" "$2@$3"