cmdを実行する前にプロンプ​​トが表示されるのを待つ方法は?

cmdを実行する前にプロンプ​​トが表示されるのを待つ方法は?

実行可能な一部のホストでシェルプロンプトが表示されるのを待つことができます(例: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

おすすめ記事