【问题标题】:Duplicate input unix stream to multiple TCP clients (using socat)将输入 unix 流复制到多个 TCP 客户端(使用 socat)
【发布时间】:2012-01-26 19:43:12
【问题描述】:

我有一个写入到 unix 流 /tmp/syslog.socket 的系统日志服务器。 我需要将此流复制到多个 TCP 客户端。有没有办法使用 socat 实现这一点?

【问题讨论】:

  • 但是系统日志通常是udp?
  • 是的。对于我的设置,它使用 UDP 从其他机器接收数据并将它们写入 unix 流套接字。
  • @CalinDon 我提出的答案对你来说有效吗?

标签: sockets socat


【解决方案1】:

我想我只是在Some Helpful socat Commands 的帮助下完成了这项工作,尤其是复制部分。

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

它具有在多个附加客户端之间交替输出的效果,这也记录在 on above website

【讨论】:

  • 为什么pty 很重要?当我忽略它时,交替问题停止,所有数据都发送到所有客户端。
【解决方案2】:

syslogd 具有通过 udp 重新分发日志的功能,请参阅 syslogd 的手册页,即

http://linux.about.com/od/commands/l/blcmdl8_syslogd.htm

我相信 syslog-ng 也支持 tcp 套接字用于日志重新分发以及 udp

http://www.syslog.org/syslog-ng/v2/

我猜你不需要对 socat 进行破解?

【讨论】:

  • 据我所知,syslog只能写到一个目的地,从一个目的地读(只能是链接的一端);它无法侦听连接然后写入该连接。
猜你喜欢
  • 2017-03-20
  • 2018-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
  • 2019-12-02
  • 2015-06-14
  • 1970-01-01
相关资源
最近更新 更多