ターゲットサーバーのコマンドが返されないようにSSH接続を強制的に閉じる方法

ターゲットサーバーのコマンドが返されないようにSSH接続を強制的に閉じる方法

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セッションを終了する以外に他のオプションはありません。

この投稿の要件は、10.9.100.67の中断の問題を解決するものではありませんrpm -qa | grep httpd。ただし、必要なのは、sshコマンドが失敗した場合、または5分以内に応答せずに成功した場合は、10.9のターゲット10.9.100.67への接続を閉じる必要があることです。 50.20。

コマンドタイムアウトオプションも試しましたが、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ヘルプから取得したものですが、pkillが存在しないため、AiXシステムでは機能しません。

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.tecmint.com/sshpass-non-interactive-ssh-login-shell-script-ssh-password/

関連情報