서버로 ssh를 보내고 sudo su를 보낸 다음 iptables 상태를 확인하고 출력을 서버의 로그 파일에 저장하는 expect 스크립트를 작성하려고합니다. 아래는 스크립트입니다.스크립트가 ssh에 잘못된 명령 이름을 반환 할 것을 기대합니다.
1 #!/usr/bin/expect
2 exp_internal 1
3 log_user 0
4 set timeout 10
5 set password "******"
6
7 spawn /usr/bin/ssh -l subhasish *.*.*.* -p 10022
8
9 expect {
10 -re "password: " {send "$password\r"}
11 -re "$ " {send "sudo su\r"}
12 -re "[sudo] password for subhasish:" {send "$password\r"}
13 -re "# " {send "service iptables status\r"}
14 }
15 set output $expect_out(buffer)
16 send "exit\r"
17 puts "$output\r\n" >> output.log
그러나 디버그 모드에서 실행되는 동안 오류가 발생합니다.
expect -d testcase
expect version 5.44.1.15
argv[0] = expect argv[1] = -d argv[2] = testcase
set argc 0
set argv0 "testcase"
set argv ""
executing commands from command file testcase
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {24105}
invalid command name "sudo"
while executing
"sudo"
invoked from within
"expect {
-re "password: " {send "$password\r"}
-re "$ " {send "sudo su\r"}
-re "[sudo] password for subhasish:" {send "$password\r"}
..."
(file "testcase" line 9)
어디서 잘못 될지 잘 모르겠습니다. 그것은 잘못된 명령 이름 "sudo"를 말하고, 나는 기대하지 않기 때문에 이것이라고 생각합니다.이 명령을 이해하지 못합니다. 어떻게 돌아 다니 느냐. 도와주세요. 감사.
나는 sudo su가 "subhasish를위한 암호 :"를 기대하고 또한 당신이 언급 한 방법을 바꾸었다. 아래 업데이트 된 코드를 사용하여 #!/usr/bin/expect -f #!/빈/bash는 설정된 제한 시간 60 LOG_USER 1 설정 호스트 *. *. *. * 암호 설정 ****** 산란 ssh를 -p 10022 $ 사용자의 경우 output.txt 세트 사용자 청년 Subhasish 세트의 로그 파일 @ $ 호스트 기대 "* assword : *" 전송 - "$ 암호 \ r에" LOG_USER 1 은 "$" 전송 기대 - "sudo는 스와 \ r에"를 는 "암호 청년 Subhasish에 대해"기대 전송 - - "$ password \ r" "#" send - "서비스 iptables 상태 \ r" log_file /home/subhasish/output.log expect "#" log_file send - "exit \ r"; send - "exit \ r"; exit 0 –
수동 로깅은 다음과 같습니다. [root @ localhost subhasish] # ssh -p 10022 [email protected]*.*.*.* [email protected]*.*.*.* 암호 : 마지막 로그인 : Mon Apr 29 07:19:52 2013 *. *. *에서.* [청년 Subhasish의 @의 testhost ~] $ sudo를 쓰 [sudo는] 청년 Subhasish 암호 : [루트 @의 testhost의 청년 Subhasish가] # –
디버그 스크립트가가에 갇히지 보여줍니다 예상 : 기대 : 않습니다 "\ 연구 \ n 마지막 로그인 : 월 Apr 29 07:35:36 2013 *. *. *. * \ r \ r \ n \ u001b] 0; subhasish @ testhost : ~ \ u0007 "(spawn_id exp4) 일치하는 글로브 패턴"subhasish의 비밀번호 : "?expect : "\ r \ n 지난 로그인 : Mon Apr 29 07:35:36 2013 *. *. *. * \ r \ r \ n \ u001b] 0; subhasish @ testhost : ~ \ u0007 \ u001b [? 1034h [subhasish @ testhost ~] $ "(spawn_id exp4) 일치하는 glob 패턴"subhasish의 암호 : "? no –