Огляд скриптовых мов - Python
Приклади збереження даних Приклади збереження данихУ порівнянні з pickle або YAML для ініціалізації роботи з ZODB потрібно написати на парі рядків програмного коду більше, але як тільки сховище...
Контактні дані Київ, Мясницкая вул., 35
Телефон: +38 (044) 997 - 93 - 19
Факс: +38 (044) 999 - 99 - 91
Можливості для адміністратора
Системним адміністраторам часто доводиться запускати послідовності команд, тому виразно має сенс створити модуль, що спростив би цю можливість. Давайте подивимося, як можна було б реалізувати такий модуль із застосуванням механізму спадкування. Це сокирний приклад запуску команд на вилученій машині, але сама ідея гідна більше пильної уваги, тому що в групі Red Hat Emerging Technology розробляється проект, що спрощує керування великими кластерами комп'ютерів зі сценаріїв мовою Python.

Відповідно до інформації, що приводиться на веб-сайті Func, "Нижче приводиться цікавий, хоча й штучний приклад виконання перезавантаження всіх систем, де запущений демон httpd. Штучний, так, але реалізувати не становить праці, завдяки Func". Про Func (FUNC) згадувалося в главі 8, де розглядалася власна система "керування", здатна працювати в будь-який UNIX-Подібній системі. Модуль subprocess забезпечує уніфікований інтерфейс взаємодії із системою, з його допомогою досить легко організувати запис даних у потік стандартного уведення.

Спробуємо цього разу сымитировать поводження Bash і перенаправляти файл у потік стандартного уведення. Для початку нам необхідно записати що-небудь у файл; зробимо це з використанням нового синтаксису Python 2.6. Тепер подивимося, як реалізувати конвеєрну обробку із застосуванням декількох команд, що часто використовується в сценаріях мовою командної оболонки.

Подивимося спочатку, як виглядає послідовність команд, об'єднаних у конвеєр, мовою Bash, а потім реалізуємо ту ж саму послідовність мовою Python. На практиці нам дуже часто доводиться мати справа з файлами журналів. У прикладі 10.12 ми визначаємо, яка командна оболонка використовується суперкористувачем root на ноутбуці Macintosh. Проте, хоча ми можемо реалізувати деяку дію за допомогою модуля subprocess, організувавши канали, але це ще не означає, що тільки так і випливало діяти.

У попередньому прикладі ми одержали ім'я командної оболонки користувача root, об'єднавши в конвеєр послідовність команд. Але для виконання подібних дій у мові Python є убудований модуль, тому дуже важливо знати, коли можна уникнути використання модуля subprocess - мова Python може містити убудований модуль, що здатний виконати необхідна дія. Багато чого з того, що можна зробити в командній оболонці, наприклад, створити архів у форматі tar або zip, можна реалізувати й мовою Python без використання команд системи.

Тому, коли ви виявляєте, що доводиться реалізовувати дуже складну конвеєрну обробку з використанням модуля subprocess, пошукайте убудований еквівалент у мові Python. Модуль subprocess дозволяє одночасно передавати дані в потік стандартного уведення й приймати дані з потоку стандартного висновку процесу, а також одержувати дані з потоку стандартного висновку повідомлень про помилки. Розглянемо приклад, що демонструє це. Використання програми Supervisor для керування процесами
Системному адміністраторові часто доводиться управляти процесами.
Служба аутентификации Служба аутентификацииОдне із самих удалих визначень, з якими нам доводилося зіштовхуватися, приводиться у Википедии: "прикладний протокол, що дозволяє звертатися до служби каталогів, що працює поверх протоколу TCP/IP". Як приклад...
Веб додатка Веб додаткаОдне з поліпшень, яке можна було б внести в цей додаток, -це реалізувати сортування в порядку, зворотному поточний. Зробити це досить просто, але ми залишимо реалізацію цієї можливості читачам. Як ще одне поліпшення...
Запуск сценарію Запуск сценаріюЦе в точності відповідає нашим очікуванням. Тепер спочатку спробуємо запустити сценарій, що додає новий запис, а потім знову запустимо сценарій, що витягає дані. Цей приклад ідентичний попередньому прикладу, де використовувався метод store,...
Створення звітів Створення звітівКрім того, ми могли б розширити цей сценарій і відшукувати запису з обсягом використання 80 відсотків, 70 відсотків і видавати попередження по досягненні цих рівнів. Такий сценарій легко можна було б об'єднати, наприклад, с...
 
(c) Copyright