Когда надо накидать себе в систему всяких полезных Python-утилит (типа black, httpie, ansible, poetry и прочих), но не хочется устраивать бардак в глобальном pip, на помощь приходит pipx.
pipx — это утилита, которая позволяет ставить Python-программы в отдельные виртуальные окружения автоматически. То есть каждый инструмент живёт в своей песочнице, не мешает другим и не ломает твой основной python.
⦁
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
— это способ не бояться экспериментов с новыми инструментами. Всё всегда можно снести одним движением.Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥2
Когда на системе установлено несколько версий 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-инструментов/usr/bin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍3
Рассказываю, как на базе Alpine собрать минимальный кастомный ISO с нужными пакетами под конкретную задачу, когда стандартные образы бесполезны.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
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
➕ Преимущества:
pip install addict
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Please open Telegram to view this post
VIEW IN TELEGRAM
😁43💯3🗿3😨2
Если вы администрируете офисную инфраструктуру или домашний сервер печати, важно следить за состоянием очередей: зависшие задания, неработающие принтеры или накопившиеся задания могут мешать пользователям. Этот скрипт проверяет статус 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
проверяет активные задания в очереди*/10 * * * * /path/to/print_monitor.sh
🗣 Особенно полезен для серверов печати, Raspberry Pi-принтшлюзов и офисных станций с несколькими принтерами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
В статье показывается сборка идеального дуэта: Linux как хозяин, Windows на отдельном SSD, загружаемая и нативно, и через KVM c пробросом второго GPU и быстрым удалённым доступом для игр.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
Удалил весь проект, пытался воскресить. Не вышло. Но зато понял: Linux — не только мощный, но ещё и весёлый. Рассказываю, как боль от фейла стала поводом влюбиться в систему. Ну и немного нытья.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Please open Telegram to view this post
VIEW IN TELEGRAM
😁24😨3❤🔥2🤯1
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-*
помогают контролировать размер и «возраст» журналов без отключения логированияPlease open Telegram to view this post
VIEW IN TELEGRAM
👍11❤🔥2
Подробная инструкция, как арендовать и настроить свой выделенный сервер - для защиты своего сетевого трафика от анализа третьими лицами (прослушки) и прочих нежелательных сетевых активностей.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤🔥2
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'}
➕ Преимущества:
dict
, list
, tuple
, lambda
)pip install glom
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁20🌚4👍3⚡2💯1
Если вы хотите знать, кто использует графическую оболочку, когда были последние 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
и т.д.)*/15 * * * * /path/to/xsession_monitor.sh
🗣 Особенно полезен в образовательных или терминальных средах, где важно отслеживать использование GUI.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤🔥2🌚2
Настроим защищённый удалённый доступ через SSH на Cisco и MikroTik в GNS3, подружим их с Kali и Win10, разберём IP-адресацию и маршруты, без лишней воды — только суть и логика действий.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤🔥1
Рассказываю, почему видео про "ужасы" Linux — чушь, терминал — не страшно, а драйвера уже не ад. Разбираем мифы, показываю лайфхаки и делюсь, как самому не облажаться при первом запуске.
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 — важный аспект безопасности. Ниже — полезные команды для анализа и настройки привилегий суперпользователя.
# Показать всех пользователей в группе 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/
— удобное место для изолированных политик доступаPlease open Telegram to view this post
VIEW IN TELEGRAM
👍9❤🔥3
Показываю, как прикрутил Jaeger к микросервисам: от первого запуска до трейсинга продакшена. Плюс немного боли — за документацию, которой почти нет, и радости — за OpenTelemetry и Jaeger v2.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤🔥1
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}'))
➕ Преимущества:
pip install exrex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤🔥2