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」が呼び出されないことを確認します。