Introduction to Python for Linux System Administrators
Python is a high-level, interpreted programming language that is widely used in the world of Linux system administration. Python’s simplicity, readability, and easy-to-learn syntax make it an ideal choice for automation, scripting, and tool building in a Linux environment. It is also widely used for web development, scientific computing, and data analysis.
Python’s versatility and wide range of libraries and frameworks make it an invaluable tool for Linux system administrators who need to automate repetitive tasks, manage configurations, and monitor system performance.
In addition, Python’s community-driven development and extensive documentation make it easy for Linux system administrators to get help, find solutions, and collaborate with other Python users. With Python, Linux system administrators can streamline their work, increase efficiency, and gain deeper insights into their systems.
Scope of the article
- Overview of Python: Introduce the Python programming language, its features, and its advantages for system administration tasks.
- Setting up Python: Guide the reader through the installation of Python on a Linux system, including any dependencies or libraries that may be required.
- Basic Python syntax: Cover the basics of Python syntax, including data types, variables, operators, and control structures.
- Python libraries for system administration: Introduce the reader to popular Python libraries and modules for system administration tasks, such as paramiko, fabric, psutil, and pyyaml.
- Best practices for Python coding: Discuss coding best practices such as using virtual environments, code organization, error handling, and logging.
Introduction
Python is a high-level programming language that has gained widespread popularity among developers, data analysts, and system administrators due to its simplicity, readability, and versatility. As a Linux system administrator, learning Python can significantly enhance your productivity by automating routine tasks, analyzing system data, and creating custom scripts.
Python provides a vast array of frameworks that make it easy to work with various operating systems and system components, such as networking, databases, and web services. In this Introduction to Python for Linux System Administrators, we will cover the basics of Python programming, including syntax, data types, control structures, and functions.
We will also explore how to use Python for system administration tasks such as file management, process management, and system monitoring. Whether you are a beginner or an experienced Linux system administrator, this course will provide you with the essential knowledge and skills needed to start using Python effectively for your daily tasks.
Setting up Python
Setting up Python on a Linux system involves several steps, including installing the Python interpreter and any required dependencies or libraries. In this guide, we will walk you through the process of installing Python on a Linux system, specifically focusing on Ubuntu and CentOS distributions.
Installing Python on Ubuntu
sudo apt install python3 python3-pip
Python для системных администраторов
Как системный администратор, вы сталкиваетесь с многочисленными проблемами. Управление пользователями, дисковым пространством, процессами, устройствами и бэкапами могут стать причиной потери волос, юмора или вменяемости у многих администраторов. Shell скрипты могут выручить, но они зачастую имеют множество ограничений. В этом случае полнофункциональный скриптовый язык, такой как Python, способен превратить утомительную задачу в легкую и, смею сказать, веселую.
Примеры в этой статье демонстрируют различные возможности Python, которые вы можете использовать на практике. Если Вы работаете с помощью них — вы на правильном пути к пониманию силы Python.
О модулях
Модуль – важное понятие в языке Python. По существу, модуль – это ресурс, который вы подключаете к программе, чтобы затем использовать его. Этот процесс можно сравнить с тем, что вы достанете из ящика лист бумаги и положите его на свой стол, подготовив тем самым к дальнейшему использованию. Модули подключаются при помощи команды import, которая присутствует в начале каждого примера. Модули доступны для связи с базами данных, сетевого программирования, сервисов операционных систем и сотен других полезных областей.
Заставим Python работать
Python — полнофункциональный, надежный язык программирования и, по существу, имеет массу свойств. Изучение его может стать задачей эпических масштабов. Однако, помните, что многие способности, такие как GUI инструментарий, имеют для системного администратора низкую ценность. Вот почему в этой статье используются специфичные примеры: они демонстрируют навыки, необходимые для эффективного написания скриптов управления системой.
- Каждый пример использует try: и except: с блоком кода внутри. Это осуществляет элементарную обработку ошибок. Python имеет обширную поддержку для обработки всех видов исключений, но, в рамках примеров этой статьи, я обошелся простой проверкой.
- Эти примеры тестировались с помощью Python 2.5, запущенном на Linux® box, но они должны работать на любой Unix/Linux машине.
Пример 1: Поиск файлов и отображение прав в дружественном формате
- Получает шаблон поиска от пользователя
- Выполняет поиск
- Показывает результаты пользователю
Листинг 1. Поиск файлов и отображение результатов с правами доступа.
# -*- coding: utf-8 -*-
import stat, sys, os, string, commands
#Записываем в переменную шаблон поиска, введенный пользователем
try:
pattern = raw_input(«Введите шаблон поиска:\n»)
#запускаем команду ‘find’ и присваиваем результат переменной
commandString = «find » + pattern
commandOutput = commands.getoutput(commandString)
findResults = string.split(commandOutput, «\n»)
#выводим найденные файлы вместе с правами доступа
print «Файлы:»
print commandOutput
print «=============================== \nPermissions for file «, file, «:»
for level in «USR», «GRP», «OTH»:
for perm in «R», «W», «X»:
if mode & getattr(stat,»S_I»+perm+level):
print level, » имеет «, perm, » права доступа»
else:
print level, » не имеет «, perm, » прав доступа»
except:
print «Возникла проблема! Проверьте сообщение выше.»
- Запрашивает у пользователя шаблон поиска (строки 7-9).
- Печатает список найденных файлов (строки 12-14).
- Используя модуль stat, получает права доступа для каждого найденного файла и отображает их на экране (строки 15-23).
$ python example1.py
Enter the file pattern to search for:
j*.py
Листинг 2. Вывод первого примера
$ python example1.py
Введите шаблон поиска:
j*.py
Файлы:
jim.py
jim2.py~
================================
Permissions for file jim.py :
USR имеет R права доступа
USR имеет W права доступа
USR не имеет X прав доступа
GRP имеет R права доступа
GRP не имеет W прав доступа
GRP не имеет X прав доступа
OTH имеет R права доступа
OTH не имеет W прав доступа
OTH не имеет X прав доступа
Permissions for file jim2.py :
USR имеет R права доступа
USR имеет W права доступа
USR не имеет X прав доступа
GRP имеет R права доступа
GRP не имеет W прав доступа
GRP не имеет X прав доступа
OTH имеет R права доступа
OTH не имеет W прав доступа
OTH не имеет X прав доступа
Пример 2: Выполнение операций с архивом tar при помощи меню
- Если вы нажмете 1, программа предложит выбрать файл в архиве для извлечения в текущую директорию и затем извлечет файл.
- Если вы нажмете 2, программа предложит выбрать файл и затем покажет информацию о нем.
- Если вы нажмете 3, программа выведет список всех файлов в архиве.
# -*- coding: utf-8 -*-
import tarfile, sys
try:
#открываем tar-файл
tar = tarfile.open(sys.argv[1], «r:tar»)
#выводим меню и сохраняем выбор
selection = raw_input(«Введите\n\
1 чтобы извлечь файл\n\
2 чтобы вывести информацию о файле в архиве\n\
3 чтобы показать все файлы в архиве\n\n»)
#выполняем действия, основанные на выборе
if selection == «1»:
filename = raw_input(«введите имя файла для извлечения: «)
tar.extract(filename)
elif selection == «2»:
filename = raw_input(«введите имя файла для просмотра: «)
for tarinfo in tar:
if tarinfo.name == filename:
print «\n\
Имя файла:\t\t», tarinfo.name, «\n\
Размер:\t\t», tarinfo.size, «байт\n»
elif selection == «3»:
print tar.list(verbose=True)
except:
print «При выполнении программы возникла проблема!»
- Открывает tar файл (строка 5).
- Выводит на экран меню и получает выбор пользователя (строки 8-11).
- Если вы нажали 1 (строки 14-16), извлекает файл из архива.
- Если вы нажали 2 (строки 17-23), предоставляет информацию о выбранном файле.
- Если вы нажали 3 (строки 24-25), предоставляет информацию о всех файлах в архиве.
Листинг 4. Меню пользователя для второго примера
$ python example2.py jimstar.tar
Введите
1 чтобы извлечь файл
2 чтобы вывести информацию о файле в архиве
3 чтобы показать все файлы в архиве
Пример 3. Проверка запущенного процесса и отображение информации в дружественном представлении.
Одной из важнейших обязанностей системного администратора является проверка запущенных процессов. Скрипт в Листинге 5 даст вам несколько идей. Программа использует преимущества возможностей Unix: команда grep использует вывод, генерированный другой командой. Это позволит вам уменьшить объем данных, которые в дальнейшем будет анализировать Python.
Программа так же использует модуль string. Изучите этот модуль — вы будете часто его использовать.
Листинг 5. Отображение информации о запущенном процессе в дружественном представлении
# -*- coding: utf-8 -*-
import commands, os, string
program = raw_input(«Введите имя программы для проверки: «)
try:
#выполняем команду ‘ps’ и присваиваем результат списку
output = commands.getoutput(«ps -f|grep » + program)
proginfo = string.split(output)
#выводим результат
print «\n\
Путь:\t\t», proginfo[5], «\n\
Владелец:\t\t\t», proginfo[0], «\n\
ID процесса:\t\t», proginfo[1], «\n\
ID родительского процесса:\t», proginfo[2], «\n\
Время запуска:\t\t», proginfo[4]
except:
print «При выполнении программы возникла проблема!»
- Получает имя процесса для проверки и присваивает его переменной (строка 3).
- Запускает команду ps и добавляет результат в список (строки 7-8).
- Выводит детальную информацию о процессе (строки 11-16).
- Результат работы программы показан в Листинге 6.
$ python example3.py
Введите имя программы для проверки: xterm
Путь: pts/0
Владелец: goga
ID процесса: 26509
ID родительского процесса: 26493
Время запуска: 17:28
Пример 4. Проверка имен пользователей и паролей на соблюдение политики безопасности. Управление безопасностью важная часть работы для каждого системного администратора. Python делает эту работу проще, как показывает последний пример. Программа в Листинге 7 использует модуль pwd для доступа к базе данных паролей. Она проверяет имена пользователей и пароли на соблюдение политики безопасности (в данном случае, имена должны быть как минимум 6 символов в длину, пароли — 8 символов). Есть два предостережения:
Эта программа работает только если у вас есть полные права для доступа к /etc/passwd.
Если вы используете теневые пароли, скрипт работать не будет (однако, в Питон 2.5 есть модуль spwd, который решит эту проблему).
Листинг 7. Проверка имен пользователей и паролей на соблюдение политики безопасности
# -*- coding: utf-8 -*-
import pwd
#заводим счетчики
erroruser = []
errorpass = []
#получаем базу данных паролей
passwd_db = pwd.getpwall()
try:
#проверяем каждое имя пользователя и пароль на валидность
for entry in passwd_db:
username = entry[0]
password = entry [1]
if len(username) < 6:
erroruser.append(username)
if len(password) < 8:
errorpass.append(username)
#выводим результаты на экран
print «Следующие пользователи имеют имена менее чем из 6 символов:»
for item in erroruser:
print item
print «\nСледующие пользователи имеют пароли менее чем из 8 символов:»
for item in errorpass:
print item
except:
print «Возникла проблема при выполнении программы!»
- Инициализирует списки счетчиков (строки 4-5).
- Открывает базу данных паролей и записывает данные в список (строка 8).
- Проверяет имена пользователей и пароли на валидность (строки 12-18).
- Выводит имена и пароли, не соответствующие политике безопасности (строки 21-26).
Листинг 8. Вывод четвертого примера
$ python example4.py
Следующие пользователи имеют имена менее чем из 6 символов::
Guest
Следующие пользователи имеют пароли менее чем из 8 символов:
Guest
johnsmith
joewilson
suejones
- Управление серверами: проверка патчей для конкретного приложения и их автоматическое обновление.
- Журналирование: автоматическая отправка e-mail при появлении в логах особого вида ошибки.
- Сеть: создание Telnet соединения к серверу и слежение за статусом соединения.
Резюме
С его легкостью в изучении, его умением управлять файлами, процессами, строками и числами, и его почти бесконечным массивом вспомогательных модулей, Python — это скриптовый язык, который выглядит так, будто был создан специально для системных администраторов. Python — это ценный инструмент в инструментарии любого системного администратора.