2012-07-04 2 views
1

직렬 연결 (RS232)을 통해 Cisco Access Point에 로그인하고 IP 주소를 제공하는 TCL/TK 앱을 끝내기가 아주 가깝습니다. 첫 번째는TCL/Expect Scripting - 조건문을 사용하여 보조 로그인 암호를 시도하십시오.

이 잘못된 암호를 세 번 입력 할 때 시스코 CLI는 직렬 연결로 작동하는 방법이다

(사용자 실패하지 않는 경우

그러나) 아주 기본적인, 나는 보조 암호를 시도하는 내 스크립트를 싶습니다 이름이 필요하며 암호 만 묻는 메시지가 표시됩니다)

Password: 
Password: 
Password: 
% Bad secrets 

"Cisco"의 기본 암호가 작동하지 않는 경우에도 "Cisco2"의 보조 암호를 시도하는 스크립트가 필요합니다.

다음은이 문제에 대한 최근의 실패한 시도입니다.

expect "*>" {send "en\r"} 

    expect { 
    "Password:" {send "Cisco\r"; exp_continue} 
    "Password:" {send "Cisco2\r"; exp_continue} 
    } 

    expect "*#" {send "config t\r"} 

미리 도움을 청하십시오.

set passwords {"Cisco" "Cisco2"} 
set idx 0 
expect "*>" 
send "en\r" 
expect { 
    "Password:" { 
     send "[lindex $passwords $idx]\r" 
     incr idx 
     exp_continue; # Continue to wait for the "after" prompt 
    } 
    "*#" {send "config t\r"} 
} 

트릭은 당신이 또한expect 당신이 '돈 때문에, 이후에 오는 것은해야한다는 것입니다 :

답변

1

가장 간단한 방법은 단계별하는 시도 암호의 목록을 가지고있다 타임 아웃이나 그런 일을 다시하지 마라. (음, 시간 제한을 원하지 않는다고 가정 할 경우, 바로 앞두고 가십시오!) expect모두 일치 문구 을 동시에 대기하므로입니다. 버그가있는 코드에는 동일한 일치 텍스트가있는 두 개의 절이 있으므로 항상 첫 번째 점을 선택했습니다 (IIRC, 현재 점에서 여러 절이 일치하면 첫 번째 가능한 점포가 선택됨).

관련 문제