2014-08-25 2 views
1

시스템에 텔넷 연결을 시도하고 해당 시스템에서 많은 명령을 실행하려고합니다. 그래서 나는이 expect 스크립트를 시도하고 있었다 :하나의 명령 만 예상대로 실행되었습니다.

#!/usr/bin/expect                

spawn telnet localhost 42000              
expect "login:"                 
send "root\r"                 
expect -re "-sh-4.1#"               
send "echo HELLO\r"                
expect -re "-sh-4.1#"               
send "echo WORLD\r" 

결국, 첫 번째 echo 명령 만 실행되고 텔넷 세션은 종료된다. telnet 또는 ssh 세션에 로그인 한 후 여러 명령을 실행할 수있는 몇 가지 예를 보았습니다.

그래서 내가하고있는이 스크립트에서 무엇이 잘못 되었습니까?

답변

2

다음 expect 문을 입력해야합니다. 그러면 expect 만 대기합니다.

당신은 단지 다음과 같이 한 번 더 라인을 추가 할 필요가

,

#!/usr/bin/expect                

spawn telnet localhost 42000              
expect "login:"                 
send "root\r"                 
expect -re "-sh-4.1#"               
send "echo HELLO\r"                
expect -re "-sh-4.1#"               
send "echo WORLD\r" 
expect -re "-sh-4.1#"               

이없이 우리는 expect로 양산 텔넷 세션을 발생하는 것은 단순히 하나를 보낼 필요가 있다고 가정합니다 무슨 놓치게되기 때문이다 문자열 값이며 세션에서 다른 것을 기대하지 않으므로 스크립트가 종료 된 이유가 더 이상없는 코드가 있으므로 텔넷 세션이 종료됩니다.

관련 문제