我想要通过 SSH 连接到远程机器,并且连接后想要运行一个命令导航到一个特定的文件夹。
我有一个 SSH 别名friday
,连接后我想导航到一个文件夹,例如 cd cdd2/workspace,然后运行命令 run webapp
但每当我尝试这个时,Alfred 都不会在同一个窗口中运行命令,而且它会失败。我还希望终端可见,这样我就可以检查是否有任何不可预见的错误。
目前我正在尝试使用 Aflred 终端窗口,但它不会等待 ssh 完成并立即运行,即使我尝试
friday ; cd cdd2/workspace ; run workflow
答案1
让我们看一下你的例子:
friday ; cd cdd2/workspace ; run workflow
无论 ssh 连接是否因错误退出,您都将在本地机器上运行以下命令:
这是因为您使用了命令分隔符;
。
您要做的是在您的远程机器上运行该命令,您可以通过在 ssh 命令后指定要运行的命令来执行此操作:
ssh -p 12345 someuser@somemachine "cd cdd2/workspace && run workflow"
在这种情况下,我们使用双“&”符号&&
作为命令分隔符,它将告诉你的(远程)shell 仅在第一个命令成功退出且没有任何错误时才运行第二个命令。
如果 ssh 连接中断,您可能需要使用以下命令screen
来防止软件退出:
ssh -p 12345 someuser@somemachine "cd cdd2/workspace && screen run workflow"
现在,如果连接中断,您可以简单地重新连接到服务器并ssh -p 12345 someuser@somemachine "screen -r"
重新连接到正在运行的屏幕会话,而不会丢失任何数据。