Используйте socat для подключения к сокету, отправки команды и чтения одной строки
у меня есть процесс, с которым можно связаться через сокет UNIX (на самом деле абстрактное исполнение который, я думаю, специфичен для Linux).
Я пишу скрипт, который должен отправлять команды в этот процесс. Я решил попробовать использовать SOCAT для этой цели. Я пытаюсь выяснить, как (1) подключиться к абстрактному сокету, (2) отправить ему одну команду (строку), (3) прочитать ответ и распечатать ответ на stdout.
Так далеко, я могу легко подключиться, просто сказав:
socat ABSTRACT-CONNECT:mysocket STDIN
это подключает STDIN к сокету, поэтому, если я знаю, что вручную введите команду, сокет прочитает строку, а затем выведет полученный ответ на консоль.
за исключением случаев, когда я запускаю socat в скрипте, мне нужно автоматизировать отправку строки в STDIN. Итак, самый простой способ сделать это-просто протянуть струну STDIN. Итак, предположим, что у нас есть команда под названием"status
" Я бы скажи:
echo status | socat ABSTRACT-CONNECT:mysocket STDIN
это, кажется, работает (socat не сообщает об ошибках), за исключением того, что результат не отправляется в stdout. Скорее, вызов просто возвращается без ответа. Итак, как я могу также прочитать одну строку из сокета и отобразить результат на stdout?
1 ответов
используйте тип адреса "STDIO" для второго аргумента , это двунаправленный адрес . он считывает входные данные с консоли и отправляет на противоположный конец, а также получает данные с противоположного конца и записывает на выход консоли . хорошо отметить -
ака. тире является ярлыком для stdio .