这里有一个关于 tmux 使用 wait-for 和 LocalCommand 等待 SSH 连接建立后再继续的答案,但我需要一种方法让 tmux 等待 ssh 会话关闭(在使用发送密钥到远程主机之后)在多个命令中),然后继续。
LocalCommand 不执行此操作。
这是问题:
之后:
1. 打开新的 tmux 会话
2. 使用 send-keys 建立 ssh 隧道
3. 使用 send-keys 向远程主机发送多个命令
4. 使用 send-keys 关闭 ssh 隧道
如何确保 bash 等到终端准备好接收输入后再执行下一个 tmux send-keys 命令?
答案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