The Apple Geek

Чему ты научился сегодня?

Настройка syslog-сервера на OS X для приёма сообщений TimeCapsule

Дано: OS X - одна штука, Time Capsule - одна штука.

Нужно: писать сообщения syslog от TimeCapsule в syslog сервера.

На TimeCapsule (впрочем, как и на AirPort Express/Extreme) настройка элементарна:

01-syslog

Но в syslog “из коробки” эти сообщения не попадают.

Что делать?

Рецепты нашёл на SuperUser и на Shortcut.

Нужно отредактировать конфигурацию launchd для запуска syslogd.

Преобразую plist в приспособленный для редактирования вид xml:

$ sudo plutil -convert xml1 \
    /System/Library/LaunchDaemons/com.apple.syslogd.plist

Добавляю фрагмент в конце файла, выделенный жирным текстом:

$ sudo vim \
    /System/Library/LaunchDaemons/com.apple.syslogd.plist

        
            SockPathMode
            438
            SockPathName
            /var/run/syslog
            SockType
            dgram
        
        NetworkListener
        
            SockServiceName
            syslog
            SockType
            dgram
        
    

Преобразую plist к предыдущему формату binary1:

$ sudo plutil -convert binary1 \
    /System/Library/LaunchDaemons/com.apple.syslogd.plist

Правлю конфигурацию syslog для отправки сообщений в файл AirPort.log:

$ sudo vim /etc/syslog.conf
#local0.*                       /var/log/appfirewall.log
local0.*                        /var/log/AirPort.log

Не забываю создать лог-файл:

$ sudo touch /var/log/AirPort.log

Перезапускаю syslog:

$ sudo launchctl unload \
    /System/Library/LaunchDaemons/com.apple.syslogd.plist
$ sudo launchctl load \
    /System/Library/LaunchDaemons/com.apple.syslogd.plist

Проверяю, что syslog стал слушать по сети:

$ sudo lsof -i:514
COMMAND  PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
launchd    1 root   55u  IPv4 0xffffff800cb05d60      0t0  UDP *:syslog
launchd    1 root   74u  IPv6 0xffffff800bb94920      0t0  UDP *:syslog
syslogd 2348 root    5u  IPv4 0xffffff800cb05d60      0t0  UDP *:syslog
syslogd 2348 root    6u  IPv6 0xffffff800bb94920      0t0  UDP *:syslog

Проверяю поступление сообщений, переподключив iPhone по WiFi:

$ tail -f  /var/log/AirPort.log 
Aug 31 17:20:43 ... 80211: Disassociated with station 7c:c5:37:70:d3:9f
Aug 31 17:20:44 ... 80211: Rotated TKIP group key.
Aug 31 17:20:53 ... 80211: Associated with station 7c:c5:37:70:d3:9f
Aug 31 17:20:53 ... 80211: Authenticating station 7c:c5:37:70:d3:9f to RADIUS.
Aug 31 17:20:53 ... 80211: Installed unicast CCMP key for supplicant 7c:c5:37:70:d3:9f

Для “контрольного в голову” захожу в Console.app и выбираю нужный лог:

02-syslog

Работает. Замечательно.

Я всё это делал с OS X Lion Server, но должно работать и на обычном OS X.