运行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 ,这可能会使得它不适合你的目的。