PyLinux - Всё о Linux, Python и IT
10.4K subscribers
1.4K photos
39 videos
2 files
1.28K links
У нас ты найдешь 👇

- библиотеки и скрипты python
- инструменты linux
- полезный софт
- важнейшие новости из мира IT

Связь с админом: @ghostifix

Купить рекламу: https://telega.in/c/pylinux0

РКН: 5999153523
Download Telegram
📱 pipx — простой способ ставить Python-утилиты изолированно

Когда надо накидать себе в систему всяких полезных Python-утилит (типа black, httpie, ansible, poetry и прочих), но не хочется устраивать бардак в глобальном pip, на помощь приходит pipx.

➡️ Для чего нужен pipx?

pipx — это утилита, которая позволяет ставить Python-программы в отдельные виртуальные окружения автоматически. То есть каждый инструмент живёт в своей песочнице, не мешает другим и не ломает твой основной python.

💬 Чем pipx отличается от pip?

pip устанавливает пакеты глобально или в активное venv — и привет, конфликты версий.
pipx ставит каждый инструмент в свой venv и делает его доступным в $PATH. Это значит, что, например, black-22.0 не затрёт тебе black-21.0, если вдруг почему-то понадобились обе версии.

📌 Как не словить конфликт зависимостей?

Используй pipx для CLI-инструментов и всяких dev-tools. Всё, что ты запускаешь из терминала как отдельную команду — кандидат для установки через pipx. Так ты не убьёшь свои проекты и не сломаешь глобальный Python.

🟢 Быстрый старт:

Установка pipx (если ещё нет):

python3 -m pip install --user pipx
python3 -m pipx ensurepath


Поставить утилиту (например, httpie):

pipx install httpie


Теперь httpie доступен в любом терминале, но живёт отдельно.

⚙️ Ещё пара команд:

⦁ Обновить все утилиты разом:
pipx upgrade-all


⦁ Посмотреть, что установлено:
pipx list


⦁ Удалить ненужное:
pipx uninstall black


⦁ Установить любую консольную утилиту из локальной папки:
pipx install ./my-local-tool


💡 Вывод: pipx — это способ не бояться экспериментов с новыми инструментами. Всё всегда можно снести одним движением.

🔗 Документация

😎 PyLinux | #tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥2
🔧 Управление альтернативами (версии интерпретаторов, компиляторов и CLI) в Linux

Когда на системе установлено несколько версий Python, Java, gcc или других утилит, важно уметь управлять тем, какая версия используется по умолчанию. Для этого в Linux есть мощный инструмент — update-alternatives.

📌 Полезные команды

# Показать текущую настройку альтернативы для java
sudo update-alternatives --display java

# Добавить новую альтернативу (например, для Python 3.11)
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.11 1

# Переключиться между доступными версиями python
sudo update-alternatives --config python

# Удалить альтернативу
sudo update-alternatives --remove python /usr/bin/python3.11

# Просмотреть все управляемые альтернативы
sudo update-alternatives --get-selections


🟢 update-alternatives помогает централизованно управлять симлинками для CLI-инструментов
🟢 Удобно использовать для переключения между несколькими версиями Python, Java, gcc, editor и т.д.
🟢 Позволяет задать приоритет и выбрать нужную версию без ручного редактирования /usr/bin

🗣 Эти команды особенно полезны разработчикам, системным администраторам и тем, кто тестирует приложения на разных версиях зависимостей.

😎 PyLinux | #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍3
🔜 Сборка кастомного ISO образа Alpine Linux

Рассказываю, как на базе Alpine собрать минимальный кастомный ISO с нужными пакетами под конкретную задачу, когда стандартные образы бесполезны.

🖥 Перейти к статье

😎 PyLinux | #articles
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
👩‍💻 Библиотека Python: addict

addict — это минималистичная библиотека, превращающая обычные словари в объекты с доступом к ключам через точку (dot notation), создавая при этом вложенные поля на лету.

