Всем привет! У меня на работе давно есть потребность в статических маршрутах, отличных от маршрута по умолчанию. Но писать каждый раз в консоли 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