2017-07-27 5 views
0

So habe ich ein Expect-Skript, das an ein virtuelles HPE-Verbindungsmodul ausgeht, um einen Befehl show all auszuführen. Allerdings, wenn ich "Erwartung" die Aufforderung bin "->", Im erhalte eine Fehlermeldung:Linux erwarten einen Bindestrich in der Eingabeaufforderung

bad flag "-> ": must be -glob, -regexp, -exact, -notransfer, -nocase, -i, -indices, -iread, -timestamp, -timeout, -nobrace, or -- 
while executing 
"expect "-> "" 
(file "./expect_vc_showall.ziUzpF" line 10) 

Hier ist mein Code:

#!/usr/bin/expect -f 
set timeout 60 
set ip_hostname [lindex $argv 0]; 
#log_user 0 
spawn ssh [email protected]$ip_hostname 
expect { 
    "*yes/no*" { send "yes\r"; exp_continue } 
    "*assword:" { send "password123\r" } 
    } 
expect "-> " 
send "show all\r" 
#log_user 1 
expect "-> " 
send "exit\r" 

Ich habe versucht, erwarten zu verwenden - „-> "Aber das bringt mich nur zur Aufforderung und stirbt dann.

Hier ist, was die Eingabeaufforderung wie folgt aussieht:

Last login: Thu Jul 27 17:09:28 2017 from 172.16.100.78 
------------------------------------------------------------------------------- 
HP Virtual Connect Management CLI v4.41 
Build: 4.41-6 (r315367) Mar 5 2015 13:59:31 
(C) Copyright 2006-2015 Hewlett-Packard Development Company, L.P. 
All Rights Reserved 
------------------------------------------------------------------------------- 


GETTING STARTED: 

help   : Displays a list of available subcommands 
exit   : Quits the command shell 
<subcommand> ? : Displays a list of managed elements for a subcommand 
<subcommand> <managed element> ? : Displays detailed help for a command 

-> 

Wenn ich nur nicht erwarten, „>“, es auf den ersten subcommand Text stirbt.

Irgendwelche Ideen, wie man das zur Arbeit bringt?

Danke! Joe

+0

Wie wäre es mit Flucht wie '\ ->'? –

+0

Versuchte auch das und es bringt mich nur zur Aufforderung. Schickt die Show nicht alle. – Joe

Antwort

1

Der Standardmustertyp für erwarten ist ein Klacks starten, und es gibt eine explizite Flagge dafür:

expect -gl "-> " 

Allerdings hat Ihr Muster keine Glob-Zeichen, also Sie könnten auch die genaue Flagge verwenden:

expect -ex "-> " 
+0

Das hat es geschafft! Vielen Dank für die Hilfe !!!! – Joe

0

Sie können

tun
expect -- "-> " 

oder ein glob Muster verwenden, die mit einem Bindestrich (viel unordentlichen)

nicht
expect {[-]> } 
+0

Hallo dort. Vielen Dank! Ich werde es versuchen müssen, wenn ich am Montag wieder zur Arbeit komme. Ich habe versucht, zu erwarten - "->", aber das brachte mich nur in die -> Eingabeaufforderung auf einen Befehl warten ... Es hat nicht die Show alle Befehl in der nächsten Zeile gesendet. Ich werde das Glob-Muster versuchen und sehen, wie das funktioniert. Danke! – Joe

+1

Bei der Entwicklung eines Expect-Skripts ist 'expect -d script.exp' sehr nützlich. –

+0

Danke für die Info Glenn! – Joe

Verwandte Themen