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 maximal timeout Sekunden ab.

Die Liste ist ein Array mit aus match- und action-Einträgen bestehenden Tabellen. In match ist jeweils ein regulärer Ausdruck angegeben, auf den die empfangene Programmausgabe überprüft wird, und action 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 Array args 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

Zuletzt aktualisiert am 29.06.2020.
weiter: LC.fs.*
zurück: LC.exec.*