运行ssh并立即执行命令
这个问题在这里已经有了答案:
ssh -t 'command; bash -l'
将执行该命令,然后在完成时启动登录shell。
如果启用PermitLocalCommand
选项,则可以使用LocalCommand
命令行选项:
ssh用户名@主机名-o LocalCommand =“tmux list-sessions”
有关可用选项的更多详细信息,请参见ssh_config
手册页。
这不是你想要的,但我发现它在类似情况下很有用。
我最近添加了以下内容到我的$HOME/.bashrc
(与bash以外的其他shell类似):
if [ -f $HOME/.add-screen-to-history ] ; then
history -s 'screen -dr'
fi
我在一台特定的机器上保持一个screen
会话运行,并且遇到与该机器的ssh
连接出现问题,因此每次重新连接时都需要重新运行screen -dr
。
有了这个补充,并且在我的主目录中创建了这个(空的)文件之后,当我的shell启动时,我会自动在我的历史记录中screen -dr
命令。 重新连接后,我可以输入Control-P Enter,然后回到屏幕会话中 - 或者我可以忽略它。 它很灵活,但不是很自动,在你的情况下比输入tmux list-sessions
更容易。
您可能希望无条件地创建history -s
命令。
这确实需要更新每个目标系统上的$HOME/.bashrc
,这可能会或可能不会使其不适合您的目的。
上一篇: Run ssh and immediately execute command
下一篇: rsync: how can I configure it to create target directory on server?