쉘 스크립트 내에서 expect를 사용하여 몇 가지 시스템 (test.txt 파일에서 읽음)으로 ssh를 시도하고 각각에 명령을 실행하려고합니다. 스크립트가 "invalid command name"오류를 반환합니다. 나는 세트를 사용하고 있으며 잘못된 방식으로 여기에 기대합니까?쉘 스크립트에서 set과 expect를 사용하여
#!/usr/bin/expect -f
set username "root"
set pass "mypassword"
set fd [open /home/test.txt r]
set host [read $fd]
foreach line $host {
ssh -o StrictHostKeyChecking=no -n [email protected]$host 'ls; pwd'
expect "User:" { send "${username}\r" }
expect "root's Password:" { send "${pass}\r" }
expect eof
}
오류는 오류 메시지에서 알 수 있듯이, 명령 구분자로 ;
분석 기대하고 pwd'
를 처리 할 수
./expect.sh
spawn ssh -o StrictHostKeyChecking=no -n [email protected]
10.1.1.2
'ls
invalid command name "pwd'"
while executing
"pwd' "
("foreach" body line 3)
invoked from within
"foreach line $host {
감사합니다. 내가 큰 따옴표로 시도하고 오류가 더 이상 발생하지 않습니다 .. 그러나 스크립트는 여전히 비밀 번호를 묻는 메시지가 나타납니다 .. 반환 된 출력은 아래와 같습니다. - 생성 ssh -o StrictHostKeyChecking = no -n [email protected] 10.1.1.2 ls; pwd 경고 : 알려진 호스트 목록에 '10 .1.1.1 10.1.1.2 '(RSA)이 추가되었습니다. [email protected] 10.1.1.2 – user3331975