원격 컴퓨터에는 로컬 컴퓨터에서 실행하고 출력을 얻으려는 스크립트가 하나 있는데 ./bin/show_info.py
, 이를 위해 예상대로 스크립트를 만들었습니다.
아래 명령을 실행하면 제대로 작동하지만 스크립트에 동일한 내용이 언급되면 오류가 발생합니다.
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"
IPaddress 다음에 끝나는 큰따옴표로 인해 파이프가 노출된 채로 남아 있다는 점을 관찰하십시오.
다음을 시도해 보세요.
spawn sh -c "ssh IPaddress \"./bin/show_info.py |.. sed 's/total.*//g'\" > Report_2017.txt"