tmux send-keysは、続行する前にSSHトンネルが閉じられていることを確認します(リモートホストに複数のコマンドを送信した後)。

tmux send-keysは、続行する前にSSHトンネルが閉じられていることを確認します(リモートホストに複数のコマンドを送信した後)。

続行する前に、SSH接続が確立されるのを待つために待機とLocalCommandを使用するtmuxに対する回答がありますが、tmuxにSSHセッションが閉じるまで待つ方法が必要です(リモートホストにキー送信を使用した後)。複数のコマンドで)を押して続行します。

LocalCommandはこれを行いません。

問題は次のとおりです。

以降:
1.新しいtmuxセッションを開く
2. send-keysを使用したSSHトンネルの設定
3. send-keysを使用してリモートホストに複数のコマンドを送信する
4. send-keysを使用してSSHトンネルを閉じる

次のtmux send-keysコマンドを実行する前に、端末が入力を受け取る準備ができるまでbashが待機していることをどのように確認できますか?

答え1

ついに問題を解決した方法:

rm ~/sesh.lock 2> /dev/null    # in case of previous failure
tmux new-session -d -s sesh
tmux send-keys -t sesh "ssh prod-srv-1" Enter
tmux send-keys -t sesh "cd /srv/www/api/bin" Enter
tmux send-keys -t sesh "echo api stop > ~/api_log.txt" Enter
tmux send-keys -t sesh exit Enter

while [ ! -e ~/sesh.lock ]
do
    tmux send-keys -t sesh "touch ~/sesh.lock" Enter
    sleep 0.1
done
tmux send-keys -t sesh "rm ~/sesh.lock 2> /dev/null" Enter 

tmux kill-session -t sesh

関連情報