実行可能な一部のホストでシェルプロンプトが表示されるのを待つことができます(例:bashスクリプトでは?)、準備ができたらssh user@host echo "test";
ログインしてecho "test"を実行します。しかし、毎回発生しないようです。ホストで作業します。続行する前に待つか、#
メッセージ$
が表示されるのを待ちますecho "test"
。どうすればいいですか?
これを行うのを待ってからssh user@host
手動#
で実行すると、echo "test"
期待どおりに機能します。これをスクリプトにどのように入れますか?ssh user@host -t echo "test"
いいえ。
私は具体的に同様の仕事を試しました。ssh -o StrictHostKeyChecking=no -p 2222 user@host -t tail -f /var/log/MyFile.log
つまり、ホストのログファイルを追跡してログファイルを追跡するのではなく、ローカルシェルに結果を表示しましたが、プロンプトが表示されました。
No entry for terminal type "screen";
using dumb terminal settings.
#
-->
メッセージを無視してくださいroot
。これはこのスレッドの一部ではありません。はい、通常の端末(xterm)でスクリーンセッション内で実行されますNo entry for terminal type "xterm";
(例:)。
-t
私がそれを取得できない場合は、ローカルFATAL: not a terminal
シェルに戻ります。
ベストアンサー1
最後の手段として「expect」プログラムを使用できます。
以下は、SSHでExpectを使用する方法の簡単な例です。https://www.journaldev.com/1405/expect-script-ssh-example-tutorial