2012-06-21 9 views
0

나는 원격 기계에 연결하여 출력을주는 명령 (priorietery)을 실행하는 시나리오가 있습니다. 나는 정확한 패턴을 검사하고있다. 만약 성공했다면, 위 명령에 의해 생성 된 파일을 열어야한다.if 문을 사용하여 논리 확인하기

나는 내가 TCL과 기대 사용하고 있습니다 및 코드가

#!/home/pub/bin/expect -f 
spawn telnet 172.16.67.213 23 
expect "login name:" 
send "administrator\r" 
expect "password:" 
send "[email protected]\r" 
expect "Windows NT Domain:" 
send "\r"  
expect "C:\WINNT\Profiles\Administrator>" 
send "\r" 
expect "C:\WINNT\Profiles\Administrator>" 
send "x -j Y -a run -d\r" 
sleep 60 
expect "ZZ" 

****if {[string match *Z* $expect_out(buffer)]} { 
     send "dir";} else { 
    puts "Script failed"; 
    }**** 
다음

스크립트 문자열 일치까지 실행하고 아래에 언급 된의 specififed 디렉토리로 이동하고 파일을 열고 같은 구문을 분석 할 필요가 다음 명령이 성공하면 "dir"이 실행되지 않습니다.

아래와 같이 논리를 바꾸면 echo 명령문이 표시되지만 성공하지 못한 경우 다른 명령을 실행하고 싶다면 instaed를 실행하십시오.

**if {[string match *Z* $expect_out(buffer)]} { 
     puts "Script passed";} else { 
    puts "Script failed"; 
    }** 

나는 문제가 분명하다 희망 나는 모든 방법을 시도하지만 .. 사전에

감사합니다, Kamesh을 성공하고 있지 않다.

답변

0

명령을 해고 줄 바꿈과 함께 dir 보내기 :

send "dir\n" 

명령은 이제 기대 이후의 경기까지 (표준 출력 스크립트에 의해 인쇄)가 실행됩니다하지만 출력은 볼 수 없습니다. 스크립트를 즉시 비우려면 다음을 사용하십시오 : set timeout 1; expect; expect *.

관련 문제