SSH를 통해 원격 호스트에서 로컬(비쉘) 스크립트를 실행하는 방법은 무엇입니까?

SSH를 통해 원격 호스트에서 로컬(비쉘) 스크립트를 실행하는 방법은 무엇입니까?

cat someFile | ssh someHostsomeFile이 있을 때 어떻게 작동하게 할 수 있나요?아니요배쉬 스크립트? 원격으로 실행하고 싶습니다.진주하지만 cat | ssh 명령을 사용하려고 하면 bash 스크립트에서 구문 오류가 많이 발생합니다.

답변1

SSH 연결을 통해 Perl 스크립트를 푸시하려면 원격 측에서 Perl 해석기를 실행해야 합니다. 표준 입력에서 스크립트를 읽습니다.

ssh remotehost perl < somescript.pl

Perl의 경우 -T입력에서 명령줄 스위치(hashbang 줄 제외)까지 읽어야 합니다.

Perl 인터프리터에 명령줄 인수를 제공하려는 경우 해당 인수를 명령줄 끝에 추가할 수 있습니다 perl. 당신이 원한다면스크립트, stdin에서 스크립트를 읽도록 인터프리터에게 명시적으로 지시해야 합니다(그렇지 않으면 찾을 파일 이름으로 첫 번째 인수를 사용합니다).

-l통역사와 foo스크립트 는 다음과 같습니다 bar.

echo 'print "> $_"  foreach @ARGV' | ssh remotehost perl -l - foo bar 

이 작업은 ssh somehost < script.sh스크립트와 호환되는 원격 로그인 셸에만 의존한다는 점에 유의하세요. (즉, 원격 쉘이 다른 쉘인 경우 Bash 스크립트는 작동하지 않습니다.)

답변2

ssh someHost기본 쉘을 실행하고 표준 입력에서 읽은 명령을 실행합니다. 내용을 표준 입력으로 보내기 때문에 someFile논리적으로 someFile의 내용을 실행하려고 시도합니다.

someFile에 무엇이 포함되어야 하는지 알려주지 않으셨습니다. 해당 내용이 Perl 스크립트에 입력되어야 한다고 가정하면 다음과 같이 해야 합니다.

cat someFile | ssh someHost your_perl_script

또는 더 나은:

ssh someHost your_perl_script < someFile

답변3

=>의 경우

원격 파일에 로컬 출력을 씁니다.방금 $myhost에 Apache를 설치했습니다. 이제 테스트해 보고 싶습니다.

테스트 문자열을 파일에 에코할 수 있습니다. 이번에는 파일이 원격 htdocs 루트에 있습니다.

echo "작동합니다" |[이메일 보호됨]'고양이>> /usr/local/apache/htdocs/it_works.html'

less 또는 cat을 사용하여 원격 파일을 엽니다. 고양이와 함께:

SSH[이메일 보호됨]"cat/usr/local/apache/htdocs/it_works.html"

더 적은:

SSH[이메일 보호됨]"적은 /usr/local/apache/htdocs/it_works.html"

Grep 원격 파일:

튜브 포함:

SSH[이메일 보호됨]"cat /usr/local/apache/htdocs/it_works.html" | grep "유효함"

원격으로 grep하십시오.

SSH[이메일 보호됨]"grep works/usr/local/apache/htdocs/it_works.html"

원격 로그를 보려면 tail을 사용하십시오.

이 방법으로 Apache 서버의 액세스 상태를 실시간으로 관찰할 수 있습니다.

SSH[이메일 보호됨]"Tail -f /etc/httpd/logfiles/access_log"

이 답변의 출처는여기.

관련 정보