我想远程运行一个脚本。但系统无法识别路径。它抱怨“没有这样的文件或目录”。我用得对吗?
ssh kev@server1 `./test/foo.sh`
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
sh kev@server1 /test/foo.sh
我能够使用以下命令调用 shell 脚本:
ssh ${serverhost} "./sh/checkScript.ksh"
当然,checkScript.ksh必须存在于 $HOME/sh目录中。
checkScript.ksh
$HOME/sh
如果您想远程执行一个本地脚本,而不需要远程保存该脚本,您可以这样做:
cat local_script.sh | ssh user@remotehost 'bash -'
对我来说就像魔法一样。
我这样做,甚至从 Windows 到 Linux,因为你有 MSYS 安装在你的 Windows 计算机上。