我正在尝试使用 ssh 在远程系统上运行脚本,当我在终端上运行命令时,它执行得很好,但是当我将命令嵌入到 shell 脚本中时,它会返回错误。
命令1:
cmd="ssh root@IP \"python /pathtoscript\""
`$cmd` > log.log
对于上述命令,我尝试了堆栈交换中的以下建议:
cmd="ssh root@IP \"bash -c 'python /pathtoscript'"
cmd="ssh root@IP '/user/bin/python /pathtoscript'"
命令2:
ssh root@IP "ls -1v /path"
注意:所有这些命令都在终端上运行。
编辑:
如果我在终端上运行该命令,它会正常执行并显示输出。现在,如果将相同的命令添加到脚本 (.sh),我会看到以下错误:
bash: ssh root@IP 'python /pathtoscript' : No such file or directory
答案1
好吧,我自己不是专家,但这可能会有所帮助,
当您使用 ssh 命令时,您实际上输入了另一台机器“root@IP”,如您所提到的
当你在其他机器上时,如何在那里执行你的本地文件,首先你需要将你的文件发送到那里,然后只有你可以在那里执行它,
现在试试这个
#scp file_you_need_to_send 用户名@RemoteHost : 目标系统上的目标位置 这应该将您的脚本复制到目标系统上
#ssh 用户名@远程主机进入目标系统
然后执行您各自的脚本。
:P
答案2
ssh user@remotehost 'bash -s' < script.sh
从https://www.howtogeek.com/devops/how-to-run-a-local-shell-script-on-a-remote-ssh-server/