Python + bash
Если вам часто требуется запускать shell команды из Python-кода, какой способ вы используете?
Самый низкоуровневый это функция os.system(), либо os.popen(). Рекомендованный способ это subprocess.call(). Но это всё еще достаточно неудобно.
Советую обратить своё внимание на очень крутую библиотеку sh.
Что она умеет?
🔸 удобный синтаксис вызова команд как функций
# os
import os
os.system("tar cvf demo.tar ~/")
# subprocess
import subprocess
subprocess.call(['tar', 'cvf', 'demo.tar', '~/'])
# sh
import sh
sh.tar('cvf', 'demo.tar', "~/")
🔸 простое создание функции-алиаса для длинной команды
fn = sh.lsof.bake('-i', '-P', '-n')
output = sh.grep(fn(), 'LISTEN')
в этом примере также задействован пайпинг
🔸 удобный вызов команд от sudo
with sh.contrib.sudo:
print(ls("/root"))
Такой запрос спросит пароль. Чтобы это работало нужно соответствующим способом настроить юзера.
А вот вариант с вводом пароля через код.
password = "secret"
sudo = sh.sudo.bake("-S", _in=password+"\n")
print(sudo.ls("/root"))
Это не все фишки. Больше интересных примеров смотрите в документации.
Специально для Windows💀 юзеров
#libs#linux
👩💻 Ansible для начинающих + практический опыт.
• Бесплатный мини-курс, который знакомит любого абсолютного новичка в DevOps с основными моментами Ansible с помощью простых практических упражнений, которые вы можете практиковать прямо в браузере. Всего будет 38 уроков, 2 часа 34 минуты видео и 63 теста. Программа следующая:
• Введение в Ansible:
➡Обзор Ansible;
➡Демо: установка среды;
➡Демо: установка Ansible;
➡Знакомство с YAML;
➡Демо: наши упражнения;
➡Lab: YAML;
➡Тест: Introduction.
• Основные понятия Ansible:
➡Inventory;
➡Lab: Inventory;
➡Тест: Inventory;
➡Демо: особенности Windows;
➡Playbooks;
➡Lab: Playbooks;
➡Тест: Playbooks;
➡Демо: playbooks;
➡Modules;
➡Lab: Modules;
➡Variables;
➡Lab: Variables;
➡Тест: Variables;
➡Демо: Atom IDE.
• Механика Ansible:
➡Conditionals;
➡Lab: Conditionals;
➡Loops;
➡Lab: Loops;
➡Тест: Loops;
➡Roles;
➡Демо: roles;
➡Тест: Roles;
➡О приложении;
➡Lab: App Deploy;
➡Демо: развертывание приложения.
➡️https://stepik.org/course/123806
#Ansible#DevOps
💬 Ansible + Grafana Loki: Настраиваем отправку уведомлении в чат после логина на сервер по SSH.
• В этой статье мы развёрнем через Terraform несколько серверов в Yandex.Cloud, а затем при помощи Ansible настроим необходимый софт на каждом сервере. У нас будет основной сервер, где будет развёрнут Loki (система агрегирования логов) и Grafana (инструмент для визуализации данных), на серверах, которые мы хотим отслеживать, будет установлен Promtail (агент для сбора и отправки логов). Мы разберёмся с тем, как отслеживать входы на сервер, а затем в удобном формате отправлять об этом уведомления в чат Telegram с помощью вышеуказанных сервисов.
• Помимо этого, вы можете использовать Grafana не только для отслеживания коннектов к вашим серверам. Вы также можете развернуть Node-Exporter(-s)+Prometheus для мониторинга, чтобы отслеживать производительность серверов.
➡️https://habr.com/ru/articles/795855/
#Ansible#SSH#ИБ#DevOps
#jinja#ansible#ansible_collection#collection#devsec#hacktoberfest#hardening#linux#mysql_hardening#nginx#nginx_hardening#os_hardening#playbook#protection#role#ssh_hardening#sysctl
devsec.hardening is an Ansible collection that battle-tests security hardening for Linux (CentOS, AlmaLinux, Rocky, Debian, Ubuntu, etc.), MySQL, Nginx, and SSH, matching DevSec Inspec baselines. Install via `ansible-galaxy collection install devsec.hardening` and apply roles like os_hardening easily. It saves you time by automating secure configs across servers, cuts manual work, boosts compliance, and shrinks attack surfaces for safer systems.
https://github.com/dev-sec/ansible-collection-hardening