rpm -qa grep httpd
我有一个自动化工具,可以生成并执行在目标主机 10.9.100.67 上触发的以下命令。
ssh -vvv -o StrictHostKeyChecking=no -o 'IdentityFile="/app/ssh_keys/id_rsa"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="root"' -o ConnectTimeout=10 -o StrictHostKeyChecking=no -o ConnectTimeout=8 10.9.100.67 'rpm -qa | grep httpd'
注意:上面的 ssh 连接命令工作正常,我能够成功从 10.9.50.20(源)连接到目标主机 10.9.100.67
问题出在服务器 10.9.100.67 上。如果我们登录到 10.9.100.67 服务器并启动它,它 rpm -qa | grep httpd
就会挂起,甚至Ctrl+C
在我的 putty shell 上也没有帮助。没有其他选择,只能终止 Putty 会话。
这篇文章的要求不是解决rpm -qa | grep httpd
10.9.100.67 上的挂起问题;但我需要的是,ssh
如果命令在 5 分钟内未响应失败或成功,则我需要在 10.9.50.20 上关闭与目标 10.9.100.67 的连接。
我什至尝试了命令超时选项,但 ssh 控制没有返回源。
ssh -vvv -o StrictHostKeyChecking=no -o 'IdentityFile="/app/ssh_keys/id_rsa"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="root"' -o ConnectTimeout=10 -o StrictHostKeyChecking=no -o ConnectTimeout=8 10.9.100.67 'timeout 5s rpm -qa | grep httpd'
注意:-o ConnectTimeout=10
没有帮助,ssh 永远不会从 10.9.100.67 返回到 10.9.50.20,这正是我们想要的。
以下命令来自 stackoverflow 帮助,但不适用于 AiX 系统,因为 pkill 不存在。
ssh 10.9.100.67 '( sleep 60 && kill -9 0 ) 2>/dev/null & rpm -qa | grep httpd; RC=$? ; sleep 1 ; pkill -P $! ; exit $RC'
您能提供同样适用于 AIX 的解决方案吗?
答案1
如果您只想rpm -qa | grep httpd
在远程主机上运行,还有一个替代解决方案,有一个工具sshpass
。您可以参考此链接进行安装和常用使用。
https://www.howtoing.com/sshpass-non-interactive-ssh-login-shell-script-ssh-password/