kuehlmeister
Goto Top

Telnet aus PHP starten

Will Telnet von einem PHP Script starten

Ich habe hier ein PHP Script, welches Daten anzeigen soll, die aus einer Telnet-Session kommen. Nun ist der Telnet manchmal aus, also soll das Script im Fehlerfall den einfach neu starten.

Aber mit exec("telnet 192.168.0.100 10001"); gehts nicht, der startet das Telnet nicht.

Wie kann ich das den per Script starten?? Hab mir auch schon eine .sh geschrieben, welches das Telnet aufruft. Ruft man die Datei von der Konsole aus auf gehts, allerdings nicht über das PHP Script mit exec("telnet.sh");

Was kann ich denn machen??

Danke schonmal.

Content-ID: 11587

Url: https://administrator.de/contentid/11587

Ausgedruckt am: 25.11.2024 um 23:11 Uhr

devnull
devnull 07.06.2005 um 16:13:09 Uhr
Goto Top
Hallo,

das müsste eigentlich gehen. Wichtig ist aber das du die Rechte dazu hast, telnet per
exec aufzurufen. Das kannst du mit dem Aufruf der phpinfos rausfinden.

Weiter kann man auch per Backticks arbeiten ( ` ) .

Hast Du Zugriff auf den kompletten Server? Gib mal ein paar Infos dazu.

Grüsse Mario
kuehlmeister
kuehlmeister 07.06.2005 um 16:32:00 Uhr
Goto Top
Hallo,

das müsste eigentlich gehen. Wichtig
ist aber das du die Rechte dazu hast, telnet
per
exec aufzurufen. Das kannst du mit dem
Aufruf der phpinfos rausfinden.

Weiter kann man auch per Backticks arbeiten
( ` ) .

Hast Du Zugriff auf den kompletten Server?
Gib mal ein paar Infos dazu.

Grüsse Mario

Ja, Zugriff auf den kompletten Server habe ich als root. Wo steht denn das in der phpinfo() wo welches Programm man darf und welches nicht??

Wo kann man dem denn die Rechte geben, telnet auszuführen? Die Rechte von Telnet habe ich auch schon geändert, weil vorher durfte nur root das starten.

Mmmh, mit exec und den Backticks gehts, der startet telnet, läuft n paar Sekunden und dann ist der Telnet wieder aus. Ich will aber das der die ganze Zeit läuft, wenn einmal gestartet.
devnull
devnull 07.06.2005 um 16:43:30 Uhr
Goto Top
Hallo,

nun ich nehme an es wird mit safe_mode gearbeitet. Da gibt es ein so genanntes safe_mode_exec_dir.
Befehle in diesem können dann per telnet ausgeführt werden.

Aber noch mal, wenn Du nur die Ausgabe des Telnet brauchst, kannst Du auch mit Backtick arbeiten.

Zum Beispiel um nen Ping zu machen:

<?

$host = "www.administrator.de";

$ping = `ping -c1 -w1 $host`;
echo $ping;

?>

Das reicht schon...


Grüsse Mario
kuehlmeister
kuehlmeister 07.06.2005 um 17:03:14 Uhr
Goto Top
safe mode ist aus, der startet den telnet nun auch, beendet den allerdings wieder nach dem das Script abgelaufen ist. Ich müsste den irgendwie in den Hintergrund kriegen, das der immer läuft.

Weil der Telnet soll Daten von einer SPS empfangen und in einer Textdatei speichern, ich will nur nicht jedesmal erst den Telnet starten bevor ich mit der SPS arbeiten kann.

Ich hab hier ein Script, was sozusagen "live" die Werte der SPS anzeigt, allerdings nur wenn das Telnet läuft. Dort habe ich am Anfang ne Abfrage drin, ob der Telnet im Speicher ist. Wenn ja zeigt der die Textdatei an, wenn nicht so mein Plan sollte der Telnet starten.

Das man sozusagen nur auf die Ausgabeseite geht und der legt los.
devnull
devnull 08.06.2005 um 07:59:29 Uhr
Goto Top
Hallo,

dann solltest Du mit sowas wie inetd oder xinetd arbeiten. Dieser startet das dazugehörige Programm sobald eine Anfrage für einen definierten Port kommt.

Einen kurzen Einstieg in das Thema hab ich auf die schnelle hier gefunden: http://www.linux-magazin.de/Artikel/ausgabe/1998/10/Tcpd/tcpd.html

Ich weiss nicht wie gut Du dich mit Linux auskennst, vielleicht kennst Du das ja schon. Steht der Rechner im LAN oder öffentlich (Sicherheit).

Grüsse Mario
kuehlmeister
kuehlmeister 10.06.2005 um 14:59:27 Uhr
Goto Top
Hallo,

dann solltest Du mit sowas wie inetd oder
xinetd arbeiten. Dieser startet das
dazugehörige Programm sobald eine
Anfrage für einen definierten Port
kommt.

Einen kurzen Einstieg in das Thema hab ich
auf die schnelle hier gefunden:
http://www.linux-magazin.de/Artikel/ausgabe/1998/10/Tcpd/tcpd.html

die sache ist nur, das ich ne SPS abfragen will, die an einem XPort (aus der Ct) hängt. Das ist ein Teil welches die RS232 Signale auf Ethernet umwandelt. Und ich glaube nicht, das der von sich aus lossendet, wenn kein Terminal connectet ist. Man kann das Ding zwar programmieren, aber da bin ich nicht so firm drin (Java). Und die SPS ist ne ganz einfache nur mit ner RS232 Schnittstelle, an der sonst ein Drucker hängt. Aber die Idee ist gut, vielleicht gehts ja, kenn mich da allerdings nich so wirklich mit aus.

Ich weiss nicht wie gut Du dich mit Linux
auskennst, vielleicht kennst Du das ja
schon. Steht der Rechner im LAN oder
öffentlich (Sicherheit).

der Rechner steht im LAN, mit Linux kenne ich mich ein bischen aus (Samba, Fileservergeschichten etc.) aber wenns in die Tiefe geht versage ich...

Grüsse Mario

thx, oli
nihad
nihad 28.06.2005 um 11:17:52 Uhr
Goto Top
Hi
wenn du ein "&" am Ende der Kommandozeile anhängst, wird das Programm weiter im Hintergrund ausgeführt, z.B.
"wget http://url.domain.com/path/to/file.ext &"

Das Problem bei dir ist vielleicht dass telnet eine tty braucht und deswegen rausfliegt, weil es über php keine bekommen kann. Vielleicht irre ich mich aber. Ich kann dir eventuell stattdessen das tool expect empfehlen, mittels autoexpect kannst du sogar recht komplexe Abfragen (wenn sie sich wiederholen) im nu automatisieren, fast egal von wo die Daten hergeholt werden. Ich habe damit sehr positive Erfahrungen gesammelt. Achtung: ein bisschen reinlesen musst du dich da schon, 5-10 min. sollten reichen.

lg
Nihad