Bash tmux新窗口ssh到远程主机,然后执行命令并保持登录
我在跳转框上使用tmux。我正在尝试自动化某些常见场景。我怎样才能做到以下几点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
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