Say*_*nRC 13 performance scripting ssh
我正在尝试在脚本中执行这些操作。我必须在远程主机上运行一些命令。目前,我正在这样做:
ssh root@host 'bash -s' < command1
ssh root@host 'bash -s' < command2
ssh root@host 'bash -s' < command3
Run Code Online (Sandbox Code Playgroud)
但是,这意味着我必须反复连接到服务器,这会增加处理命令之间的大量时间。我正在寻找这样的东西:
varSession=$(ssh root@host 'bash -s')
varSeesion < command1
varSeesion < command2
varSeesion < command3
Run Code Online (Sandbox Code Playgroud)
同样,我需要通过脚本运行这些命令。我已经看过了,screen但我不确定它是否可以在脚本中使用。
mur*_*uru 29
您可以使用ControlMasterandControlPersist来允许在命令终止后保持连接:
与 结合使用时
ControlMaster,指定主连接应在初始客户端连接关闭后在后台保持打开状态(等待未来的客户端连接)。如果设置为no,则主连接不会被置于后台,并且会在初始客户端连接关闭后立即关闭。如果设置为yes或0,则主连接将无限期地保留在后台(直到通过诸如“ssh -O exit”之类的机制被杀死或关闭)。如果设置为以秒为单位的时间,或 中记录的任何格式的时间sshd_config(5),则后台主连接将在指定时间保持空闲(没有客户端连接)后自动终止。
因此,第一个 SSH 命令将为连接设置一个控制文件,另外两个命令将通过该控制文件重用该连接。你~/.ssh/config应该有类似的东西:
Host host
User root
ControlMaster auto
ControlPath /tmp/ssh-control-%C
ControlPersist 30 # or some safe timeout
Run Code Online (Sandbox Code Playgroud)
并且您的脚本不需要任何其他更改。
小智 7
您可以从StackOverflow 上的类似问题中获得提示,并使用 bash Here 文档:
ssh root@host 'bash -s' << EOF
command1
command2
command3
EOF
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2873 次 |
| 最近记录: |