Гид по технологиям

Как использовать Python для базового администрирования Linux и сетевых задач

5 min read Linux администрирование Обновлено 27 Nov 2025
Python для администрирования Linux и сети
Python для администрирования Linux и сети

Как использовать Python для администрирования Linux и сетевых задач — иллюстрация

Содержание

  • Что такое Python?
  • Установка Python в Linux
  • Работа с модулем os
  • Сетевые операции с модулем socket
  • Подключение к SSH и выполнение команд через Paramiko
  • Когда это не сработает
  • Альтернативные подходы
  • Мини‑методология автоматизации
  • Чек‑лист по ролям
  • Безопасность и лучшие практики
  • Критерии приёмки
  • Часто задаваемые вопросы
  • Итог

Что такое Python?

Python — это универсальный язык программирования с простым синтаксисом и богатой экосистемой библиотек. Определение в одну строку: высокоуровневый, динамически типизированный язык для автоматизации, анализа данных и веб‑разработки.

Установка Python в Linux

Многие дистрибутивы Linux поставляются с Python по умолчанию. Чтобы проверить наличие Python 3, запустите:

python3 --version

Проверка версии Python3

Если Python не установлен, на Ubuntu/Debian можно установить его так:

sudo apt update && sudo apt upgrade -y
sudo apt install python3.10

Альтернативно, Python можно скачать в виде архива .tgz или .xz и собрать из исходников.

Работа с модулем os

Модуль os входит в стандартную библиотеку Python и служит для работы с файловой системой, средой и вызова системных команд. Краткое определение: модуль стандартной библиотеки для взаимодействия с ОС.

Ниже — исправленные и аккуратно оформленные примеры.

Создание каталога:

# Импорт модуля os
import os

# Имя нового каталога
dir_name = "example"

try:
    # Создаёт новый каталог
    os.mkdir(dir_name)
    print(f"Каталог '{dir_name}' успешно создан")
except FileExistsError:
    print(f"Каталог '{dir_name}' уже существует")
except Exception as e:
    print(f"Ошибка: {e}")

Создание каталога с помощью модуля os

Удаление каталога:

import os

# Имя каталога для удаления
dir_name = "example"

try:
    os.rmdir(dir_name)
    print(f"Каталог '{dir_name}' удалён")
except FileNotFoundError:
    print(f"Каталог '{dir_name}' не найден")
except OSError as e:
    print(f"Не удалось удалить каталог: {e}")

Переименование файла или каталога:

import os

current_name = "example"
new_name = "example2.0"

try:
    os.rename(current_name, new_name)
    print(f"'{current_name}' переименован в '{new_name}'")
except FileNotFoundError:
    print(f"'{current_name}' не найден")
except Exception as e:
    print(f"Ошибка: {e}")

Удаление файла:

import os

file_name = "example.txt"

try:
    os.remove(file_name)
    print(f"Файл '{file_name}' удалён")
except FileNotFoundError:
    print(f"Файл '{file_name}' не найден")
except Exception as e:
    print(f"Ошибка: {e}")

Получение текущей рабочей директории и списка файлов:

import os

try:
    cwd = os.getcwd()
    print(cwd)

    content = os.listdir('.')  # содержимое текущей директории
    print(content)
except Exception as e:
    print(f"Ошибка: {e}")

Печать текущей рабочей директории

Определение текущего пользователя:

import os

try:
    user = os.getlogin()
    print(user)
except Exception as e:
    print(f"Ошибка: {e}")

Запуск shell‑команд (внимание к безопасности):

import os

command = "sudo apt update && sudo apt upgrade -y"

try:
    result = os.system(command)
    print(f"Код возврата: {result}")
except Exception as e:
    print(f"Ошибка при выполнении команды: {e}")

Важно: os.system возвращает код завершения процесса. Для более гибкого управления вводом/выводом предпочтительнее использовать subprocess.

Запуск shell команды через Python

Сетевые операции с модулем socket

Модуль socket предназначен для сетевого взаимодействия на низком уровне: создание серверов, клиентов, проверки DNS и адресов. Кратко: стандартный модуль для сокетов и простых сетевых проверок.

Получение хоста и IP адреса локальной машины:

import socket

try:
    host = socket.gethostname()
    ip = socket.gethostbyname(host)
    print(f"IP адрес: {ip}")
    print(f"Имя хоста: {host}")
except Exception as e:
    print(f"Ошибка: {e}")

Проверка IP домена:

import socket

try:
    domain = "duckduckgo.com"
    ip = socket.gethostbyname(domain)
    print(f"IP адрес {domain}: {ip}")
except Exception as e:
    print(f"Ошибка: {e}")

Используйте socket для простых диагностики: проверка доступности порта, быстрый TCP‑сканер или DNS‑lookup.

Подключение по SSH и выполнение команд через Paramiko

Paramiko — это библиотека для SSH в Python. Она полезна для автоматизации входа и выполнения команд на удалённых Unix‑машинах.

