Пытаемся создать простой ответчик netcat:
«Сервер» будет:
$ while true; do { ./secret.sh; } | sudo netcat -k -q -1 -l 123; done
secret.sh
является:
#!/bin/bash
read line
if [ "$line" == "open" ]; then
echo "sesame"
fi
И клиентское соединение:
$ echo "open" | netcat localhost 123
Это работает не так, как ожидалось. Что можно изменить, чтобы это работало?
После прочтения отзывов в другом месте были предложены следующие изменения:
mkfifo /tmp/pipe
while true; do { cat /tmp/pipe | ./secret.sh 2>&1; } | netcat -kv -lp 123 > /tmp/pipe; done
Это работает, но отвечает только результатами из secret.sh
первый раз. Последующие соединения с правильной строкой не получают ожидаемого ответа. Однако я подхожу ближе.