リモートホストには複数のスクリプトがあり、以下のようにsshを使用してローカルホストでこれらのスクリプトをトリガーします。
ssh remuser@remhost sh /web/bin/stop.sh
今週末にOSパッチイベントがありましたが、上記のsshコマンドは返されず、停止したり入力を待っているように感じます。
オペレーティングシステムにどのパッチが適用されたかについての詳細な情報を取得することは困難です。
stop.shの詳細は次のとおりです。
cat stop.sh
exec /usr/bin/java -jar /web/service.jar -DLOG_PATH=/web/logs --server.address=10.23.41.211 --server.port=10500 --spring.profiles.active=dev >> /web/logs/boot.log
exit 0;
まず、このフォーラムの解決策を試しましたが、返されませんでした。
ssh remuser@remhost 'sh /web/bin/stop.sh my.jar dev &> /dev/null < /dev/null'
停止して返されないときのデバッグ出力ssh -vv
は次のとおりです。
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0
debug2: channel 0: rcvd eow
debug2: channel 0: chan_shutdown_read (i0 o0 sock -1 wfd 4 efd 6 [write])
debug2: channel 0: input open -> closed
その後、次のことを試みてsshが戻り始めましたが、リモートホストでスクリプトを実行できませんでした。
ssh -fN remuser@remhost sh /web/bin/stop.sh my.jar dev
注:ssh remuser@remhost id
返され、正常に動作します。他のスクリプトもうまく動作します。
問題は、発信者のホスト<or <<
に制御を返すスクリプトにのみあります。> or >>
何か提案してもらえますか?
注:スクリプトをデバッグする理由はありません。すべてのスクリプトが異なり、一部は非常に単純なので、問題の原因ではありません。
答え1
以下は問題を解決するのに役立ち、ターゲットホストでスクリプトが実行されたときに制御が再開されました。
ssh -f -n remuser@remhost 'sh -c /web/bin/stop.sh my.jar dev'