我正在尝试在远程服务器上已经存在的远程服务器上运行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
答案 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脚本中用绝对路径指定它。