我试图找到UNIX或bash命令在连接到ssh服务器后运行命令。例如:
ssh name@ip "tmux list-sessions"
上面的代码可以工作,它列出了会话,但随后立即断开连接。把它放在服务器端的sshrc中工作,但我需要能够在客户端输入它。我希望能够运行一个命令,它登录,打开窗口,然后运行我设置的命令。我试过
[command] | ssh name@ip
ssh name@ip [command]
ssh name@ip "[command]"
ssh -t name@ip [command]
这不是您想要的,但我发现在类似的情况下它很有用。
我最近在$HOME/中添加了以下内容。Bashrc(类似的东西应该可以用于bash以外的shell):
if [ -f $HOME/.add-screen-to-history ] ; then
history -s 'screen -dr'
fi
我在一台特定的机器上保持一个屏幕会话运行,但我遇到了连接到该机器的ssh连接被删除的问题,每次重新连接时都需要重新运行screen -dr。
有了这个添加,并且在我的主目录中创建了这个(空)文件之后,当我的shell启动时,在我的历史记录中自动有screen -dr命令。重新连接后,我只需输入Control-P Enter,就可以回到屏幕会话中——或者我可以忽略它。它很灵活,但不是完全自动的,在您的情况下,它比键入tmux list-sessions更容易。
您可能希望将history -s命令设置为无条件的。
这需要更新$HOME/。Bashrc在每个目标系统上,这可能不适合也可能不适合您的目的。