Quantcast
Channel: Multimediaforum
Viewing all articles
Browse latest Browse all 4603

Terminal simulieren

$
0
0
Hi, ich kämpfe mit einem recht garstigen Problem, wo mir nicht so recht eine Lösung einfallen will.

Folgendes: Ich will automatisiert mit einem expect-skript (tcl) ein closed source Programm bedienen, das in einer normalen Linux Console läuft. Zur Steuerung des Programms sende ich dem Programm u.a. passende ANSI Steuercodes für z.B. Cursor down, Cursor up, Enter, etc.

Das Skript funktioniert wunderprächtig - wenn man es auf der Console von Hand ausführt. Nur es soll über einen Daemon gestartet werden, der auf externe Triggerung das das expect-Skript ausführt.

Auch das klappt vorzüglich, wenn der Daemon von der Console gestartet wurde. Er soll aber automatisch vom Init-System beim Systemstart gestartet werden. Wird er das, so funktioniert auf einmal nichts mehr, was beim händischen Start poblemfrei geht.

Der Grund wird nach meiner Forschung wohl darum liegen, dass in der Console ein definiertes Terminal (TERM=linux) mit einer definierten Anzahl von Textzeilen und -spalten und weiteren Parametern vorhanden ist; beim automatischen Start des Daemons aber ein solches nicht definiert ist. Auch das Enviroment ist anders, ein Angleichen der Unterscheide bewirkt aber nichts. Ein Rechteproblem liegt nicht vor, der Daemon läuft unter Root-Rechten.

Nun kann ich zwar dem expect-skript und/oder dem Daemon per stty sagen, dass er genau so viele Textzeilen oder -spalten wie eine originäre Console hat, aber das war es noch nicht. Das Skript läuft damit zwar jetzt ohne sich komplett aufzuhängen und in den Timeout zu rennen durch, aber funktioniert darüber hinaus nicht wesentlich besser.

Die Frage lautet nun: Wie kann ich dem Daemon und/oder dem Skript vorgaukeln, dass er unter einer normalen Linux Console, sozusagen von Hand gestartet, läuft?

Viewing all articles
Browse latest Browse all 4603