TMUX 新窗口 SSH 到远程主机,然后执行命令并保持登录状态



我在跳转盒上使用tmux。我正在尝试自动执行某些常见方案。我该如何执行以下操作?

  1. 创建新窗口
  2. SSH 到远程主机
  3. 在远程主机上执行一些命令(即:cd 和点斜杠)
  4. 保持登录状态

我可以用 ssh 做到这一点:

ssh -t root@2.158.0.10 "cd ~adarias/duncans/ServiceAgent/tests; bash -l -c 'mocha config_tests.js'; bash -l"

但不适用于 TMUX 新窗口:

tmux new-window -t mosdev -d -n 'debug & test' 'ssh -T root@2.158.0.10 < .mosdev/scripts/test_config.sh; bash -l'

我将 shell 命令放在一个单独的文件中,因为我在使用嵌套引号时遇到问题,我不知道如何解决。

.mosdev/scripts/test_config.sh:

#!/bin/bash
cd ~adarias/duncans/ServiceAgent/tests; bash -l -c 'mocha config_tests.js'; bash -l

与远程主机的 ssh 会话不会保持打开状态。尽管新窗口确实如此,但我会在跳转框的提示下被放回。

那么,我在这里错过了什么?如何让该会话保持打开状态?

我认为

问题是使用ssh命令。

man ssh AUTHENTICATION部分的末尾:

当远程计算机上的命令或 shell 退出并且所有 X11 和 TCP 连接都已关闭时,会话将终止。

所以我认为你所看到的是ssh的预期行为。

作为解决方法,请尝试使用 tmux send-keys 告诉窗口登录,然后执行脚本:

tmux new-window -a -d -t mosdev -n debug-test
tmux send-keys -t mosdev:debug-test "ssh root@2.158.0.10" C-m
tmux send-keys -t mosdev:debug-test "cd ~adarias/duncans/ServiceAgent/tests; mocha config_tests.js" C-m

几点注意事项:

  • 我将窗口名称更改为没有空格的名称。
  • C-m是返回键。

注意到在我回答这个问题时已经有两个月了。你已经解决了这个问题吗?如果是这样,你是怎么做到的?

相关内容

  • 没有找到相关文章

最新更新