2016-07-19 15 views
1

Ich bin mit Ubuntu 14.04 und installiert erwarten. Ich versuche, ein Skript zu schreiben, um das Passwort einzugeben, wenn es dazu aufgefordert wird.
Code aktualisiert:Verwendung erwarten, um ein Passwort eingeben, wenn sudo in Skript

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

    set pw odroid 
    spawn sudo apt-get update 

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

    close 

Irgendwelche Vorschläge? thx

UPDATE Fehler:

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 } 

Antwort

1

Sie haben zu viele Zitate. Wählen Sie eines der folgenden:

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

Klar, dass die erste Option ist besser.

Viele Escapes sind notwendig, weil 1) eckige Klammern in einem glob-Muster speziell sind, und 2) eckige Klammern sind spezielle Tcl-Syntax (Befehlsersetzung) in Anführungszeichen, aber nicht in geschweiften Klammern.

+0

Hallo Glenn, ich habe mich verändert wie du gesagt hast und diese Probleme behoben. aber immer noch nicht funktionieren. Ich füge neue Ausgabe in meinem Problem hinzu. bitte gib mir ein paar Vorschläge. thx – crazymumu

+0

Haben Sie sich die Debug-Ausgabe angesehen? Das Muster stimmte überein und das Passwort wurde gesendet. Was auch immer das Problem ist, es ist nicht das, was Sie uns gezeigt haben. –

+0

aber die aktualisierten Informationen sind die Ausgabe, die ich habe. Wie kann ich das Problem anzeigen, das ich neben "-d" im Skript habe. Danke – crazymumu