2016-07-09 29 views
1

Ich schrieb eine grundlegende Cisco erwarten Skript. Nach dem SSH-Verbindung mag ich Cisco Fehlerausgang erkennen, wenn ich eine Befehlszeile aus einer Datei, zum Beispiel an:Fehler in Cisco Expect-Skript

SPAIN#sow crypto isakmp sa 
    ^
% Invalid input detected at '^' marker. 

ich will „% ungültig“ fangen, in meiner Schleife und das Programm zu beenden.

foreach line $data { 
    expect "*#" 
    send "$line\r" 
    expect { 
     "% Invalid*" { send_user "\n Command [ $line ] Failed. \n"; exit 252 } 
    } 

ich diese Fehler in der Ausgabe:

SPAIN>enable 
Password: 
SPAIN#sow crypto isakmp sa 
^
% Invalid input detected at '^' marker. 

SPAIN#invalid command name "sow crypto isakmp sa" 
while executing 
"$line " 
invoked from within 
"expect { 
    "% Invalid*" { send_user "\n Command [ $line ] Failed. \n"; exit 252} 
}" 
("foreach" body line 4) 
invoked from within 
"foreach line $data { 
    expect "*#" 
    send "$line\r" 
    expect { 
     "% Invalid*" { send_user "\n Command [ $line ] Failed. \n"; exit 252} 
    } 
}" 

dank

Antwort

0

Das Problem ist, dass [] eine besondere Bedeutung in Tcl hat; um einen Befehl auszuführen und das Ergebnis zurückzugeben. diese

Wechsel:

expect { 
    "% Invalid*" { send_user "\n Command [ $line ] Failed. \n"; exit 252 } 
} 

An:

expect { 
    "% Invalid*" { send_user "\n Command \[ $line \] Failed. \n"; exit 252 } 
} 

Siehe Evaluation & Substitutions 3: Grouping arguments with [] im Tcl Handbuch für weitere Informationen.

+0

Danke für die Bearbeitung @DonalFellows. – Will