SSHコマンドの指示を見る

SSHコマンドの指示を見る

ssh接続されたサーバーを離れずにコマンドが成功したかどうかを表示する必要があります。

私は次のコマンドを使用します。

ssh -q  user1@server1 "echo 2>&1" && echo SSH_OK || echo SSH_NOK

このコマンドの問題は、接続サーバーにとどまらないことです。sshコマンドの後にテストを追加したくなく、これまでに行ったことをコマンドで実行したいと思います。

ここでの仕組みの例は次のとおりです。

[nir@dhcppc4 ~]$ ssh -q  user1@server1 "echo 2>&1" && echo SSH_OK || echo SSH_NOK
SSH_NOK
[nir@dhcppc4 ~]$ hostname
dhcppc4
[nir@dhcppc4 ~]$ ssh -q  user1@server2 "echo 2>&1" && echo SSH_OK || echo SSH_NOK
SSH_OK
[nir@dhcppc4 ~]$ hostname
dhcppc4

私が望むものの例は次のとおりです。

[nir@dhcppc4 ~]$ ssh -q  user1@server1 "echo 2>&1" && echo SSH_OK || echo SSH_NOK
SSH_NOK
[nir@dhcppc4 ~]$ hostname
dhcppc4
[nir@dhcppc4 ~]$ ssh -q  user1@server2 "echo 2>&1" && echo SSH_OK || echo SSH_NOK
SSH_OK
[nir@server2 ~]$ hostname
server2

ベストアンサー1

「SSH_OK」を出力する必要があります。リモートサーバーからそしてlocalhostの「SSH_NOK」:

ssh -t -q $host 'echo '"$host"'SSH_OK; exec $SHELL' || echo "$host: SSH_NOK"

しかし、私は現在使用中のコンピュータを示すプロンプトを設定するようにJohnの提案に固執します。これは実際にあなたの質問で提案したものです。追加の印刷が本当に役に立つかどうかをもう一度考えてみたいかもしれません。

また、正確に達成することが何であるかを詳細に説明したいかもしれません。より良い方法があるかもしれません。たとえば、出力が解析され、エラーで終わる可能性があるが出力で検出できるスクリプトを実行する場合は、スクリプトの実行true後(またはスクリプトの前に実行された最後のコマンドとして)それを追加する必要があります。セッションが正常に終了し(つまり、終了ステータスが0)、「echo SSH_NOK」が呼び出されないことを確認します。

おすすめ記事