Bash tmux新窗口ssh到远程主机,然后执行命令并保持登录

Bash tmux新窗口ssh到远程主机,然后执行命令并保持登录,bash,ssh,tmux,new-window,stay-logged-in,Bash,Ssh,Tmux,New Window,Stay Logged In,我在跳转框上使用tmux。我正在尝试自动化某些常见场景。我怎样才能做到以下几点 创建新窗口 ssh到远程主机 在远程主机上执行一些命令(例如:cd和点斜杠) 保持登录状态 我可以用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

我在跳转框上使用tmux。我正在尝试自动化某些常见场景。我怎样才能做到以下几点

  • 创建新窗口
  • ssh到远程主机
  • 在远程主机上执行一些命令(例如:cd和点斜杠)
  • 保持登录状态
  • 我可以用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'
    
    到远程主机的ssh会话未保持打开状态。虽然新窗口确实如此,但我在跳转框上的一个提示下返回


    那么,我错过了什么?如何使会话保持打开状态?

    我认为问题在于使用
    ssh
    命令

    manssh
    中的
    AUTHENTICATION
    部分的末尾开始:

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

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

    作为一种解决方法,请尝试使用
    tmux发送键
    通知窗口登录,然后执行脚本:

    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
      是返回键
    我注意到在我回答这个问题的时候,这个问题已经有两个月了。你已经解决这个问题了吗?如果是的话,你是怎么做的

    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