【发布时间】:2010-11-05 17:02:33
【问题描述】:
我想远程运行一个脚本。但系统无法识别路径。它抱怨“没有这样的文件或目录”。我用对了吗?
ssh kev@server1 `./test/foo.sh`
【问题讨论】:
-
./test/foo.sh文件是在本地还是远程服务器上?
我想远程运行一个脚本。但系统无法识别路径。它抱怨“没有这样的文件或目录”。我用对了吗?
ssh kev@server1 `./test/foo.sh`
【问题讨论】:
./test/foo.sh文件是在本地还是远程服务器上?
你可以这样做:
ssh user@host 'bash -s' < /path/script.sh
【讨论】:
ssh2 模块查看相同的解决方案:gist.github.com/mscdex/7c9f8358b8331ea567b7
cat /path/script.sh | ssh user@host 'bash -s'
echo 'printf "%s\n" $(hostname) "$@"' > script 并使用参数 foo bar baz 运行它:ssh user@host bash -s foo ba{r,z} < script。
Backticks 将在本地 shell 上运行命令并将结果放在命令行上。你说的是'执行 ./test/foo.sh 然后传递输出,就好像我在这里的命令行上键入它一样'。
尝试以下命令,并确保这是从远程计算机上的主目录到脚本的路径。
ssh kev@server1 './test/foo.sh'
此外,脚本必须位于远程计算机上。这实际上是使用列出的命令作为 shell 将您登录到远程计算机。你不能像这样在远程计算机上运行本地脚本(除非有一些我不知道的有趣技巧)。
【讨论】:
如果您想远程执行本地脚本而不远程保存该脚本,您可以这样做:
cat local_script.sh | ssh user@remotehost 'bash -'
它对我来说就像一个魅力。
鉴于您在 Windows 计算机上安装了 MSYS,我什至从 Windows 到 Linux 都这样做。
【讨论】:
不知道能不能这样运行。
我一般是先用scp复制,然后登录运行。
scp foo.sh user@host:~
ssh user@host
./foo.sh
【讨论】:
使脚本可由用户执行“Kev”,然后通过命令删除try it running
sh kev@server1 /test/foo.sh
【讨论】:
我能够使用这个命令调用一个 shell 脚本:
ssh ${serverhost} "./sh/checkScript.ksh"
当然,checkScript.ksh 必须存在于$HOME/sh 目录中。
【讨论】: