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

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

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

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

РКН: 5999153523
Download Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣32
🖱 Управление мышью и тачпадом из терминала в Linux

Иногда нужно временно отключить тачпад, изменить поведение кнопок мыши или включить "tap-to-click". Особенно полезно для ноутбуков, серверов с X11, или в случае проблем с внешними устройствами.

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

# Показать список всех устройств ввода (мыши, тачпады и др.)
xinput list

# Узнать ID устройства и его свойства
xinput list-props <ID>

# Отключить устройство (например, тачпад)
xinput disable <ID>

# Включить устройство обратно
xinput enable <ID>

# Включить "тап" по тачпаду как клик (если поддерживается)
xinput set-prop <ID> "libinput Tapping Enabled" 1

# Назначить другое поведение для кнопок мыши (например, инвертировать)
xinput set-button-map <ID> 3 2 1

# Постоянное применение параметров через ~/.xprofile или ~/.xinitrc
echo 'xinput set-prop <ID> "libinput Tapping Enabled" 1' >> ~/.xprofile


🟢 xinput работает в окружениях X11 и помогает управлять вводом
🟢 Можно отключать/включать устройства, переназначать кнопки
🟢 Особенно полезно на ноутбуках с "шалящим" тачпадом или при подключении внешней мыши

🗣 Полезный трюк для Linux-ноутбуков, стендов, хостов с X и лёгких оконных менеджеров.

😎 PyLinux | #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
🔜 Python в Enterprise-разработке: почему популярность ЯП распространилась и на корпоративный сектор. Часть 1

Почему Python — не просто язык для скриптов, а основа крупных систем в корпорациях. Рассказываю, как типизация, dataclasses, Pydantic 2 и msgspec сделали его надёжным бизнес-инструментом.

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

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

pyrsistent — это функциональная библиотека для работы с неизменяемыми (immutable) структурами данных: списками, словарями, множествами и др.

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

⚙️ Пример использования
from pyrsistent import pvector, pmap

# Неизменяемый список
v = pvector([1, 2, 3])
v2 = v.append(4)

print(v) # ➔ [1, 2, 3]
print(v2) # ➔ [1, 2, 3, 4]

# Неизменяемый словарь
m = pmap({"user": "alice", "active": True})
m2 = m.set("active", False)

print(m["user"]) # ➔ alice
print(m2["active"]) # ➔ False

# Все оригинальные данные остаются неизменными
print(m["active"]) # ➔ True


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


🟢 Immutable-структуры: безопасны при изменениях и копировании
🟢 Удобно для undo/redo, откатов, детерминированных тестов
🟢 Поддержка вложенных структур и встроенная сериализация
🟢 Лёгкая интеграция в любой Python-проект (в отличие от dataclasses и copy.deepcopy)

✔️ Установка

pip install pyrsistent


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

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥6👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁14👍4💯1
🧠 Проверка доступности ОЗУ и логирование пикового использования в Linux

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

Этот скрипт проверяет доступную память, логирует предупреждения и может использоваться для базового анализа производительности.

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

#!/bin/bash

LOG_FILE="/var/log/mem_monitor.log"
THRESHOLD_MB=500 # Порог доступной памяти (в мегабайтах)

echo "🔍 Проверка памяти... $(date)" | tee -a "$LOG_FILE"

# Получаем доступную память в МБ
AVAIL_MEM=$(free -m | awk '/Mem:/ {print $7}')

if [ "$AVAIL_MEM" -lt "$THRESHOLD_MB" ]; then
echo "⚠️ Доступно мало памяти: ${AVAIL_MEM}MB (< ${THRESHOLD_MB}MB)" | tee -a "$LOG_FILE"
echo "🧾 Топ 5 процессов по использованию RAM:" | tee -a "$LOG_FILE"
ps -eo pid,comm,%mem --sort=-%mem | head -n 6 | tee -a "$LOG_FILE"
else
echo " Память в норме: ${AVAIL_MEM}MB" | tee -a "$LOG_FILE"
fi

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


🟢 free -m даёт удобный формат доступной памяти
🟢 ps -eo показывает, какие процессы используют RAM
🟢 Скрипт логирует в /var/log, можно настроить уведомления через email, Telegram, Slack и т.д

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


🗣 Особенно полезен для серверов, рабочих станций с ограниченным объёмом ОЗУ, VPS и embedded-устройств.


😎 PyLinux | #scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🔜 Настраиваем роутер и WiFi с VLAN в тоннель

Разбираем настройку сети с несколькими SSID на базе VLAN, pfSense и OpenWRT. Добавим туннели через отдельную VM в Proxmox. Решение для устройств, где нельзя изменить маршрутизацию.

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

😎 PyLinux | #articles
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4
➡️ Как одна ссылка может тебя взломать | Гайд по ссылкам в Linux для самых маленьких

Разобрался, как работают symlink, hardlink и inode в Linux, зачем они нужны и как один невинный symlink может открыть дверь хакеру. Всё показал на живых примерах.

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

😎 PyLinux | #videos
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11😁1
Навайбкодил

😎 PyLinux | #memes
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣31😁11❤‍🔥1
🧱 Управление правами доступа к файлам и папкам в Linux

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

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

# Показать права доступа к файлу/папке
ls -l /path/to/file

# Изменить владельца файла
sudo chown username /path/to/file

# Изменить владельца и группу
sudo chown username:groupname /path/to/file

# Изменить права доступа (например, rw-r--r--)
chmod 644 /path/to/file

# Сделать скрипт исполняемым
chmod +x myscript.sh

# Запретить доступ к каталогу всем, кроме владельца
chmod 700 /my/secret/dir

# Установить одинаковые права на все файлы внутри каталога
chmod -R 644 /my/data

# Назначить владельца и права для новых файлов в каталоге через umask
umask 027

# Проверить текущую маску прав
umask

# Создать группу и добавить пользователя
sudo groupadd editors
sudo usermod -aG editors username

# Разрешить группе запись в каталог
sudo chown -R :editors /project
sudo chmod -R 775 /project


🟢 chmod, chown и umask — основные инструменты управления правами
🟢 Группы позволяют организовать коллективный доступ
🟢 Рекурсивные флаги -R облегчают массовую настройку
🟢 umask влияет на создаваемые файлы по умолчанию

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

😎 PyLinux | #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤‍🔥1
🔜 Пишем простой драйвер Linux для устройства, ничего не зная о драйверах и о USB

Купил крутой RGB-хаб, но под Линуксом он мёртв. Написал техподдержке — дали доки! Теперь пытаюсь на их основе написать свой драйвер, хотя USB я знаю только со стороны пользователя.

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

😎 PyLinux | #articles
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍4
👩‍💻 Библиотека Python: drypython/returns

returns — это библиотека для написания чистого и безопасного функционального кода в Python. Она добавляет контейнеры вроде Result, Maybe, IO, и другие концепции из Haskell / Scala, помогая избавиться от None, try/except, и повышая предсказуемость кода.

Идеальна, если ты хочешь писать декларативно, безопасно и без side-effect'ов.

⚙️ Пример использования
from returns.result import Result, Success, Failure

def divide(x: int, y: int) -> Result[float, str]:
if y == 0:
return Failure("Деление на ноль")
return Success(x / y)

result = divide(10, 2).map(lambda x: x * 2)
print(result) # ➔ <Success: 10.0>

error = divide(10, 0).map(lambda x: x * 2)
print(error) # ➔ <Failure: 'Деление на ноль'>


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


🟢 Result, Maybe, IO, RequiresContext — как в языках с strong typing
🟢 Отказоустойчивость без try/except
🟢 .map(), .bind() и .alt() для чистого, цепочного кода
🟢 Совместима с mypy и типизацией

✔️ Установка

pip install returns


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

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤‍🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣33😁3
🔐 Проверка и логирование изменений в sudoers и ключевых системных файлах

Контроль за критичными файлами — важная мера безопасности. Этот скрипт отслеживает изменения в sudoers, passwd, shadow и других чувствительных файлах, уведомляя при их модификации.

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

#!/bin/bash

LOG_FILE="/var/log/security_watch.log"
FILES=(
"/etc/sudoers"
"/etc/passwd"
"/etc/shadow"
"/etc/group"
"/etc/ssh/sshd_config"
)

echo "🔍 Проверка контрольных сумм... $(date)" | tee -a "$LOG_FILE"

for file in "${FILES[@]}"; do
CHECKSUM_FILE="/var/lib/security_watch/$(basename $file).sha256"

if [ ! -f "$CHECKSUM_FILE" ]; then
mkdir -p /var/lib/security_watch
sha256sum "$file" > "$CHECKSUM_FILE"
echo "📦 Сохранили контрольную сумму для $file" | tee -a "$LOG_FILE"
continue
fi

CURRENT_SUM=$(sha256sum "$file")
OLD_SUM=$(cat "$CHECKSUM_FILE")

