Всем привет! У меня на работе давно есть потребность в статических маршрутах, отличных от маршрута по умолчанию. Но писать каждый раз в консоли sudo route add 10.1.1.1/24 192.168.24.222 после входа как-то напрягает, да и просто банально лень делать это каждый раз. В данном случае, прописывание маршрута — это частная задача. В общем случае это сводится к выполнению произвольного скрипта. Однако есть решение, пусть и не очень простое, но все-таки!
Для того, чтобы выполнить скрипт при старте системы Mac OS X, надо добавить еще один StartupItem. В системе есть 2 места, где они располагаются, это: /Library/StartupItems и /System/Library/StartupItems. Последнее лучше не трогать, потому что это вообще системная область и не надо туда лезть. Поэтому будем использовать /Library/StartupItems.
- Идем в /Library/StartupItems.
- Создаем там папку (в моем случае прописывания маршрутов, это будет addoute).
- Идем туда.
- Создаем там скрипт, который хотим выполнять. Он должен называться так же как и папка!
- Создаем файлик параметров StartupParameters.plist.
- Выставляем права на выполнение нашему скрипту.
- Перегружаем систему и убеждаемся, что все работает.
kostik@KOsTIK: ~> cd /Library/StartupItems/ kostik@KOsTIK: /Library/StartupItems> sudo mkdir addroute kostik@KOsTIK: /Library/StartupItems> cd addroute/ kostik@KOsTIK: /Library/StartupItems/addroute> sudo vim addroute # Вот мой скрипт для прописывания статического маршрута: #!/bin/sh # Setting up static routing tables for Mac OS X . /etc/rc.common syslogger ( ) { printf "%s\n" "$*" >> /var/log/system.log } StartService () { syslogger $(/bin/date) " : Adding static route to route table" syslogger $(sudo /sbin/route add 10.1.1.1/24 192.168.24.222) return 0 } StopService () { syslogger $(/bin/date) ": Deleting static routes from routing table" syslogger $(sudo /sbin/route delete 10.1.1.1/24 192.168.24.222) return 0 } RestartService () { StopService StartService return 0 } RunService "$1" EOF kostik@KOsTIK: /Library/StartupItems/addroute> sudo vim StartupParameters.plist # Вот содержание файлика параметров. Самое главное, чтобы в строчке Provides было прописано то же имя, что и название скрипта и название папки: { Description = 'Add static routing tables'; Provides = ('addroute'); Requires = ('Network'); OrderPreference = 'None'; } EOF kostik@KOsTIK: /Library/StartupItems/addroute> sudo chmod 755 addroute kostik@KOsTIK: /Library/StartupItems/addroute> ll total 24 -rw-r--r-- 1 root wheel 138B 16 янв 12:37 StartupParameters.plist -rwxr-xr-x 1 root wheel 585B 16 янв 12:09 addroute*
Вот собственно и все. Для того чтобы проверить, что все сделано правильно — совсем не обязательно перегружать комп. Можно попробовать запустить наш «сервис» ручками и убедиться что все отработало корректно.
kostik@KOsTIK: /Library/StartupItems/addroute> sudo SystemStarter start addroute # И посмотрим что говорят логи: kostik@KOsTIK: ~> tail -f /var/log/system.log Jan 16 13:35:32 KOsTIK sudo[3244]: kostik : TTY=ttys002 ; PWD=/Library/StartupItems/addroute ; USER=root ; COMMAND=/sbin/SystemStarter start addroute понедельник, 16 января 2012 г. 13:35:32 (MSK) : Adding static route to route table Jan 16 13:35:32 KOsTIK sudo[3247]: kostik : TTY=ttys002 ; PWD=/Library/StartupItems/addroute ; USER=root ; COMMAND=/sbin/route add 10.1.1.1/24 192.168.24.222 add net 10.1.1.1: gateway 192.168.24.222