程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了SSH 连接到多台机器并运行多个命令大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决SSH 连接到多台机器并运行多个命令?

开发过程中遇到SSH 连接到多台机器并运行多个命令的问题如何解决?下面主要结合日常开发的经验,给出你关于SSH 连接到多台机器并运行多个命令的解决方法建议,希望对你解决SSH 连接到多台机器并运行多个命令有所启发或帮助;

编写脚本ssh到多台机器并运行多个命令。但是,一旦 ssh 成功,我就可以在没有执行单个命令的情况下从每个主机获得以下信息,for 循环工作正常,我能够成功 ssh 进入所有机器。

连接被主机端口 22 关闭

如果我在 ssh 中排除 -tt 标志,我也会得到,

伪终端不会被分配,因为 stdin 不是终端。

如何让以下脚本在机器上成功执行。

下面是我正在使用的脚本

@H_419_12@for vm_ip in "${vm_ip_arraY[@]}" do ssh -tt -i {$key_pair} {$usernamE}@${vm_ip} << HERE [do multiple stuff here like update packages and other maintainence stuff (sudo commands)] exit HERE done

附加信息:我也运行了一些导出语句,这会导致问题吗?

是否建议将多个命令作为单个机器上的脚本?不过,以这种方式更新脚本是一场噩梦。

解决方法

也许这是一个逃避问题。如果未引用该词,则 HERE 文档会进行参数扩展。

那就试试吧:

ssh -tt -i {$key_pair} {$usernamE}@${vm_ip} << 'HERE'
#                                              ^    ^
,

尝试使用 sHellcheck for debugging

例如,它会告诉你:

{$keypair}: This { is literal. check expression (missing ;/\n?) or quote it.

换句话说,我会使用${key_pair},而不是{$key_pair}

#! /bin/bash
for vm_ip in "${vm_ip_arraY[@]}"
do

ssh -tt -i "${key_pair}" "{$usernamE}@${vm_ip}" << HERE

[do multiple stuff here like update packages and other maintainence stuff (sudo commands)]

exit

HERE

done

大佬总结

以上是大佬教程为你收集整理的SSH 连接到多台机器并运行多个命令全部内容,希望文章能够帮你解决SSH 连接到多台机器并运行多个命令所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。