Идеальна, если ты хочешь создавать или модифицировать конфигурации, структуры данных или JSON-like объекты в удобной форме без лишней возни.

⚙️ Пример использования
from addict import Dict

config = Dict()

# Автоматически создаёт вложенные структуры
config.user.name = "Alice"
config.user.age = 30
config.theme.dark_mode = True

print(config) # {'user': {'name': 'Alice', 'age': 30}, 'theme': {'dark_mode': True}}

# Обратная совместимость
print(config['user']['name']) # Alice


Преимущества:


🟢 Автоматически создаёт вложенные ключи при доступе
🟢 Работает как обычный словарь — можно использовать [] и методы dict
🟢 Отлично подходит для генерации конфигов и динамичных структур

✔️ Установка

pip install addict


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Девопсы тут?

😎 PyLinux | #memes
Please open Telegram to view this post
VIEW IN TELEGRAM
😁43💯3🗿3😨2
🖨 Мониторинг очередей печати в Linux (CUPS)

Если вы администрируете офисную инфраструктуру или домашний сервер печати, важно следить за состоянием очередей: зависшие задания, неработающие принтеры или накопившиеся задания могут мешать пользователям. Этот скрипт проверяет статус CUPS-принтеров и журналирует очередь печати.

⚙️ Исходный код

#!/bin/bash

LOG_FILE="/var/log/print_queue_monitor.log"

echo "🖨 Проверка состояния принтеров и очередей... $(date)" | tee -a "$LOG_FILE"

# Проверяем статус всех установленных принтеров
lpstat -p | tee -a "$LOG_FILE"

# Показываем текущую очередь заданий
QUEUE=$(lpq)
echo "📄 Очередь заданий:" | tee -a "$LOG_FILE"
echo "$QUEUE" | tee -a "$LOG_FILE"

# Выводим предупреждение, если очередь не пуста
if echo "$QUEUE" | grep -q "no entries"; then
echo " Очередь пуста." | tee -a "$LOG_FILE"
else
echo "⚠️ Обнаружены задания в очереди!" | tee -a "$LOG_FILE"
fi

echo " Проверка завершена." | tee -a "$LOG_FILE"


🟢 lpstat показывает состояние каждого принтера
🟢 lpq проверяет активные задания в очереди
🟢 Скрипт логирует результаты — удобно для последующего анализа или автоматизации.

➡️ Добавьте в crontab для периодической проверки:
*/10 * * * * /path/to/print_monitor.sh


🗣 Особенно полезен для серверов печати, Raspberry Pi-принтшлюзов и офисных станций с несколькими принтерами.


😎 PyLinux | #scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🔜 Мой идеальный компьютер

В статье показывается сборка идеального дуэта: Linux как хозяин, Windows на отдельном SSD, загружаемая и нативно, и через KVM c пробросом второго GPU и быстрым удалённым доступом для игр.

🖥 Перейти к статье

😎 PyLinux | #articles
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
➡️ Уронил проект — полюбил Linux [EN]

Удалил весь проект, пытался воскресить. Не вышло. Но зато понял: Linux — не только мощный, но ещё и весёлый. Рассказываю, как боль от фейла стала поводом влюбиться в систему. Ну и немного нытья.

📱 Ссылка на источник

😎 PyLinux | #videos
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Разумеется

😎 PyLinux | #memes
Please open Telegram to view this post
VIEW IN TELEGRAM
😁24😨3❤‍🔥2🤯1
📜 Анализ журналов systemd (journalctl) в Linux

systemd-journald ведёт централизованный журнал событий ядра и пользователей. Ниже — команды, которые помогут быстро находить нужную информацию, следить за сервисами и управлять объёмом логов.

📌 Полезные команды

# Показать журнал текущей загрузки
journalctl -b

# Вывести последние 100 строк общего журнала
journalctl -n 100

# Показать логи конкретного сервиса (например, nginx)
journalctl -u nginx.service

