tmux send-keys 确认 ssh 隧道已关闭(向远程主机发送多个命令后),然后再继续

tmux send-keys 确认 ssh 隧道已关闭(向远程主机发送多个命令后),然后再继续

这里有一个关于 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

相关内容