如何使用 SSH 远程运行脚本文件

我想远程运行一个脚本。但系统无法识别路径。它抱怨“没有这样的文件或目录”。我用得对吗?

ssh kev@server1 `./test/foo.sh`
187892 次浏览

Backticks 将在本地 shell 上运行该命令,并将结果放在命令行上。你的意思是“执行”。/test/foo.sh,然后传递输出,就像我在这里的命令行中输入的一样。

尝试以下命令,并确保这是从远程计算机上的主目录到脚本的路径。

ssh kev@server1 './test/foo.sh'

而且,脚本必须在远程计算机上。它所做的实际上是使用列出的命令作为 shell 将您登录到远程计算机。您不能在这样的远程计算机上运行本地脚本(除非有一些我不知道的有趣的技巧)。

我不知道能不能像那样运行。

我通常首先用 scp 复制它,然后登录运行它。

scp foo.sh user@host:~
ssh user@host
./foo.sh

你可以这样做:

ssh user@host 'bash -s' < /path/script.sh

使用户 小凯可以执行脚本,然后删除通过命令运行的 try sh kev@server1 /test/foo.sh

我能够使用以下命令调用 shell 脚本:

ssh ${serverhost} "./sh/checkScript.ksh"

当然,checkScript.ksh必须存在于 $HOME/sh目录中。

如果您想远程执行一个本地脚本,而不需要远程保存该脚本,您可以这样做:

cat local_script.sh | ssh user@remotehost 'bash -'

对我来说就像魔法一样。

我这样做,甚至从 Windows 到 Linux,因为你有 MSYS 安装在你的 Windows 计算机上。