我想使用 tmuxsend-keys
来当我登录远程服务器时运行一系列命令
在链接的答案中,使用了单个命令。我发现我可以放置一系列它们,但我从来没有成功运行过两个以上的它们。是否可以在它们之间引入暂停(因为我假设问题是 tmux 在远程主机响应之前执行它们之一)?
这些命令将跨越登录用户的更改,到目前为止这还不是问题,但这就是我不能简单地在我运行的服务器上拥有脚本的原因之一。 (tmux 不关心我是否更改用户,但脚本无法做到这一点然后继续运行。)
那么我怎样才能超越 2 个命令呢?
我怀疑它是否相关,但我在本地运行 zsh 并在服务器上运行 bash。
答案1
我也不完全理解这个问题,但是预计可能会帮助你。它可以将输入发送到交互式会话并解析响应,从而避免手动延迟等待登录、命令完成等情况。
答案2
只需在 tmux 命令之间进行“睡眠”......
tmux send-keys -t 1 "echo -n hello " Enter
sleep 5
tmux send-keys -t 1 "echo world" Enter
然而,等待的通常原因是因为在继续之前需要发生一些事情 - 依赖固定的时间间隔并不是好的工程。expect
正如@FazJaxton 建议的那样,使用正确的脚本会更安全。