Установка:

pip3 install paramiko

Установка Paramiko через pip3

Пример использования (с учётом безопасности):

import paramiko

ip = '127.0.0.1'
port = 22
user = 'example'
password = 'example'
command = 'uname -a'

try:
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(ip, port=port, username=user, password=password)
    stdin, stdout, stderr = ssh.exec_command(command)
    print(stdout.read().decode())
    ssh.close()
except Exception as e:
    print(f"Ошибка SSH: {e}")

Важно: по возможности используйте аутентификацию ключами, а не пароли.

Примечание: при сетевых проблемах полезно запускать traceroute и диагностировать маршруты.

Когда это не сработает

  • Удалённая система не поддерживает SSH или использует нестандартные политики аутентификации.
  • Скрипт запускает команды с правами root без должной проверки — это риск и может быть запрещено политиками безопасности.
  • Для крупномасштабной конфигурации и оркестрации ручные скрипты обычно уступают инструментам уровня инфраструктуры (см. раздел «Альтернативы»).

Альтернативные подходы

  • Ansible — декларативная конфигурация и управление на базе SSH (хорош для массовых задач).
  • Fabric — высокоуровневый инструмент для удалённых команд и деплоя на Python.
  • Salt / Puppet / Chef — для более сложной оркестрации и состояния инфраструктуры.
  • Использование systemd timers и cron для расписаний, если требуется простая периодичность.

Мини‑методология автоматизации (шаги)

  1. Определите повторяемую задачу и критерий успеха.
  2. Напишите минимальный скрипт для локальной проверки (idempotent по возможности).
  3. Логируйте действия и ошибки в файл.
  4. Проведите тест в изолированной среде (контейнер/VM).
  5. Переведите в планировщик (cron/systemd) или интегрируйте в CI/CD.
  6. Документируйте и добавьте тесты приёмки.

Чек‑лист по ролям

Для сисадмина:

  • Проверить доступы и права на выполнение скрипта.
  • Настроить ротацию логов.
  • Использовать виртуальные окружения (venv) для библиотек.

Для DevOps инженера:

  • Интеграция с CI/CD.
  • Проверка на совместимость версий Python.
  • Управление секретами через Vault/Secrets Manager.

Для разработчика инструмента:

  • Обеспечить idempotence команд.
  • Написать тесты и документацию.

Безопасность и лучшие практики

  • Не храните пароли в коде. Используйте ключи SSH и агент ssh‑agent или менеджеры секретов.
  • Приведите права до минимально необходимых (least privilege).
  • Ведение логов: логируйте события, но не записывайте секреты в лог.
  • Валидируйте входные данные перед передачей в shell. Предпочитайте subprocess.run с массивом аргументов вместо форматированной строки.
  • Ограничьте использование sudo в автоматических задачах и документируйте причины.

Критерии приёмки

  • Скрипт выполняет задачу без ручного вмешательства на тестовой машине.
  • Код возвращает предсказуемые коды завершения и пишет логи.
  • Нет утечек секретов в логах или репозиториях.
  • Прохождение smoke‑теста: проверка состояния после выполнения (файлы, службы, конфигурация).

Часто задаваемые вопросы

1. Нужен ли Python 3 для этих библиотек?

Рекомендуется Python 3. Многие примеры и зависимости ориентированы на Python 3. Python 2 устарел и не поддерживается.

2. Нужно ли устанавливать os и socket?

Нет. os и socket входят в стандартную библиотеку Python и устанавливаются вместе с интерпретатором.

3. Можно ли использовать Paramiko для входа в Windows?

Paramiko реализует SSH‑протокол для Unix‑подобных систем; подключение к Windows через SSH возможно, если на Windows настроен OpenSSH‑сервер, но некоторые функции и команды будут отличаться.

Итог

Python — мощный инструмент для автоматизации рутинных задач на Linux. Для единичных операций и быстрой диагностики подходят os и socket. Для удалённого выполнения команд используйте Paramiko, но для масштабируемого управления инфраструктурой задумайтесь о Ansible или похожих решениях. Всегда следуйте принципам безопасности и тестируйте скрипты в изолированной среде.

Важно: перед автоматизацией критичных изменений убедитесь, что у вас есть резервные копии и план отката.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Восстановление кэша значков в Windows
Windows

Восстановление кэша значков в Windows

Стрелки не работают в Excel — быстрое решение
Excel

Стрелки не работают в Excel — быстрое решение

Шифрование USB‑накопителя с VeraCrypt
Безопасность

Шифрование USB‑накопителя с VeraCrypt

PowerShell: история команд — просмотр и сохранение
PowerShell

PowerShell: история команд — просмотр и сохранение

Nandroid — полная резервная копия Android
Android.

Nandroid — полная резервная копия Android

Ошибка 0x800f0806 в Windows 11 22H2
Windows 11

Ошибка 0x800f0806 в Windows 11 22H2