David Haller schrieb:
Hallo,
Am Tue, 06 Sep 2011, Kyek, Andreas, VF-DE schrieb:
Stefan König wrote:
bastele gerade ein kleines Bash Skript, dass auf einem tcp Port auf Verbindungen lauschen soll. Dazu setze ich xinetd ein, der soll den Eingang der Verbindung ja auf stdin an das Serverskript übergeben.
IMO NEIN (s.u.)
xinetd config:
service bashtest { port = 9766
[..]
#!/bin/bash cat /dev/stdin
(Vorab: Ich bin KEIN Programmierer; daher ist die AW evtl nicht ganz richtig)
Ich kenne das so wie Du das beschreibst NICHT.
Der xinetd lauscht auf einem Port; wenn auf dem Port etwas passiert startet er das konfigurierte Programm. ALLES was danach auf dem Port passiert ist Sache des jeweiligen Programms. Das xinetd lenkt NICHT den Strom von Port x auf stdin des Prozesses. D.h. dein Programm muss sich selber um das Handling der Daten auf dem Port kümmern.
Korrekt. Stefan, guck dir mal das Paket perl-Net-Server an. Da wäre das ungefähr das, was in der manpage steht:
==== #!/usr/bin/perl -w -T package MyPackage; use base qw(Net::Server); sub process_request { my $self = shift; while (<STDIN>) { s/\r?\n$//; print "You said '$_'\r\n"; # basic echo last if /quit/i; } } MyPackage->run(port => 9766); ====
BTW: kurz mal ausprobiert, mit der bash klappt's auch nicht, wenn man aus /dev/tcp/localhost/9766 liest. Und hier hat auch der xinetd gemeckert, also log im Auge haben, wenn man an sowas bastelt.
HTH, -dnh
Oh hm, danke für den Hinweis ,da haben mich die diversen Google Ergebnisse in die falsche Richtung gelenkt. Dummerweise habe ich von Perl wenig bis gar keine Ahnung.... Ich fürchte, dann muss ich mich mit netcat quälen! Grüße Stefan -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org