2017-07-27 33 views
0

因此,我有一個期望腳本發送到HPE虛擬連接模塊以運行show all命令。然而,當我在 「期待」 提示 「 - >」,即時得到一個錯誤:Linux期望在提示符中預期連字符

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) 

這裏是我的代碼:

#!/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" 

我曾嘗試使用期望 - 「 - > 「但那只是讓我接受提示然後去世。

這裏是提示的樣子:

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 

-> 

如果只是我一個希望「>」,它死在第一子命令文本。

任何想法如何讓這個工作?

謝謝! 喬

+0

怎麼逃脫它像'\ - >'? –

+0

試過了,它只是把我帶到提示。不發送所有節目。 – Joe

回答

1

的期望默認模式類型是水珠,並有一個明確的標誌爲:

expect -gl "-> " 

但是,您的模式沒有glob字符,所以你也可以使用確切的標誌:

expect -ex "-> " 
+0

這樣做了!非常感謝你的幫助!!!! – Joe

0

你可以做

expect -- "-> " 

或使用不帶連字符(非常混亂)開始的glob模式

expect {[-]> } 
+0

嗨有。謝謝!當我回到Mon工作時,我將不得不嘗試這個。我曾試着期望 - 「 - >」但是這只是讓我進入 - >提示符,等待命令......它沒有發送show all命令在下一行。 雖然我會嘗試一下glob模式,看看它是如何工作的。 謝謝! – Joe

+1

在開發expect腳本時,'expect -d script.exp'非常有用。 –

+0

感謝您的信息格倫! – Joe