Найти в Дзене
Zylonix

🚀 Как автоматически запускать Bash-скрипты на сервере через SSH с Python

В наше время серверы управляют всем: от небольших сайтов до сложных облачных сервисов. Часто возникает ситуация, когда нужно автоматически запускать команды на сервере:
✅ Разблокировать пользователя в OpenVPN
✅ Перезапустить сервис или контейнер
✅ Развернуть обновления и выполнить настройку
✅ Собрать логи с сервера Обычно для этого используют SSH, но входить вручную и вводить команды — неэффективно. Можно сделать автоматизированное подключение и запуск команд прямо из Python! 🎯 В этой статье разберем, как с помощью Python можно автоматически входить по SSH, запускать bash-скрипты и даже оставаться в интерактивной сессии! 🚀 Чтобы запустить команды на сервере через Python, воспользуемся библиотекой paramiko. ✅ Позволяет подключаться к удаленным серверам по SSH
✅ Выполняет команды без необходимости вручную вводить их в терминале
✅ Может работать в интерактивном режиме, как будто вы зашли по ssh user@host Перед началом работы установите paramiko командой через cmd: pip install paramiko
Оглавление

🔥 Почему это актуально?

В наше время серверы управляют всем: от небольших сайтов до сложных облачных сервисов. Часто возникает ситуация, когда нужно автоматически запускать команды на сервере:
✅ Разблокировать пользователя в OpenVPN
✅ Перезапустить сервис или контейнер
✅ Развернуть обновления и выполнить настройку
✅ Собрать логи с сервера

Обычно для этого используют SSH, но входить вручную и вводить команды — неэффективно. Можно сделать автоматизированное подключение и запуск команд прямо из Python! 🎯

В этой статье разберем, как с помощью Python можно автоматически входить по SSH, запускать bash-скрипты и даже оставаться в интерактивной сессии! 🚀

🔧 Что нам понадобится?

Чтобы запустить команды на сервере через Python, воспользуемся библиотекой paramiko.

📌 Что делает данная библиотека?

✅ Позволяет подключаться к удаленным серверам по SSH
✅ Выполняет команды без необходимости вручную вводить их в терминале
✅ Может работать в интерактивном режиме, как будто вы зашли по ssh user@host

📌 Как установить?

Перед началом работы установите paramiko командой через cmd:

pip install paramiko

🚀 Шаг 1. Python-скрипт для автоматического запуска команд через SSH

Давайте напишем скрипт, который:

  • Подключается к серверу
  • Запускает bash-скрипт с переменной
  • Оставляет пользователя в интерактивной SSH-сессии

🔥 Готовый код:

Рисунок 1 - готовый Python скрипт подключения
Рисунок 1 - готовый Python скрипт подключения

🔗 Полный код доступен на GitHub: https://clck.ru/3G8vjx

🚀 Шаг 2. Bash-скрипт для тестирования

Теперь напишем простой .sh-скрипт, который принимает имя пользователя и выполняет команду.

Рисунок 2 - тестовый скрипт для проверки работы python скрипта
Рисунок 2 - тестовый скрипт для проверки работы python скрипта

🔐 Шаг 3. Даем пользователю доступ к выполнению скрипта

Если .sh-файл лежит в /root/, а пользователь username должен его запускать, выполните:

chmod +x /root/ssh_test/setup_script.sh

chown root:username /root/ssh_test/setup_script.sh

chmod 750 /root/ssh_test/setup_script.sh

Если скрипт требует root-доступ, добавьте в sudoers:

visudo

Добавьте строку:

username ALL=(ALL) NOPASSWD: /root/ssh_test/setup_script.sh

Теперь username сможет запускать скрипт через sudo:

sudo /root/ssh_test/setup_script.sh

🎯 Шаг 4. Демонстрация работы кода

Рисунок 3 - демонстрация работы скрипта
Рисунок 3 - демонстрация работы скрипта

✅ Итог

✅ Python-скрипт автоматически подключается по SSH и запускает команду
✅ После выполнения скрипта остается
интерактивная сессия (как при ssh user@host)
✅ Можно вводить команды вручную, а для выхода использовать exit

🔥 Где это можно применять?

📌 Автоматическое администрирование серверов
📌
Удаленный запуск команд и скриптов
📌
Упрощение работы DevOps-инженеров

💬 Какие еще задачи можно автоматизировать через SSH? Делитесь в комментариях! 🚀

🔗 Полезные ссылки

📖 Документация paramiko: https://docs.paramiko.org/
🐧
Команды Bash: https://tldp.org/LDP/abs/html/
🔧
Игра нашей студии для энергичных компаний: https://dzen.ru/a/Z54QifoT4gmwinFI

#python #linux #ssh #automation #bash #devops #sysadmin #скрипты #сервер #разработка