Hallo,
ich schreibe gerade an einem Programm, mit dem man mit einem PC ein Linux-Gerät per Telnet automatisch konfigurieren können soll, unter Verwendung der Telnet Komponente aus den Indys.
Auf dem Linux-Gerät sollen in der Telnet-Sitzung verschiedene Befehle ausgeführt werden, z.B. Wechseln in ein bestimmtes Verzeichnis, erstellen einer Script.sh mit dem Vi Editor, einfügen eines Textes in die Datei, Vi beenden, Datei verschieben , usw.
Bei der manuellen Eingabe über Telnet kein Problem.
Jetzt sollen die Telnet-Kommandos über das Programm gesendet werden, etwa so :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| Form1.IdTelnet1.Create(nil); Form1.IdTelnet1.Host:=Form1.Edit1.text; Form1.IdTelnet1.Connect; If Form1.IdTelnet1.Connected Then begin Form1.IdTelnet1.WriteLn('cd /home'); Form1.IdTelnet1.WriteLn('vi script.sh'); Form1.IdTelnet1.WriteLn('i'); Form1.IdTelnet1.WriteLn('cd /test'); Form1.IdTelnet1.WriteLn('tar xjf /prog/prog.tar.bz2'); Form1.IdTelnet1.WriteLn('cd /etc'); Form1.IdTelnet1.WriteLn('^['); Form1.IdTelnet1.WriteLn(':wq'); ... ... end; ... ... |
Mein Problem ist jetzt, dass die Kommandos vom Programm derart schnell gesendet werden, dass das Linux-Gerät mit dem Verarbeiten nicht hinterher kommt, d.h. ein Teil der Befehle ist schon gesendet, noch bevor sich die Telnet-Konsole meldet.
Ich bräuchte also irgend eine Verzögerung zwischen den einzelnen Befehlen, oder es gibt eine andere Möglichkeiten mit dem Absetzen eines Befehls solange zu warten, bis sich das Linux-Gerät entsprechend gemeldet hat.
Mit der Demo zum Indy TelnetClient komme ich nicht weiter, weil dort nur von einer interaktiven Telnet-Sitzung ausgegangen wird, d.h. die Befehle werden manuell abgesetzt.
Ich wäre froh, wenn mir hier jemand eine Denkanstoß geben könnte.
Vielen Dank