Ich möchte netcat (netcat-openbsd 1.105-7ubuntu1
) ausführen und simulieren eine Chat-Sequenz. Ich möchte die netcat Antwort automatisch.Ist eine bedingte Antwort möglich mit netcat
Beispiel was ich will.
NETCAT: nc -l 8080
CLIENT: nc localhost 8080
CLIENT: hello
NETCAT: (if statment)
if hello
do hello friend
if bye
do bye friend
send a FIN tcp
default
date()
Ich kopierte den Code dieser Frage (im asnwer von @wooghie): run a command conditionally with netcat and grep ... aber die Nachricht nicht an den Client gesendet. Netcat war im Listenmodus.
#!/bin/bash
netcat -l 8080 | while read line
do
match=$(echo $line | grep -c 'Hello')
if [ $match -eq 1 ]; then
printf "Hello friend\r\n\r\n"
fi
done
Nein. Sie müssten sowohl stdin * und * von stdout zugeführt werden. Daher ist die Verwendung von 'netcat -l' wesentlich komplizierter/fragiler als die vollständige Implementierung von 'netcat -l' in Perl oder Python. – kubanczyk
@kubanczyk - Sie könnten vollständig Named Pipes verwenden. Bashs "Coproc" macht es jedoch einfacher: http://StackOverflow.com/a/36327396/477563 –
Versuchen Sie 'expect' zu den Tags hinzuzufügen und @GlennJackman kann seine immense Weisheit auf solche Dinge teilen .... –