2016-07-19 8 views
1

私はUbuntu 14.04を使用していて、インストールされています。私はプロンプトが表示されたらパスワードを入力するスクリプトを書こうとしています。
コードの更新:スクリプトでsudoが必要なときにパスワードを入力するようにしてください。

#!/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)角括弧はグロブパターン内で特殊であり、2)角括弧は二重引用符で囲まれた特殊なTcl構文(コマンド置換)ですが、中括弧ではないため、多くのエスケープが必要です。

+0

こんにちはグレン、私はあなたが言ったように変更し、この問題は修正されました。それでも動作しません。私は私の問題に新しい出力を追加します。私にいくつかの提案をお願いします。 thx – crazymumu

+0

そのデバッグ出力を見ましたか?パターンが一致し、パスワードが送信されました。問題が何であれ、それはあなたが私たちに示したものではありません。 –

+0

しかし、更新された情報は私が持っている出力です。スクリプトに '-d'を含めた以外の問題をどのように表示できますか?どうも – crazymumu

関連する問題