if [ "$CURRENT_SUM" != "$OLD_SUM" ]; then
echo "⚠️ Изменения в файле $file!" | tee -a "$LOG_FILE"
echo "$CURRENT_SUM" > "$CHECKSUM_FILE"
else
echo " $file без изменений." | tee -a "$LOG_FILE"
fi
done

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


🟢 sha256sum проверяет целостность без лишнего шума
🟢 Работает на любых системах без стороннего ПО
🟢 Можно расширить список файлов, подключить e-mail/Telegram для уведомлений

➡️ Добавьте в crontab для ежедневной проверки:
@daily /path/to/security_watch.sh


🗣 Полезно для серверов, рабочих станций с несколькими пользователями, CI/CD-агентов — чтобы быстро реагировать на подозрительные изменения.


😎 PyLinux | #scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
🔜 Livepatching: готовим «точечное» обновление ядра Linux на примере реального бага

Покажу, как чинить критические баги в ядре Linux без ребута с помощью livepatch. На примере Ubuntu 22.04 и реального патча. Будет и вторая часть.

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

😎 PyLinux | #articles
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
➡️ ТОП‑10 расширений для Python в VS Code (2025) — ускоряем разработку

Покажу 10 расширений, которые превращают VS Code в ультимативную среду для Python. Меньше багов, больше скорости, AI в помощь. Кодить станет легче, быстрее и веселей.

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

😎 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
😁19🗿4❤‍🔥1
🔒 Анализ и управление открытыми файлами и дескрипторами в Linux

В Linux каждая программа использует файловые дескрипторы (FD) — не только для файлов, но и сокетов, пайпов, устройств. Переполнение лимита может привести к сбоям. Эти команды помогут понять, кто сколько ресурсов потребляет и где «течёт».

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

# Посмотреть лимиты текущего пользователя
ulimit -a

# Узнать общий лимит открытых файлов
cat /proc/sys/fs/file-max

# Сколько открытых файлов в системе сейчас
cat /proc/sys/fs/file-nr

# Найти процессы с наибольшим числом открытых файлов
sudo lsof | awk '{ print $2 }' | sort | uniq -c | sort -nr | head

# Посмотреть все открытые файлы конкретного процесса (по PID)
ls /proc/<PID>/fd

# Вывести число открытых дескрипторов по каждому процессу
for pid in $(ls /proc | grep -E '^[0-9]+$'); do
echo -n "$pid: "; ls /proc/$pid/fd 2>/dev/null | wc -l;
done | sort -nk2 | tail

# Найти утечку файловых дескрипторов (много открытых одного и того же файла)
sudo lsof | awk '{print $9}' | sort | uniq -c | sort -nr | head

# Временное увеличение лимита для сессии
ulimit -n 65535

# Постоянное изменение лимита (в /etc/security/limits.conf):
# username soft nofile 65535
# username hard nofile 65535


🟢 lsof помогает диагностировать утечки и узкие места
🟢 ulimit управляет лимитами на уровне пользователя и сессии
🟢 Команды удобно использовать при отладке высоконагруженных приложений, серверов, CI/CD-пайплайнов

🗣 Подходит для разработчиков, DevOps, админов и всех, кто работает с фоном, сокетами, серверами, БД или большими логами.

😎 PyLinux | #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
🔜 Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux

Разбираю детский ARM-ноут от VIA, запускаю на нём Linux с дуалбутом, вспоминаю гиковские мечты детства и проверяю, на что способен старичок за полтысячи.

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

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

deal — это декларативная библиотека контрактного программирования, которая позволяет добавлять к функциям проверяемые условия: предусловия, постусловия, инварианты, исключения и побочные эффекты.

Она не просто валидирует логику — она анализирует и тестирует ваш код, включая статическую проверку через mypy и deal lint.

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

@deal.pre(lambda x: x >= 0)
@deal.post(lambda result: result >= 0)
def sqrt(x: float) -> float:
return x ** 0.5

print(sqrt(9)) # ✔️
print(sqrt(-4)) # deal.PreContractError

@deal.raises(ZeroDivisionError)
def div(a, b):
return a / b


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


🟢 @pre, @post, @raises — чёткие и читаемые контракты
🟢 Статический анализ с deal lint — предупреждает ошибки ещё до запуска
🟢 Поддержка mypy, pytest, hypothesis
🟢 Обнаружение побочных эффектов: например, чтение/запись в глобальные переменные

✔️ Установка

pip install deal


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

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