【问题标题】:How to run a script file remotely using SSH如何使用 SSH 远程运行脚本文件
【发布时间】:2010-11-05 17:02:33
【问题描述】:

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

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

【问题讨论】:

标签: scripting ssh


【解决方案1】:

你可以这样做:

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

【讨论】:

  • 只是链接如何在 Perl 中执行此操作以供参考:stackoverflow.com/questions/18236988/…
  • 很好的解决方案!通过节点的ssh2 模块查看相同的解决方案:gist.github.com/mscdex/7c9f8358b8331ea567b7
  • 这个答案比接受的答案好得多,并且准确地回答了问题,而接受的答案却没有。
  • 或者:cat /path/script.sh | ssh user@host 'bash -s'
  • 使用 args 运行的示例。创建一个示例脚本:echo 'printf "%s\n" $(hostname) "$@"' &gt; script 并使用参数 foo bar baz 运行它:ssh user@host bash -s foo ba{r,z} &lt; script。
【解决方案2】:

Backticks 将在本地 shell 上运行命令并将结果放在命令行上。你说的是'执行 ./test/foo.sh 然后传递输出,就好像我在这里的命令行上键入它一样'。

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

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

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

【讨论】:

  • 这是一个有趣的技巧,取自wpkg.org/Executing_local_programs_and_scripts_remotely: cat /usr/bin/program | ssh user@server "cat > /tmp/program ; chmod 755 /tmp/program ; /tmp/program --arguments"
  • 是的,我认为这样的事情是可能的,但你并没有真正执行本地程序,你只是以一种不必要的复杂方式复制它。如果你要这样做,你可以这样做 scp /path/to/script.sh user@server: && ssh user@server ./script.sh 我猜你必须以这种方式输入两次密码,所以嗯。
  • @psanf 您可以随时设置基于证书的登录,因此您不必输入密码。
【解决方案3】:

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

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

它对我来说就像一个魅力。

鉴于您在 Windows 计算机上安装了 MSYS,我什至从 Windows 到 Linux 都这样做。

【讨论】:

  • 如何将参数传递给local_script.sh?
  • @dima.rus 传递本地或远程参数?它可以通过环境变量来完成,只需将它们与您的值放在 bash 之前 -
【解决方案4】:

不知道能不能这样运行。

我一般是先用scp复制,然后登录运行。

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

【讨论】:

    【解决方案5】:

    使脚本可由用户执行“Kev”,然后通过命令删除try it running sh kev@server1 /test/foo.sh

    【讨论】:

      【解决方案6】:

      我能够使用这个命令调用一个 shell 脚本:

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

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

      【讨论】:

        猜你喜欢
        • 2018-09-09
        • 2018-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-17
        相关资源
        最近更新 更多