# Следить за событиями сервиса в реальном времени
journalctl -f -u ssh

# Фильтровать только ошибки и критические сообщения за текущую загрузку
journalctl -p err..alert -b

# Просмотреть журнал предыдущей загрузки
journalctl -b -1

# Ограничить общий размер журналов до 500 МБ
sudo journalctl --vacuum-size=500M

# Удалить записи старше 10 дней
sudo journalctl --vacuum-time=10d


🟢 journalctl -b/-1 разделяет логи по загрузкам — удобно искать сбои после перезагрузки
🟢 -u и -f позволяют дебажить сервисы в реальном времени
🟢 -p фильтрует сообщения по уровню важности, убирая «шум»
🟢 Параметры --vacuum-* помогают контролировать размер и «возраст» журналов без отключения логирования

🗣 Эти команды пригодятся при отладке сервисов systemd, поиске ошибок после обновлений, а также для регулярного обслуживания серверов.

😎 PyLinux | #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤‍🔥2
🔜 Гайд на виртуальный частный сервер (VPS) с нуля

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

🖥 Перейти к статье

😎 PyLinux | #articles
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤‍🔥2
👩‍💻 Библиотека Python: glom

glom — это мощный инструмент для безопасного доступа, трансформации и извлечения данных из сложных вложенных структур (dict, list, JSON и др.).

Идеальна, если ты работаешь с вложенными данными из API, конфигов или сериализованных структур и хочешь избежать множества try/except и проверок ключей.

⚙️ Пример использования
from glom import glom

data = {
"user": {
"profile": {
"name": "Alice",
"contacts": {
"email": "alice@example.com"
}
}
}
}

# Извлекаем вложенное значение
name = glom(data, 'user.profile.name')
print(name) # Alice

# Значение по умолчанию, если путь не существует
phone = glom(data, 'user.profile.contacts.phone', default='N/A')
print(phone) # N/A

# Преобразование структуры
spec = {
"username": "user.profile.name",
"email": "user.profile.contacts.email"
}
user_info = glom(data, spec)
print(user_info) # {'username': 'Alice', 'email': 'alice@example.com'}


Преимущества:


🟢 Удобная работа с deeply nested структурами
🟢 Гибкие шаблоны и спецификации извлечения (dict, list, tuple, lambda)
🟢 Возможность задавать значения по умолчанию и валидировать структуру
🟢 Подходит для ETL, API data extraction и конфигураций

✔️ Установка

pip install glom


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁20🌚4👍32💯1
🖥 Автоматическая проверка и логирование X-сессий в Linux

Если вы хотите знать, кто использует графическую оболочку, когда были последние X-сессии или сколько времени пользователь проводит в GUI — этот скрипт поможет отследить активность в X-среде (например, Xorg, X11).

⚙️ Исходный код

#!/bin/bash

LOG_FILE="/var/log/xsession_monitor.log"
echo "🖥 Проверка X-сессий... $(date)" | tee -a "$LOG_FILE"

# Проверка активных X-сессий
SESSIONS=$(who | grep -E "(:[0-9]+)")

if [ -n "$SESSIONS" ]; then
echo "📋 Найдены активные X-сессии:" | tee -a "$LOG_FILE"
echo "$SESSIONS" | tee -a "$LOG_FILE"
else
echo "🚫 Активных X-сессий не обнаружено." | tee -a "$LOG_FILE"
fi

# Проверка логов X-сервера (опционально)
if [ -f /var/log/Xorg.0.log ]; then
echo "🧾 Последние строки из Xorg.0.log:" | tee -a "$LOG_FILE"
tail -n 5 /var/log/Xorg.0.log | tee -a "$LOG_FILE"
fi

echo " Проверка завершена." | tee -a "$LOG_FILE"


🟢 who позволяет отслеживать графические сеансы (:0, :1 и т.д.)
🟢 Логирование состояния X-сессий удобно для аудита GUI-активности
🟢 Поддерживает большинство стандартных оконных менеджеров: Xfce, GNOME, KDE и др.

