« LC.exec
» LC.fs

LC.expect

LC.expect — Aufruf und Fernsteuerung von Programmen

Beschreibung

Mit LC.expect können Programme aufgerufen und ferngesteuert werden. Mit LC.expect wird die Ausgabe eines aufgerufenen Programmes ausgelesen, und anhand von bestimmten Mustern Aktionen 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.

Beispiel

e = LC.expect.new()
successful = false
e:log(true)
e:logfile("expect_test.log")
-- Passwort für Benutzer 'dummy' ändern:
e:spawn("/usr/bin/passwd", { "dummy" } )

function send_password(m)
  -- neues Passwort senden (mit '\n' am Ende!)
  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