PYTHONOMANIA
273 subscribers
195 photos
3 videos
1 file
616 links
Откройте для себя мир Python в PYTHONOMANIA!

Идеально подходит как для начинающих, так и для опытных разработчиков. Присоединяйтесь к нам, чтобы достичь совершенства в Python!

Сайт: https://pythonomania.github.io/
Download Telegram
📱Staged-script.

Stage-script
— это пакет, который позволяет разделять автоматизационные скрипты на этапы.

🔘Python - идеальный язык для определенных видов автоматизации инфраструктуры. Автоматизация действий пользователя часто включает выполнение серии этапов.

🔘Пользователь может захотеть выполнить все этапы подряд или только их часть, и в зависимости от ситуации, некоторые этапы могут потребовать повторного выполнения.

🔘После завершения скрипта было бы идеально, если бы он мог точно сообщить пользователю, что именно было выполнено, для облегчения воспроизведения.

❗Staged-script стремится облегчить разработку таких автоматизационных скриптов. Он прост в использовании, но также предоставляет мощные функции для опытных пользователей.

#Python #Automation #Infrastructure #StagedScript #DevOps #Scripting #Tech #Coding #Programming #TechTips

📱Ссылка на репозиторий:
https://github.com/sandialabs/staged-script
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥3👍1
📱Pexpect.

Pexpect — это Python-библиотека, которая позволяет управлять внешними программами, как будто вы сами с ними взаимодействуете через терминал.

🔹Что умеет:

🔘Автоматизация ssh, ftp, telnet, passwd и других интерактивных CLI-программ.

🔘Тестирование софта, скрипты установки, деплой.

🔘Ждёт нужные шаблоны в выводе программ и реагирует на них.

🔘Работает как классический Expect, но написан полностью на Python.

🔘Поддержка Unix-систем (через pty), частичная поддержка Windows.

✅Отличный инструмент для автоматизации того, что раньше делалось руками в терминале.

#Pexpect #Python #Automation #CLI #DevOps #SSH #Expect #OpenSource #Scripting #Terminal #Testing #Unix #PythonTools

📱Ссылка на репозиторий:
https://github.com/pexpect/pexpect
Please open Telegram to view this post
VIEW IN TELEGRAM
14⚡3🔥3
📱Bashautom.

Bashautom
- это легковесная Python-библиотека для управления персистентными (долгоживущими) сессиями Bash, сохраняющая контекст и состояние шелла между последовательными командами.

При использовании стандартного subprocess.run() на каждый вызов порождается абсолютно новый изолированный процесс: изменения рабочей директории (cd), экспортированные переменные (export) и активированные виртуальные окружения (source .env) моментально сбрасываются. Библиотека pexpect решает проблему персистентности, но завязана на хрупкий интерактивный парсинг шелл-промптов.

bashautom держит один живой процесс /bin/bash в фоновом режиме и возвращает чистый структурированный результат по каждой команде без необходимости писать регулярные выражения и шаблоны expect.

🔹Ключевые возможности:

🔘Персистентность окружения: Переменные среды, активная директория (cwd) и результаты выполнения скриптов через source сохраняются между вызовами метода .execute().

🔘Структурированный CommandResult: Каждая команда возвращает подробный статус: stdout, stderr, exit_code, флаг success, флаг timed_out и точное время выполнения в секундах (duration).

🔘Безопасные таймауты: Если команда превышает заданный лимит времени (timeout=N), она принудительно прерывается, но сама bash-сессия остается живой и готовой принимать следующие команды.

🔘Потоковый вывод в реальном времени: Поддержка коллбеков (stream_callback) для чтения stdout/stderr по мере генерации (полезно для логов сборки и долгих циклов).

🔘Менеджер сессий (SessionManager): Удобное создание, координация и параллельное управление несколькими именованными bash-сессиями в разных директориях.

🔘Встроенные хелперы: Быстрый доступ к состоянию процесса через методы set_env(), get_env(), get_cwd(), проверку PID и флага alive.

💻Пример использования:
from bashautom import Session

with Session() as s:
# Состояние сохраняется от шага к шагу:
s.execute("cd /opt/myproject")
s.execute("source .env")
s.execute("export BUILD_ID=42")

# Выполнение с контролем времени
result = s.execute("make build", timeout=120)

if result.success:
print(f"Сборка завершена за {result.duration:.2f} сек")
print(result.stdout)
else:
print(f"Ошибка (код {result.exit_code}):", result.stderr)


Потоковый вывод (Streaming):

from bashautom import Session
from bashautom.session import StreamEvent

def on_output(event: StreamEvent):
print(f"[{event.stream}] {event.data.strip()}")

with Session() as s:
s.execute("for i in 1 2 3; do echo $i; sleep 0.5; done", stream_callback=on_output)


📦Установка:
pip install bashautom


✅Требования: Python 3.10+, поддержка Linux и macOS. Лицензия: MIT.

#Bashautom #Python #Bash #DevOps #Automation #Linux #MacOS #CLI #Scripting #OpenSource #DevTools

📱Ссылка на репозиторий:
https://github.com/huskago/bashautom
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31