【问题标题】:Run bash script on remote server在远程服务器上运行 bash 脚本
【发布时间】:2019-09-19 17:40:50
【问题描述】:

我正在尝试在远程服务器上运行已在远程服务器上的 bash 脚本。我正在使用 ssh pass 来执行此操作,但我看到了错误

test.sh (resides on the remote server)

#!/usr/bin/env bash

echo "This is test"
adb start-server

sshpass 命令(我正在从 docker ubuntu 映像运行这个 sshpass 命令

sshpass -p password ssh -oStrictHostKeyChecking=no -oCheckHostIP=no user@host "bash -s" < /Users/user/Documents/workspace/test.sh

我也试过

sshpass -p password ssh -oStrictHostKeyChecking=no -oCheckHostIP=no user@host 'cd /Users/user/Documents/workspace/; sh test.sh'

我收到此错误消息

bash: /Users/user/Documents/workspace/test.sh: No such file or directory

【问题讨论】:

    标签: bash shell remote-server sshpass


    【解决方案1】:

    您展示的示例是针对本地脚本的,您说它是远程脚本。

    sshpass -p password ssh -oStrictHostKeyChecking=no -oCheckHostIP=no user@host "bash /path/to/test.sh"
    

    应该这样做。

    您可以尝试在远程计算机上找到您的 test.sh:

    sshpass -p password ssh -oStrictHostKeyChecking=no -oCheckHostIP=no user@host "find ~/ -name \"test.sh\""
    

    【讨论】:

    • 谢谢!我收到此错误。-------- 警告:将“raenug451.local”(ECDSA)永久添加到已知主机列表中。这是测试路径/to//test.sh: 第 4 行:adb: command not found-------- adb 安装在远程机器上。我想在那台远程机器上运行这个远程脚本。您提到的答案是否这样做。请帮忙!
    【解决方案2】:

    试试这里的文档:

    sshpass -p password ssh -oStrictHostKeyChecking=no -oCheckHostIP=no -T user@host <<EOF
    bash /Users/user/Documents/workspace/test.sh
    EOF
    

    如上所述,为ssh 命令包含-T 选项以禁用伪tty。

    [AT REMOTE MATCHINE] 确保adb 可执行文件的路径包含在PATH 环境变量中。否则,请在 Shell 脚本中使用绝对路径指定它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-28
      • 1970-01-01
      • 2011-06-30
      相关资源
      最近更新 更多