Wie kann ich eine Nachricht sowohl an netcat als auch an ein anderes Skript senden?

1309
Mars

Ich versuche, eine Client-Server-Schnittstelle zu erstellen. Betrachten Sie es als Einzelgespräch.

Was ich erreichen möchte, sind zwei horizontale Ansichten. Unten für meine (Server-) Eingabe, oben für die Client-Ausgabe und meine Eingabe. Beide formatiert (z. B. zusätzlicher Zeitstempel). Ich mache eine Verbindung mit netcat. Es gelang mir, den Bildschirm aufzuteilen, eingehende Daten zu formatieren und zu drucken. Was mir fehlt, ist das Drucken meiner Eingaben im oberen Fenster und das Senden an den Client. Ich benutze Pipe. Ich starte alles mit einem vorübergehenden Befehl screen -c screens. In Zukunft wird alles vom dritten Skript mit Parametern beginnen. Ich verwende eine 64-Bit-Debian-basierte Distribution CrunchBang.

Könnte expectdas Problem vielleicht lösen? Jede Hilfe wäre dankbar.

server.sh:

#!/bin/bash  pipe=/tmp/pipe trap "rm -f $pipe" EXIT  if [[ ! -p $pipe ]]; then mkfifo $pipe #chmod +x $pipe fi  nc localhost -lp 53656 >$pipe &  while true do read message  echo "$message" >$pipe clear done 

conv.sh:

#!/bin/bash # conversation window  clear pipe=/tmp/pipe  while true do if read line <$pipe; then if [[ "$line" == "quit" ]]; then break fi  NOW=$(date "+%H:%M") echo "($NOW) Client: $line" fi done 

Bildschirme config:

startup_message off  split focus screen ./server.sh title "input"  focus top screen ./conv.sh title "conv"  focus bottom 

Fenster aussehen:

Wie kann ich eine Nachricht sowohl an netcat als auch an ein anderes Skript senden?

1

1 Antwort auf die Frage

1
Stephanie

Der einfachste Weg wäre der Abschlag http://man7.org/linux/man-pages/man1/tee.1.html und eine Named Pipe. http://man7.org/linux/man-pages/man1/mkfifo.1.html

Erstellen Sie ein FIFO

$ mkfifo temporäre Datei

Stecken Sie das T-Stück in die Mitte des Rohrs und geben Sie diese Datei aus

$ Befehl | tee temporärdatei | andererBefehl &

Fügen Sie den Inhalt des FIFO Ihrem dritten Befehl hinzu

$ dritter Befehl <temporäre Datei