我想远程运行脚本。但系统无法识别路径。它抱怨“没有这样的文件或目录”。我用它了吗?
ssh kev@server1 `./test/foo.sh`
答案 0 :(得分:139)
你可以这样做:
ssh user@host 'bash -s' < /path/script.sh
答案 1 :(得分:43)
Backticks将在本地shell上运行该命令并将结果放在命令行上。你所说的是'执行./test/foo.sh然后传递输出,就好像我在命令行上输入它一样'。
尝试以下命令,并确保从远程计算机上的主目录到脚本的路径。
ssh kev@server1 './test/foo.sh'
此外,脚本必须位于远程计算机上。这样做本质上是以列出的命令作为shell登录到远程计算机。你不能在这样的远程计算机上运行本地脚本(除非有一些我不知道的有趣技巧)。
答案 2 :(得分:4)
如果要远程执行本地脚本而不远程保存该脚本,可以这样做:
cat local_script.sh | ssh user@remotehost 'bash -'
它对我来说就像一个魅力。
考虑到您的Windows计算机上安装了MSYS,我甚至可以从Windows到Linux。
答案 3 :(得分:1)
我不知道是否可以像这样运行它。
我通常首先使用scp复制它,然后登录以运行它。
scp foo.sh user@host:~
ssh user@host
./foo.sh
答案 4 :(得分:0)
让用户“Kev”使脚本可执行,然后删除通过命令运行的尝试
sh kev@server1 /test/foo.sh
答案 5 :(得分:0)
我可以使用以下命令调用shell脚本:
ssh ${serverhost} "./sh/checkScript.ksh"
当然,checkScript.ksh
目录中必须存在$HOME/sh
。