| OS X |
|
OS X является довольно экзотической операционной системой, если не сказать больше. С одной стороны, она обладает, пожалуй, самым лучшим пользовательским интерфейсом Cocoa, а с другой, в версии Leopard, она является полностью POSIX-совместимой операционной системой UNIX. Системе OS X удалось добиться того, чего не удалось ни одному производителю операционных систем UNIX: она вывела UNIX на уровень массового потребления. Версия OS X Leopard включает в себя Python 2.5.1, Twlsted и многие другие замечательные программные компоненты на языке Python. Разработчики системы OS X следуют несколько странной парадигме, предлагая операционную систему и в серверном, и в обычном исполнении. Хотя, безусловно, компания Apple имеет на это полное право, возможно, ей стоит отказаться от такой архаичной идеи; мы же здесь не будем обсуждать плюсы и минусы концепции единой ОС по единой цене. Серверная версия операционной системы предлагает более полный комплект инструментов командной строки для администрирования, а также ряд компонентов, характерных для Apple, таких как возможность загрузки по сети, возможность работы с серверами каталогов LDAP, и многие другие особенности. Взаимодействие с DSCL , утилитой службы каталогов Название DSCL происходит от Directory Services Command Line (командная строка службы каталогов) и представляет собой удобный способ доступа к прикладному интерфейсу службы каталогов в OS X. DSCL позволяет читать, создавать и удалять записи, что язык Python позволяет делать естественным образом. В примере 8.10 демонстрируется взаимодействие с DSCL в оболочке IPython для чтения атрибутов службы Open Directory и их значений. Пример 8.10. Получение записи пользователя в интерактивной оболочке IPython с помощью DSCL
Это замечательно, что в Apple организовали централизованное управление локальными учетными записями и учетными записями LDAP/Ac-tive Directory с помощью команды dscl. Утилита dscl - это как глоток свежего воздуха по сравнению с другими средствами управления LDAP, даже если вынести использование Python за скобки. У нас недостаточно места, чтобы углубляться в подробности. Тем не менее, заметим, что с помощью языка Python и утилиты dscl можно очень легко организовать программное управление учетными записями как в локальной базе данных, так и в базе данных LDAP, такой как Open Directory, а предыдущий пример должен показать вам, с чего следует начинать. Взаимодействие с прикладным интерфейсом OS X Часто администратору OS X бывает необходимо знать, как организовать взаимодействие с фактическим интерфейсом пользователя. В OS X Leopard для языков Python и Ruьy предоставляется доступ к механизму Scripting ьridge. За дополнительной информацией по этому механизму обращайтесь по адресу http://developer.apple.com/documentation/ Cocoa/Conceptual/'RubyPythonCocoa/Introduction/'Introduction.html. Как вариант, для доступа к OSA, или Open Scripting Architecture (открытая архитектура сценариев), можно использовать модуль ру-арр-script со страницей проекта по адресу http://sourceforge.net/projects/ appscript. Работать с модулем py-appscript - одно удовольствие, так как он дает возможность из языка Python взаимодействовать с очень богатой возможностями архитектурой OSA. Но прежде чем познакомится с ним поближе, мы сначала воспользуемся простым инструментом командной строки osascript, на примере которого продемонстрируем, как можно организовать взаимодействие с прикладным интерфейсом сценариев. В OS X Leopard теперь имеется возможность писать инструменты командной строки, работающие под управлением osascript, и выполнять их как обычные сценарии bash или Python. Давайте напишем сценарий с именем bofh. osa, как показано ниже, и затем запустим его. Текст сценария приводится в примере 8.11. Пример 8.11. Сценарий «Hello, bastard Operator From Hell»
Если запустить этот сценарий из командной строки, механический голос поприветствует нас. Это немножко глупо, но это же Mac OS X; она вполне допускает такие вещи. А теперь погрузимся в использование модуля appscript для доступа к тому же самому API из сценариев на языке Python, но сделаем это в интерактивном режиме, в оболочке IPython. Ниже представлена интерактивная версия примера, включенного в исходные тексты appscript, который выводит список всех запущенных процессов в алфавитном порядке:
Если вам придется решать задачи автоматизации с применением приложений OS X, модуль appscript окажется для вас удачной находкой, так как с его помощью в языке Python можно реализовать такие действия, которые ранее были возможны только в языке Applescript. Hoa Гифт (Noah Gift) написал статью, в которой немного рассказывается об этом: http://www.macdevcenter.eom/pub/a/mac/2007/05/08/using-python-and-applescript-to-get-the-most-out-of-your-mac.html. Кое-что системный администратор может выполнять с помощью Final Cut Pro, создавая пакеты операций, взаимодействующих, например, с Adobe After Effects. Кроме того, в OS X с помощью Applescript Studio можно быстро создать графический интерфейс и вызывать из него сценарий на языке Python командой do shell script. Мало кому известно, что оригинальная версия Carьon Copy Cloner была написана в Applescript Studio. Если у вас есть свободное время, вам стоит познакомиться с этой средой поближе. Автоматическое восстановление системы ASR - это еще один революционный, опередивший время инструмент командной строки, разработанный для OS X. Этот инструмент является ключевым компонентом очень популярной утилиты с именем Carbon Copy Cloner и служит для автоматизации многих ситуаций. Ноа (Noah) использовал утилиту asr в паре с Netboot для автоматического восстановления - фактически он ввел полную автоматизацию этого процесса в одном из мест, где он работал. Пользователю достаточно было просто перезагрузить свою машину и удерживать клавишу «N», чтобы перейти в режим загрузки по сети, и в результате либо наступал «конец игры», либо машина сама исправляла повреждения. Пожалуйста, не рассказывайте об этом никому, потому что многие до сих пор думают, что он все еще работает там. Ниже, в примере 8.12 приводится упрощенная версия сценария для автоматического восстановления системы, который может быть запущен при загрузке по сети или со второго раздела жесткого диска. С точки зрения настроек, каталог /Users, как и любой другой жизненно важный каталог, должен быть символической ссылкой, ведущей в другой раздел, или должен находиться в сети, что еще лучше. Смотрите пример 8.12. Пример 8.12. Сценарий автоматического восстановления раздела жесткого диска в OS X, демонстрирующий ход выполнения с помощью виджета из библиотеки WXPython
Этот сценарий пытается пересоздать раздел и выводит средствами библиотеки WXPython индикатор хода выполнения. Если путь указан корректно и не обнаружено ошибок, выполняется пересоздание раздела жесткого диска с помощью команды asr, в процессе выполнения которой выводится индикатор, показывающий ход выполнения операции, затем новый раздел назначается загружаемым с помощью команды ьless, после чего выполняется перезагрузка машины. Этот сценарий легко можно превратить в основу системы управления и распространения дистрибутива системы уровня предприятия, поскольку достаточно легко организовать установку различных образов, основываясь на данных об аппаратной комплектации или даже считывая «старую» метку жесткого диска. После этого можно, например, организовать программную установку пакетов программного обеспечения с помощью системы управления пакетами в OS X или с помощью свободно распространяемого инструмента radmind. Hoa (Noah) реализовал один интересный сценарий, в котором сначала в автоматическом режиме развертывал базовую систему OS X, а затем завершал установку остальных пакетов с помощью radmind. Если вы всерьез собираетесь заниматься администрированием систем OS X, то вам определенно стоило бы поближе познакомиться с radmind. Radmind - это своего рода система автоматического обновления, которая обнаруживает изменения в файловой системе и обеспечивает возможность восстановления машин на основе этих изменений. Дополнительную информацию о radmind вы найдете на странице http:// rsug.itd.umich.edu/software/radmind/'. Несмотря на то, что программа radmind написана не на языке Python, ее легко можно было бы переписать на этом языке. Управление файлами Pllst из сценариев на языке Python Ранее мы выполняли анализ потока информации в формате XML, генерируемого утилитой system_profiler, используя для этого библиотеку ElementTree. Но в OS X в Python встроена поддержка библиотеки pllstlib, которая позволяет анализировать и создавать файлы Pllst. Сам модуль тоже называется pllstlib. У нас нет возможности продемонстрировать этот модуль на примерах, но вам стоит познакомиться с ним поближе самостоятельно.
Related Articles
Set as favorite
Bookmark
Email This
Hits: 175 Комментарии (0)RSS feed CommentsНаписать комментарий |