У меня есть сервер системного журнала, который пишет в поток unix /tmp/syslog.socket
. Мне нужно продублировать этот поток для нескольких клиентов TCP. Есть ли способ добиться этого с помощью socat?
Дублировать входной поток unix для нескольких клиентов TCP (используя socat)
Ответы (2)
Я думаю, что только что сделал это, особенно часть дублирования, с помощью Некоторые полезные команды socat.
socat TCP-LISTEN:4444,reuseaddr,fork SYSTEM:"tail -f ~/.tail-error-logs/*",pty
fork
важно слева, pty
важно справа.
Что не сработало, так это стиль netcat:
tail -f ~/.tail-error-logs/* | socat STDIO TCP-LISTEN:4444,fork,reuseaddr
Это привело к чередованию вывода между несколькими подключенными клиентами, что также задокументировано на вышеуказанном веб-сайте.
person
lkraav
schedule
06.07.2012
Почему
pty
важно? Когда я оставляю это, проблема чередования прекращается, и все данные отправляются всем клиентам.
- person Thor; 13.05.2015
syslogd имеет средство для перераспределения журналов через udp, см. справочную страницу для syslogd, т.е.
http://linux.about.com/od/commands/l/blcmdl8_syslogd.htm
Я считаю, что syslog-ng также поддерживает сокеты tcp для перераспределения журналов, а также udp.
http://www.syslog.org/syslog-ng/v2/
Я предполагаю, что вам не нужен хак с сокатом?
person
Vorsprung
schedule
26.01.2012
Насколько я знаю, системный журнал может только писать в пункт назначения и читать из пункта назначения (может быть только один конец ссылки); он не может прослушивать соединение, а затем записывать в это соединение.
- person Calin Don; 27.01.2012
udp
? - person Michael Krelin - hacker   schedule 26.01.2012