스크립트에서 오류가 발생할 것으로 예상됩니다.

스크립트에서 오류가 발생할 것으로 예상됩니다.

원격 컴퓨터에서 ./bin/show_info.py스크립트를 실행하고 로컬 컴퓨터에서 출력을 얻으려면 Expect를 사용하여 스크립트를 만들었습니다.

아래 명령을 실행하면 제대로 작동하지만 스크립트에 동일한 명령이 언급되면 오류가 발생합니다.

ssh IPaddress "./bin/show_info.py |  grep  total -A2 | grep -v ^+ | grep -v ^-  | sed 's/total.*//g'" > Report_2017.txt

스크립트 오류

[root@centseven ~]# ./directconnect
spawn echo -e > Report_2017.txt
extra characters after close-quote
    while executing
"spawn sh -c "ssh IPaddress "./bin/show_info.py | grep total -A2 | grep -v ^+ | grep -v ^- | sed 's/total.*//g'" > Report_2017.tx..."
    (file "./directconnect" line 6)

문서 내용

#!/usr/bin/env expect
set timeout 5

spawn echo -e > Report_2017.txt

spawn sh -c "ssh IPaddress "./bin/show_info.py | grep total -A2 | grep -v ^+ | grep -v ^- | sed 's/total.*//g'" > Report_2017.txt"
expect "Enter passphrase for key '/root/.ssh/id_rsa':"
send "12345\r"
expect "Enter passphrase for key '/root/.ssh/id_rsa':"
send "12345\r"
expect "Enter passphrase for key '/root/.ssh/id_rsa':"
send "12345\r"
expect "Password:"
send "54321\r"
interact

답변1

큰 따옴표는 귀하의 경우 스크립트에 문제가 있습니다 expect.

spawn sh -c "ssh IPaddress "./bin/show_info.py |.. sed 's/total.*//g'" > Report_2017.txt"

IP 주소 뒤의 큰따옴표로 인해 파이프가 노출된다는 점을 관찰하세요.

다음을 시도해 볼 수도 있습니다.

spawn sh -c "ssh IPaddress \"./bin/show_info.py |.. sed 's/total.*//g'\" > Report_2017.txt"

관련 정보