在远程服务器上运行bash脚本

时间:2019-09-18 17:44:25

标签: bash shell remote-server sshpass

我正在尝试在远程服务器上已经存在的远程服务器上运行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

2 个答案:

答案 0 :(得分:0)

您显示的示例是针对本地脚本的,您说这是一个远程脚本。

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\""

答案 1 :(得分:0)

尝试此处文档:

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

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

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