➡️ Добавьте в crontab для периодической проверки:
*/15 * * * * /path/to/xsession_monitor.sh


🗣 Особенно полезен в образовательных или терминальных средах, где важно отслеживать использование GUI.


😎 PyLinux | #scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤‍🔥2🌚2
🔜 Настройка межсетевого SSH-доступа в многосегментной сети Cisco и MikroTik в среде GNS3

Настроим защищённый удалённый доступ через SSH на Cisco и MikroTik в GNS3, подружим их с Kali и Win10, разберём IP-адресацию и маршруты, без лишней воды — только суть и логика действий.

🖥 Перейти к статье

😎 PyLinux | #articles
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤‍🔥1
➡️ Тебе Врут Про Linux

Рассказываю, почему видео про "ужасы" Linux — чушь, терминал — не страшно, а драйвера уже не ад. Разбираем мифы, показываю лайфхаки и делюсь, как самому не облажаться при первом запуске.

📱 Ссылка на источник

😎 PyLinux | #videos
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Please open Telegram to view this post
VIEW IN TELEGRAM
😁27💯7🗿2
🛡 Аудит и управление правами sudo в Linux

Контроль над sudo — важный аспект безопасности. Ниже — полезные команды для анализа и настройки привилегий суперпользователя.

📌 Полезные команды

# Показать всех пользователей в группе sudo
getent group sudo

# Проверить, какие команды разрешены текущему пользователю
sudo -l

# Найти все попытки использования sudo (включая неудачные)
grep 'sudo' /var/log/auth.log

# Показать конфигурацию sudo и дополнительные правила
sudo cat /etc/sudoers
sudo ls /etc/sudoers.d/

# Проверить конфигурацию sudoers на ошибки
sudo visudo -c

# Добавить правило для пользователя: перезапуск nginx без пароля
echo 'username ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx' | sudo tee /etc/sudoers.d/nginx-restart


🟢 sudo -l помогает понять, какие команды доступны
🟢 visudo -c защищает от ошибок при редактировании
🟢 /etc/sudoers.d/ — удобное место для изолированных политик доступа

🗣 Подходит для системных администраторов, DevOps-инженеров и всех, кто управляет серверным доступом.

😎 PyLinux | #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤‍🔥3
🔜 Jaeger v2

Показываю, как прикрутил Jaeger к микросервисам: от первого запуска до трейсинга продакшена. Плюс немного боли — за документацию, которой почти нет, и радости — за OpenTelemetry и Jaeger v2.

🖥 Перейти к статье

😎 PyLinux | #articles
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤‍🔥1
👩‍💻 Библиотека Python: exrex

exrex — это генератор строк, соответствующих заданному регулярному выражению. В отличие от стандартной библиотеки re, он не проверяет соответствие строки паттерну, а генерирует строки, которые этому паттерну соответствуют.

⚙️ Пример использования
import exrex

# Сгенерировать одну случайную строку по шаблону
print(exrex.getone(r'[A-Z]{3}\d{2}'))
# ➔ Например: 'QWE84'

# Все возможные строки (для ограниченных шаблонов)
for s in exrex.generate(r'ab[1-2]'):
print(s)
# ➔ ab1, ab2

# Количество всех возможных совпадений (если конечное множество)
count = sum(1 for _ in exrex.generate(r'[A-B][1-3]'))
print(count) # ➔ 6

# Выводит шаблон в обратную сторону (reverse regex)
print(exrex.getone(r'(foo|bar){2}\d{1,2}'))


Преимущества:


🟢 Генерация строк по regex — удобно для автотестов и дебага
🟢 Поддержка большинства регулярных выражений Python
🟢 Умеет как случайную генерацию, так и полное перечисление
🟢 Может использоваться в CLI или импортироваться в скрипты

✔️ Установка

pip install exrex


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤‍🔥2