ssh를 사용하여 원격 시스템에서 스크립트를 실행하려고 합니다. 터미널에서 명령을 실행하면 정상적으로 실행되지만 명령을 쉘 스크립트에 포함하면 오류가 반환됩니다.
명령 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 username@RemoteHost : 대상 시스템의 대상 위치 그러면 스크립트가 대상 시스템에 복사됩니다.
#ssh 사용자 이름@remotehost대상 시스템 입력
그런 다음 해당 스크립트를 실행하십시오.
:피
답변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/