Ich schreibe mein erstes expect-Skript, um einen gvfs-mount auszuführen. Ich möchte, dass das Expect-Skript die Eingabeaufforderungen bis "Passwort:" beantwortet, erlaube mir, das Passwort einzugeben, und gehe dann zurück zum nicht-interaktiven Modus, um zu beenden.Wie kann ich "erwarten", den interaktiven Modus ein- und auszuschalten?
Ich möchte dieses Skript von autoexpect erzeugt ändern und etwas von mir entpersönlichte:
#!/usr/bin/expect -f
set timeout -1
spawn gvfs-mount {smb://[email protected]/my-userid$}
match_max 100000
expect -exact "Password required for share my-userid\$ on 10.253.x.y\r\nDomain \[WORKGROUP\]: "
send -- "my-domain\r"
expect -exact "my-domain\r\nPassword: "
send -- "my-password\r"
expect eof
Gerade -exact Wechsel in der zweiten Sende auf -i legt das gesamte Skript in einem Zustand, wo es für mich wartet, Geben Sie die Domäne ein, lesen Sie jedoch nicht die Tastatur oder "Senden". Ich spekuliere, dass gvfs-mount in einem Hintergrundprozess erzeugt wurde, der nicht an die Vordergrund-stdin gebunden ist.
Wie kann ich die Interaktivität einiger "erwartet" umschalten?
Danke.
Sie möchten wahrscheinlich "stty -echo", bevor Sie den Benutzer das Passwort eingeben (und dann natürlich "stty echo" hinterher) –
@glennjackman guten Fang. Vielen Dank – resmon6