Работа с socat для отправки сообщения и получения ответа

Используя Socat на моем сервере, у меня есть текущая команда:

socat -u tcp-l:7767,fork system:/app/getmsg.sh

Все, что делает getmsgh.sh:

read MESSAGE
echo $MESSAGE

Я пытаюсь выяснить, как клиент может отправить сообщение и получить вывод getmsg.sh

Пробуем на клиенте:

echo "hello" | socat -t 30 tcp:localhost:7767 -

Не работает. На сервере отображается, а на клиенте нет. Кажется, что если вы попытаетесь передать сообщение клиенту, socat хочет немедленно выйти


person ark    schedule 30.12.2017    source источник


Ответы (1)


Проблема заключается в опции -u на стороне сервера. Значение параметра -u со страницы руководства socat:

Использует однонаправленный режим. Первый адрес используется только для чтения, а второй адрес используется только для записи.

Следовательно, сторона tcp-l: только читается, а сторона system: только записывается вместо двунаправленного соединения (которое используется по умолчанию). Удаление параметра -u заставляет работать пример в вопросе.

person mmlr    schedule 30.12.2017