LC.expect.*¶
Mit LC.expect
können Programme ausgeführt und „ferngesteuert“ werden. Die Ausgabe des aufgerufenen Programmes wird ausgelesen, und bei Erkennung von bestimmten Mustern Funktionen ausgeführt.
Ein häufiger Anwendungsfall ist der Aufruf eines Programmes zum Ändern von Passwörtern: es muss auf eine bestimmte Eingabeaufforderung gewartet werden (z.B. „Enter new password:“), und anschließend das neue Passwort gesendet werden.
LC.expect
arbeitet objekt- und eventorientiert. Zuerst wird ein LC.expect
-Objekt erstellt, dann mit spawn()
das gewünschte Programm ausgeführt, und mit expect()
und send()
auf Ausgaben gewartet bzw. Daten gesendet.
-
LC.expect.
new
(command)¶ -
- Rückgabe
-
neues
LC.expect
-Objekt
Erstellt ein neues
LC.expect
-Objekt.
-
LC.expect.
expect
(list, timeout)¶ -
- Parameter
-
-
list (String) – Muster nach denen in der Ausgabe gesucht werden sollen
-
timeout (Number) – Zeit nach der die Ausführung des Programmes abgebrochen wird
-
Wartet auf die in
list
angegebenen Muster, bricht nach maximaltimeout
Sekunden ab.Die Liste ist ein Array mit aus
match
- undaction
-Einträgen bestehenden Tabellen. Inmatch
ist jeweils ein regulärer Ausdruck angegeben, auf den die empfangene Programmausgabe überprüft wird, undaction
ist eine Funktion, die bei einem Treffer jeweils aufgerufen wird.Die Handler-Funktion (
action
) bekommt als Parameter ein Array mit allen im regulären Ausdruck erkannten Mustern. Der erste Eintrag enthält das vollständige erkannte Muster, alle weiteren Einträge eventuelle Suchausdrücke.
-
LC.expect.
log
(enable)¶ -
- Parameter
-
-
enable (Boolean) – Status protokollieren
-
Detailliertes Protokoll aktivieren/deaktivieren
-
LC.expect.
logfile
(filename)¶ -
- Parameter
-
-
filename (String) – Name der Protokolldatei
-
Datei für Protokollausgabe festlegen
-
LC.expect.
send
(string)¶ -
- Parameter
-
-
string (String) – Zu sendende Zeichenkette
-
Sendet die in
string
angegebenen Daten an das laufende Programm.
-
LC.expect.
spawn
(program, args)¶ -
- Parameter
-
-
program (String) – auszuführendes Programm
-
args (Array) – Parameter
-
Führe das Programm
program
mit den im Arrayargs
angegebenen Parametern aus.
Example
e = LC.expect.new()
successful = false
e:log(true)
e:logfile("expect_test.log")
-- change password for user 'johndoe'
e:spawn("/usr/bin/passwd", { "johndoe" } )
function send_password(m)
-- send new password (with '\n' at the end!)
e:send("PaSsWoRd\n")
end
function pwd_success(m)
successful = true
end
list = {
{ match = "new UNIX password:",
action = send_password },
{ match = "updated successfully",
action = pwd_success }
}
e:expect(list, 5)
if (successful) then
print("Successful.")
else
print("NOT successful.")
end