続行する前に、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