В Mac OS X задача добавления постоянных статических маршрутов оказалась нетривиальна. Гугление не дало желаемого результата, в результате чего пришлось включать голову и делать свой велосипед. Вполне возможно, что эту задачу можно решить проще, но у меня давно было желание разобраться с демонами и агентами OS X, так что воспользовался случаем и совместил интересное с полезным.
ТЗ: Прописать статические маршруты, автоматически подгружаемые при перезагрузке PC под управлением OS X.
В примере будет использована маршрутизация сети 172.1.0.0/22 на маршрутизатор 172.0.0.200.
1. Создаем Launch Daemon.
Launch Daemon загружается при загрузке ОС, Launch Agent при загрузке профиля. В целях безопасности OS X блокирует попытку запуска Launch Agent под root, а необходимая нам команда route add требует его привилегий. Конечно можно было бы поправить конфиг sudo, но в этом случае обновление системы может сломать реализуемую функциональность, так что было принято решение использовать именно Launch Daemon.
info: Все последующие операции выполняются в консоли.
Создадим и заполним конфиг нового Launch Daemon:
|
|
|
|
Как видно из конфига, мы будем запускать скрипт /usr/local/scripts/AddRoute.sh. Он будет исполняться от root.
2. Пишем скрипт.
|
|
|
|
Дадим скрипту доступ на исполнение:
|
|
Внимательно рассмотрим конструкцию:
|
|
Без нее скрипт может не работать, так как на момент его запуска сеть может еще не подняться. Apple рекомендует использовать отдельные инструменты для контроля сети, что усложнило бы реализацию, но в файле /etc/rc.common была найдена подходящая для таких случаев функция.
В итоге после запуска скрипта выполняется проверка доступности сети и, если она недоступна, повторение попытки через 5 секунд. Как только сеть появится, цикл завершится и выполнится команда:
|
|
Теперь достаточно перезагрузить машину и убедиться, что все работает как надо.
Проверить можно выполнив команду:
|
|
Вывод должен быть аналогичным:
|
|
Смотрите также
- Знакомство с CMake. Часть 3. CMakeCache, модули CMake, зависимости сборки.
- Знакомство с CMake. Часть 2. Переменные, условия, сообщения, опции.
- Знакомство с CMake. Часть 1. Установка, CMakeLists.txt, сборка.
- Упрощаем администрирование с etckeeper. Настройка контроля версий конфигов в /etc.
- HTTPS для сайта на WordPress под управлением nginx.