halb OT: Perlskript an xinetd -> timeouts erkennen?
Hallo zusammen, ich habe aktuell ein Problem mit einem Perl Skript, das via tcp port trigger von xinetd gestartet wird und dann über STDIN/STDOUT Daten empfäng und sendet. Wenn auf der Gegenseite der Sender "wegbricht" (DSL Zwangstrennung zB), dann würde ich das im Perl skript gerne erkennen und es beenden. Hat da jemand eine Idee wie ich das lösen kann ohne in Perl komplett alles auf Sockets umzustellen? Danke! MFG SK -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo, Am Thu, 16 Feb 2012, Stefan König schrieb:
ich habe aktuell ein Problem mit einem Perl Skript, das via tcp port trigger von xinetd gestartet wird und dann über STDIN/STDOUT Daten empfäng und sendet. Wenn auf der Gegenseite der Sender "wegbricht" (DSL Zwangstrennung zB), dann würde ich das im Perl skript gerne erkennen und es beenden. Hat da jemand eine Idee wie ich das lösen kann ohne in Perl komplett alles auf Sockets umzustellen?
perldoc -f eof HTH, -dnh -- Perl isn't a programming language, it's a thousand special case rules flying in close formation. -- Peter da Silva -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
David Haller schrieb:
Hallo,
Am Thu, 16 Feb 2012, Stefan König schrieb:
ich habe aktuell ein Problem mit einem Perl Skript, das via tcp port trigger von xinetd gestartet wird und dann über STDIN/STDOUT Daten empfäng und sendet. Wenn auf der Gegenseite der Sender "wegbricht" (DSL Zwangstrennung zB), dann würde ich das im Perl skript gerne erkennen und es beenden. Hat da jemand eine Idee wie ich das lösen kann ohne in Perl komplett alles auf Sockets umzustellen?
perldoc -f eof
HTH, -dnh
Danke für den Tip, hat leider nicht funktioniert. Andere Ideen wie ich aus einer while (<STDIN>) Schleife rauskomme wenn mir der Gegenpart wegbricht? Habe es auch mal mit einem last unless defined; und last unless !eof(); versucht, tut auch nichts. tschau SK -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am Mon, 20 Feb 2012 18:10:12 +0100 schrieb Stefan König <montiburns@googlemail.com>:
David Haller schrieb:
Hallo,
Am Thu, 16 Feb 2012, Stefan König schrieb:
ich habe aktuell ein Problem mit einem Perl Skript, das via tcp port trigger von xinetd gestartet wird und dann über STDIN/STDOUT Daten empfäng und sendet. Wenn auf der Gegenseite der Sender "wegbricht" (DSL Zwangstrennung zB), dann würde ich das im Perl skript gerne erkennen und es beenden. Hat da jemand eine Idee wie ich das lösen kann ohne in Perl komplett alles auf Sockets umzustellen?
perldoc -f eof
HTH, -dnh
Danke für den Tip, hat leider nicht funktioniert. Andere Ideen wie ich aus einer while (<STDIN>) Schleife rauskomme wenn mir der Gegenpart wegbricht? Habe es auch mal mit einem last unless defined; und last unless !eof(); versucht, tut auch nichts.
Ich keine deine while Schleife nicht, aber versuche es doch mal mit perldoc -f undef, irgendetwas wie while(){ do domething; undef $/; } Üblicherweise ist Perl intelligent genug, selbst zu erkennen, wenn eine Netzwerkverbindung nicht mehr besteht. -Dieter -- Dieter Klünter | Systemberatung http://dkluenter.de GPG Key ID:DA147B05 53°37'09,95"N 10°08'02,42"E -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Dieter Klünter schrieb:
[...] Ich keine deine while Schleife nicht, aber versuche es doch mal mit perldoc -f undef, irgendetwas wie while(){ do domething; undef $/; }
Üblicherweise ist Perl intelligent genug, selbst zu erkennen, wenn eine Netzwerkverbindung nicht mehr besteht.
-Dieter
Die Verbindung wird ja vom xinetd gemanaged, denke daher das Problem. Und dem kann ich leider auch keine Timeouts oder ähnliches mitgeben. Hm hm hm, ich versuche mal ein "undef $_", denn die Daten über STDIN landen in $_ Würde aber theoretisch bedeuten, dass jeder Schleifendurchlauf nach dem undef beendet wird... auch nicht wünschenswert :) Dennoch danke erstmal! Grüße -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Stefan König schrieb:
Die Verbindung wird ja vom xinetd gemanaged, denke daher das Problem. Und dem kann ich leider auch keine Timeouts oder ähnliches mitgeben. Hm hm hm, ich versuche mal ein "undef $_", denn die Daten über STDIN landen in $_ Würde aber theoretisch bedeuten, dass jeder Schleifendurchlauf nach dem undef beendet wird... auch nicht wünschenswert :) Dennoch danke erstmal!
Grüße
Hallo Stefan, und anstelle von xinetd .... entweder perl direkt oder den tcpserver (http://cr.yp.to) ausprobieren Wolfgang -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Üblicherweise ist Perl intelligent genug, selbst zu erkennen, wenn eine Netzwerkverbindung nicht mehr besteht.
-Dieter
Wenn ich eine Verbindung beende (also an der Gegenstelle das Skript abbreche), ist das eine Sache. Wenn ich aber den Stecker ziehe, wartet der andere noch einen tcp timeout lang, ob der Stecker nicht wieder reingesteckt wird. Viele Grüsse Wolfgang Hamann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
hamann.w@t-online.de schrieb:
Üblicherweise ist Perl intelligent genug, selbst zu erkennen, wenn eine Netzwerkverbindung nicht mehr besteht.
-Dieter
Wenn ich eine Verbindung beende (also an der Gegenstelle das Skript abbreche), ist das eine Sache. Wenn ich aber den Stecker ziehe, wartet der andere noch einen tcp timeout lang, ob der Stecker nicht wieder reingesteckt wird.
Viele Grüsse Wolfgang Hamann
So habe nun sowohl tcpserver ausprobiert, als auch das gesamte perl auf io::sockets umgebaut. In beiden Vartianten laufe ich in kein Timeout wenn ich wegbreche (24h DSL Zwangstrennung) oder die Gegenstelle wegbricht... Da bin ich jetzt am Ende mit meinem Latein.... Grüße SK -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (4)
-
David Haller
-
Dieter Klünter
-
hamann.w@t-online.de
-
Stefan König