我想远程运行一个脚本。但是系统无法识别路径。它报错"没有这样的文件或目录"。我使用的方式正确吗?
ssh kev@server1 `./test/foo.sh`
你可以这样做:
ssh user@host 'bash -s' < /path/script.sh
ssh2
模块可以在 Node 中查看相同的解决方案:https://gist.github.com/mscdex/7c9f8358b8331ea567b7 - knownasilyacat /path/script.sh | ssh user@host 'bash -s'
。 - Claudiuecho 'printf "%s\n" $(hostname) "$@"' > script
并使用参数foo bar baz运行它:ssh user@host bash -s foo ba{r,z} < script
。 - ingydotnet反引号将在本地shell中运行命令,并将结果放在命令行上。你的意思是“执行./test/foo.sh,然后将输出传递给我仿佛我在这里在命令行上键入了它”。
尝试下面的命令,并确保那是从远程计算机的主目录到你的脚本的路径。
ssh kev@server1 './test/foo.sh'
此外,脚本必须存在于远程计算机上。这样做的本质是使用所列出的命令作为您的 shell 登录到远程计算机。您不能像这样在远程计算机上运行本地脚本(除非有某些我不知道的有趣技巧)。
如果您想在远程执行本地脚本而不保存该脚本,请按照以下步骤操作:
cat local_script.sh | ssh user@remotehost 'bash -'
对我而言,它起到了很好的作用。
即使是从Windows到Linux,只要在Windows计算机上安装了MSYS,我也能够做到。
我不知道是否可以直接运行它。
通常我会使用scp先复制它,然后登录运行。
scp foo.sh user@host:~
ssh user@host
./foo.sh
我能够使用以下命令调用一个shell脚本:
ssh ${serverhost} "./sh/checkScript.ksh"
checkScript.ksh
必须存在于 $HOME/sh
目录中。让用户"Kev"可以执行脚本,然后通过以下命令删除尝试运行它:sh kev@server1 /test/foo.sh
./test/foo.sh
文件位于本地还是远程服务器上? - Finesse