2016-07-19 153 views
1

我使用Ubuntu 14.04的需要須藤並安裝期望輸入密碼。我正在嘗試編寫腳本以在提示時輸入密碼。
更新的代碼:使用期望當腳本

#!/usr/bin/expect -d 
    set timeout 20 

    set pw odroid 
    spawn sudo apt-get update 

    expect {\[sudo]\ password for odroid: } 
    send "$pw\r" 

    close 

有什麼建議? THX

更新錯誤:

expect: does "" (spawn_id exp4) match glob pattern "\[sudo]\ password for odroid: "? no 
[sudo] password for odroid: 
expect: does "[sudo] password for odroid: " (spawn_id exp4) match glob pattern "\[sudo]\ password for odroid: "? yes 
expect: set expect_out(0,string) "[sudo] password for odroid: " 
expect: set expect_out(spawn_id) "exp4" 
expect: set expect_out(buffer) "[sudo] password for odroid: " 
send: sending "odroid\r" to { exp4 } 

回答

1

你有太多的報價。選擇其中一個:

expect {\[sudo\] password for odroid: } 
expect "\\\[sudo\\\] password for odroid: " 

顯然,第一種方法更好。因爲1)的方括號處於glob模式特殊的,和2)的方括號是特殊的Tcl語法(在雙引號命令替換),但不是在大括號

大量逸出的是必要的。

+0

嗨格倫,我改變你說的和固定的這個問題。但仍然不起作用。我在我的問題中添加了新的輸出。請給我一些建議。 thx – crazymumu

+0

你看過那個調試輸出嗎?模式確實匹配並且密碼已發送。無論問題是什麼,它都不在你向我們展示的內容中。 –

+0

但更新的信息是我的輸出。除了在腳本中包含'-d'外,我怎樣才能顯示我遇到的問題。謝謝 – crazymumu