偶尔路由器坏了,我想获取路由器日志。
虽然有些路由器有内置的日志查看器,但有些没有。大多数路由器似乎都可以使用 syslog 将日志发送到另一台主机。
如何让 OSX(客户端)接收这些日志?OSX 有一个 syslogd,但说明充其量是不透明的。
也许一个不同的客户端应用程序会更好,但我更喜欢一种我可以在不下载刚刚崩溃的互联网工具的情况下直接破解的方法......
OSX本身没有netcat,否则我会尝试的。
使用可能适用于 OS X 的 syslog-ng,虽然我不确定,但我使用以下 3 行通过我的家庭网络从我的 wifi 路由器到我的日志服务器捕获 syslog 消息:
source net { udp(); };
destination wifirouter { file("/opt/var/log/wifirouter.log"); };
log { source(net); destination(wifirouter); };
然后将 wifi 路由器配置为使用日志服务器的 IP 地址和 wifirouter 标识符。您可以修改源行以仅接受某些源 IP 地址。
所需的“魔法”,以及库存的 Mac OS syslogd,如下所示。
编辑 syslogd 的启动配置,/ System/Library/ LaunchDaemons /com.apple.syslogd.plist (您需要是 root,或者使用 'sudo vi' 或您最喜欢的其他方法来编辑它。)
(有些版本似乎已经注释掉了必要的部分,但我的一个版本没有。)
在以下之后:
<key>Sockets</key>
<dict>
...
<key>BSDSystemLogger</key>
<dict>
...
</dict>
添加或取消注释(删除前导“”行),此部分:
<key>NetworkListener</key>
<dict>
<key>SockServiceName</key>
<string>syslog</string>
<key>SockType</key>
<string>dgram</string>
</dict>
然后完全重新启动 syslogd(即使用 launchctl,再次以 root 身份)
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist
(我认为这个问题/答案可能属于 superuser.com?也许有人可以把它移过来。)
仅供参考,二进制 plist 文件可以使用 XCode 套件中包含的属性列表编辑器进行编辑,也可以使用 3rd 方编辑器 Text Wrangler。我没有尝试过,但考虑到它与 TextWrangler 的血统,我怀疑 BBEdit 也可以编辑它。
对于 OS X 10.7 及更高版本,您应该参考这个 StackOverflow答案来回答这个问题。