Eingabe und Ausgabeverarbeitung von Netcat aus einem Script steuern

Post Reply
Message
Author
SvenSteal

Eingabe und Ausgabeverarbeitung von Netcat aus einem Script steuern

#1 Post by SvenSteal »

ich möchte gerne einen Server netcat programmieren - eingepackt in ein bash script. Dafür ist es jedoch notwendig, dass ich sowohl an die Ausgabe, als auch an den stdin - Kanal von netcat heran komme.

So funzt es nicht:

script.sh | nc -l -p ... | script.sh

Hier wird zweimal das Script aufgerufen.

Hat jemand eine Lösung dafür? Vielen Dank im Voraus

Sven

rattenkind

#2 Post by rattenkind »

das Konstrukt foo | bar | foobar erwartet 3 executables und wird von links nach rechts abgearbeitet, wobei jeweils STDOUT des vorangegangenenen an den STDIN des nexten geleitet wird. Damit bekommt bar den STDOUT von foo und foobar den STDOUT von bar.
Vergleiche:
ls -l / | grep d | grep x
Wo ist jetzt das Problem genau?

ratte

SvenSteal

#3 Post by SvenSteal »

Ich möchte nc (netcat) als server vewenden. Das bedeutet, ich muss dessen ausgabe (mit hilfe des scriptes) abhängig von seiner Eingabe machen.

In deinem Beispiel bedeutet das: ich möchte die Ausgabe von "bar" wieder als Eingabe von "foo" haben - also mehr eingeschlossener kreis. "foobar" wäre dabei überflüssig.


Vielen Dank im Voraus

rattenkind

#4 Post by rattenkind »

Hi,

das laesst sich AFAIK nicht in einer Kommandozeile loesen, aber in einem Script mit einer rekursiven Funktion, die die Ausgaben in einer Variablen speichert und dann wieder "abgibt" , sollte das machbar sein.

So vielleicht:

Code: Select all

#!/bin/sh
my_func () { # $1 ist die Variable, die den Inhalt des ersten Parameters des Funktionsaufrufs enthaelt
  NC_OUTPUT1=`cat $1 netcat -l -p ... `
}

while true; do my_func $NC_OUTPUT; done
untested, aber vielleicht bringt dich das auf den Weg.

ratte

Post Reply