运行ssh并立即执行命令
我试图findUNIX或bash命令连接到ssh服务器后运行一个命令。 例如:
ssh name@ip "tmux list-sessions"
上面的代码工作,它列出了会议,但它立即断开连接。 把它放在服务器端的sshrc上,但我需要能够在客户端input。 我希望能够运行命令,login,打开窗口,然后运行我设置的命令。 我试过了
[command] | ssh name@ip ssh name@ip [command] ssh name@ip "[command]" ssh -t name@ip [command]
ssh -t 'command; bash -l'
将执行该命令,然后在完成时启动loginshell。
如果启用PermitLocalCommand
选项,则可以使用LocalCommand
命令行选项:
ssh用户名@主机名-o LocalCommand =“tmux list-sessions”
有关可用选项的更多详细信息,请参见ssh_config
手册页。
这不是你正在寻找的东西,但我发现它在类似情况下很有用。
我最近添加了下面的内容到我的$HOME/.bashrc
(类似的应该是可能的贝壳除外):
if [ -f $HOME/.add-screen-to-history ] ; then history -s 'screen -dr' fi
我在一台特定的机器上保持一个screen
会话运行,而且我的ssh
连接screen -dr
台被丢弃的机器出了问题,每当我重新连接时都要求我重新运行screen -dr
。
随着增加,并在我的主目录中创build(空)的文件后,我的shell启动时,我自动有我的历史中的screen -dr
命令。 重新连接后,我可以inputControl-P Enter,然后回到屏幕会话中,或者我可以忽略它。 它是灵活的,但不是很自动,在你的情况下比inputtmux list-sessions
更容易。
您可能希望无条件地创buildhistory -s
命令。
这确实需要在每个目标系统上更新$HOME/.bashrc
,这可能会使得它不适合你的目的。