LinuxSkill - Сводки с прода и Шпаргалки
Следим за новостями Linux, DevOps и ИБ, чтобы быть готовым к любым факапам. Бонусом — плотные шпаргалки и чеклисты для ежедневной работы в терминале. 📩 По всем вопросам: @chorapov Зеркало в MAX: https://max.ru/LinuxSkill РКН https://vk.cc/cMUwm4
Show more📈 Analytical overview of Telegram channel LinuxSkill - Сводки с прода и Шпаргалки
Channel LinuxSkill - Сводки с прода и Шпаргалки (@linuxskill) in the Russian language segment is an active participant. Currently, the community unites 10 740 subscribers, ranking 11 158 in the Technologies & Applications category and 59 600 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 10 740 subscribers.
According to the latest data from 02 September, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -53 over the last 30 days and by -3 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 11.96%. Within the first 24 hours after publication, content typically collects 4.94% reactions from the total number of subscribers.
- Post reach: On average, each post receives 1 285 views. Within the first day, a publication typically gains 531 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 4.
- Thematic interests: Content is focused on key topics such as docker, linux, bash, devops, скрипт.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Следим за новостями Linux, DevOps и ИБ, чтобы быть готовым к любым факапам.
Бонусом — плотные шпаргалки и чеклисты для ежедневной работы в терминале.
📩 По всем вопросам: @chorapov
Зеркало в MAX: https://max.ru/LinuxSkill
РКН https://vk.cc/cMUwm4”
Thanks to the high frequency of updates (latest data received on 03 September, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
# python3 -m http.server 8000
## Апгрейд до HTTPS
Генерируем самоподписный сертификат:
# openssl req -new -x509 -keyout localhost.pem -out localhost.pem -days 365 -nodes
Создаём файл webserver.py:
import http.server, ssl
server_address = ('172.20.0.210', 8000)
httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket,server_side=True,certfile='localhost.pem',ssl_version=ssl.PROTOCOL_TLSv1_2)
httpd.serve_forever()
Запускаем HTTPS сервер:
# python3 webserver.py
Проверяем:
# Открываем в браузере
https://172.20.0.210:8000
Что получаем:
- Полноценный HTTPS сервер для тестов
- Файловый браузер по умолчанию
- Или веб-страница, если есть index.html
- Никаких конфигов и лишней возни
💡 Где пригодится:
- Тестирование приложений, требующих HTTPS
- Быстрая передача файлов по защищённому каналу
- Временный сервер для демо
- Проверка SSL/TLS настроек
Совет: сохрани скрипт в /usr/local/bin/ и используй как команду для быстрого запуска HTTPS где угодно.
____________________
Дополнительный материал:
🧠 - Открываем тайны Linux: Почему скрыть файлы от пользователя root невозможно?
🧠 - Как Создать Идеальный Dockerfile: Секреты Эффективности и Лаконичности
🧠 - Ускоряем YouTube и обходим блокировки на Linux: Ваше руководство
#Linux_Mastery #webserver #python #https #quickfix #sysadmin# docker pull nginx:latest
# docker create --name nginx nginx:latest
Теперь копируем нужный файл:
# docker cp nginx:/docker-entrypoint.d/30-tune-worker-processes.sh ~/
Или выгружаем весь образ:
# docker export nginx -o ~/nginx-docker.tar.gz
Dive — рентген для образов
Утилита показывает слои образа и что в каждом слое изменилось. Запускаем прямо в Docker:
# docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock \
wagoodman/dive nginx:latest
Создаём alias для удобства:
alias dive="docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"
Теперь просто:
# dive nginx:latest
Проверка раздутости образа
Вместо docker build используй dive build — получишь анализ эффективности сборки:
# dive build -t myapp:latest .
Dive покажет:
- Размер каждого слоя
- Что добавилось/удалилось
- Efficiency Score образа
- Wasted Space (лишнее место)
💡 Фишка: встрой проверку в CI/CD — автоматически отлавливай неоптимальные образы.
Итог: Docker создан для изоляции, поэтому прямого доступа к файлам нет. Но способы есть — используй их правильно.
____________________
Дополнительный материал:
🧠 - Linux Essentials: Понимание относительных и абсолютных путей к файлам
🧠 - Открытие Rancher: Путешествие от Стартапа до Лидера в Контейнеризации
🧠 - Осваиваем Docker: Искусство Сборки Образов и Управления Сетью
#Linux_Mastery #docker #devops #containers #optimization# curl https://get.docker.com | bash -
Подготовка файлов
# mkdir ~/prometheus && cd ~/prometheus
# touch docker-compose.yml
Docker-compose конфиг
Создай файл docker-compose.yml:
version: '3.9'
networks:
monitoring:
driver: bridge
volumes:
prometheus_data: {}
services:
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
container_name: prometheus
hostname: prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
expose:
- 9090
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- monitoring
node-exporter:
image: prom/node-exporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
container_name: exporter
hostname: exporter
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
expose:
- 9100
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- monitoring
grafana:
image: grafana/grafana
user: root
depends_on:
- prometheus
ports:
- 3000:3000
volumes:
- ./grafana:/var/lib/grafana
- ./grafana/provisioning/:/etc/grafana/provisioning/
container_name: grafana
hostname: grafana
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- monitoring
Конфиг Prometheus
Создай файл prometheus.yml:
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
scrape_timeout: 5s
static_configs:
- targets: ['localhost:9090']
- job_name: 'node-local'
scrape_interval: 5s
static_configs:
- targets: ['node-exporter:9100']
Запуск всего стека
# docker-compose up -d
Настройка Grafana
1. Открой http://твой-ip:3000
2. Логин: admin / admin
3. Connections → Data sources → Add Prometheus
4. URL: http://prometheus:9090
5. Dashboards → New → Import
6. Введи ID: 1860 (готовый дашборд для Node Exporter)
Добавление удалённого сервера
На удалённом сервере запусти exporter:
# docker run -d --net="host" --pid="host" -v "/:/host:ro,rslave" \
prom/node-exporter:latest --path.rootfs=/host
# Проверка
# ss -tulnp | grep 9100
Добавь в prometheus.yml:
- job_name: 'node-remote'
scrape_interval: 5s
static_configs:
- targets: ['10.20.1.56:9100']
Перезапусти:
# docker compose restart
💡 Результат: полноценный мониторинг с графиками CPU, RAM, диска, сети. Всё за 10 минут без танцев с бубном!
❗️ Важно: в проде закрой порты файрволом — оставь доступ только нужным IP.
____________________
Дополнительный материал:
🧠 - Мастерство Управления Правами в Linux: От Новичка до Профи
🧠 - Максимизируйте безопасность с минимальными разрешениями в Linux
🧠 - От Slackware до Pacman: Путешествие Систем Управления Пакетами в Linux
#Linux_Mastery #мониторинг #prometheus #devops #grafana #dockernmap 192.168.1.1
nmap 192.168.1.1 192.168.2.1
nmap 192.168.1.1-254
nmap 192.168.1.0/24
Полное сканирование всех 65535 портов:
nmap 192.168.1.1 -p-
Скан хоста, игнорирующего ping:
nmap 192.168.1.1 -Pn
Техники сканирования
nmap 192.168.1.1 -sS # TCP SYN (по умолчанию)
nmap 192.168.1.1 -sT # TCP connect
nmap 192.168.1.1 -sU # UDP сканирование
# Полное TCP+UDP (очень долго!)
nmap 192.168.1.1 -sS -sU -p-
Поиск живых хостов
Обнаружение без сканирования портов:
nmap 192.168.1.1/24 -sn
ARP-сканирование в локалке (в разы быстрее!):
nmap 192.168.1.1/24 -PR
Просто список IP без проверки:
nmap 192.168.1.1-15 -sL
Определение сервисов
Быстрая проверка версий (1 порт = 1 строка):
nmap 192.168.1.1 -sV
Полный анализ (ОС, версии, скрипты, traceroute):
nmap 192.168.1.1 -A
🚀 Трюк для ускорения в 10 раз
Вместо долгого полного сканирования — сначала найди открытые порты, потом анализируй только их:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1
Использование:
./nmap.sh 192.168.1.1
Скорость сканирования
-T0 # paranoid (паранойдный)
-T1 # sneaky (хитрый)
-T2 # polite (вежливый)
-T3 # normal (обычный, по умолчанию)
-T4 # aggressive (для локалки)
-T5 # insane (безумный)
💡 Совет: в локальной сети смело используй -T4, для внешних хостов — -T3 или ниже.
Итог: правильные ключи = экономия времени. Особенно скрипт с двухэтапным сканированием — реально ускоряет работу в разы.
____________________
Дополнительный материал:
🧠 - Путешествие по Виртуальным Интерфейсам и Канальному Уровню в Linux: От Туннелей до Мостов
🧠 - История AppArmor: Как Linux Стал Крепостью Безопасности
🧠 - Linux Mastery: Быстрое создание пакетов файлов для тестирования
#Linux_Mastery #nmap #security #pentesting #networking #linux# mkdir /mnt/nfs
# chown nobody:nogroup /mnt/nfs
Ставим NFS сервер:
# apt install nfs-kernel-server
Настраиваем экспорт в /etc/exports:
# Для одного IP
/mnt/nfs 10.20.1.56(rw,all_squash,no_subtree_check,crossmnt)
# Для подсети
/mnt/nfs 10.20.1.56/24(rw,all_squash,no_subtree_check,crossmnt)
# Для нескольких IP (каждый в своей строке)
/mnt/nfs 10.20.1.56(rw,all_squash,no_subtree_check,crossmnt)
/mnt/nfs 10.20.1.52(rw,all_squash,no_subtree_check,crossmnt)
Перезапускаем и проверяем:
# systemctl restart nfs-server
# systemctl status nfs-server
💡 Важно: открой TCP порт 2049 в файрволе!
Настройка клиента
Ставим клиентский пакет:
# apt install nfs-common
Проверяем доступность сервера:
# showmount -e 10.20.1.36
Export list for 10.20.1.36:
/mnt/nfs 10.20.1.56
Монтируем шару:
# mkdir /mnt/nfs
# mount 10.20.1.36:/mnt/nfs /mnt/nfs
Проверяем результат:
# df -h | grep nfs
10.20.1.36:/mnt/nfs 48G 3.2G 43G 7% /mnt/nfs
# Смотрим версию протокола (должна быть v4)
# mount -t nfs4
Тестируем запись:
# echo "test" > /mnt/nfs/testfile
Для постоянного монтирования добавь в /etc/fstab:
10.20.1.36:/mnt/nfs /mnt/nfs nfs4 defaults 0 0
Результат: максимальная скорость передачи файлов между серверами. Особенно выручает для временных задач — поднял, скопировал, удалил.
____________________
Дополнительный материал:
🧠 - Путешествие во Времени: От ext до ext4 - Эволюция Файловых Систем Linux
🧠 - Linux Mastery: Организация файлов и каталогов
🧠 - Как пентестеры взломали ИТ-компанию через сайт уролога и Роскомнадзор
#Linux_Mastery #fileserver #nfs #linux #sysadmin #devops #performance# df -h
Ищем самые прожорливые директории:
# du -h -d 1 / | sort -hr
# du -hs /* | sort -hr
# Ограничиваем вывод топ-10
# du -h -d 1 / | sort -hr | head -10
# Топ-20 самых больших директорий
# du -hcx --max-depth=6 / | sort -rh | head -n 20
# Топ-20 самых больших файлов
# find / -mount -ignore_readdir_race -type f -exec du -h "{}" + 2>&1 \
> | sort -rh | head -n 20
Проверка inodes
Иногда место есть, но закончились inodes:
# df -ih
Охота на файлы-призраки
Ситуация: du показывает мало занятого места, но df говорит "диск полный". Причина — удалённые файлы, которые держит процесс:
# lsof | grep '(deleted)'
# lsof +L1
Нашли большие deleted-файлы? Перезапусти службу или убей процесс через kill -9 <pid>.
Ловушка с точками монтирования
Хитрый случай: скрипт должен был писать в смонтированный диск /mnt/backup, но диск не подключился. Файлы записались в локальную систему и теперь скрыты под точкой монтирования!
Как проверить:
1. Отмонтируй диск временно
2. Загляни в директорию
3. Удали мусор
4. Примонтируй обратно
Профилактика: всегда проверяй успешность монтирования перед записью данных в скриптах.
💡 Итог: 90% проблем с местом решаются этими командами. Сохрани и используй при первых признаках "disk full".
____________________
Дополнительный материал:
🧠 - Осваиваем RAID Массивы в Linux: Путь к Надежности и Производительности
🧠 - История OpenSUSE: От Зеленого Ящерика к Глобальному Сообществу
🧠 - Разблокируем секреты Linux: Специальные разрешения файлов
#Linux_Mastery #bash #terminal #linux #sysadmin #troubleshooting #storage#!/bin/bash
# Проверка аргументов
if [ $# -eq 0 ]; then
echo "Usage: $(basename $0) -mnopqrs"
exit 1
fi
# Парсинг опций
while getopts ":mnopq:rs" Option; do
case $Option in
m ) echo "Опция -m активна";;
n|o ) echo "Опция -$Option активна";;
p ) echo "Опция -p активна";;
q ) echo "Опция -q с аргументом: $OPTARG";;
r|s ) echo "Опция -$Option";;
* ) echo "Неверная опция";;
esac
done
# Сдвиг к не-опциям
shift $(($OPTIND - 1))
## 💡 Как работает:
- :mnopq:rs — строка опций (: после q = требует аргумент)
- $OPTARG — значение для опции с аргументом
- $OPTIND — индекс следующего аргумента
## 🚀 Примеры вызова:
./script.sh -m -n
./script.sh -mn # можно слитно!
./script.sh -q "значение"
./script.sh -mnop -q test
## 📌 Бонус — импорт функций:
# Загружаем общие функции
source /path/to/common_functions.sh
# или
. ./config.sh
Теперь твои скрипты выглядят как настоящие Linux-утилиты!
____________________
Дополнительный материал:
🧠 - Командный центр Linux: Ваше руководство по базовым консольным программам
🧠 - Защитный барьер Linux: Как система обеспечивает безопасность пользователей и групп
🧠 - Мастер-класс по консольным программам Linux: Разбираемся с UID и GID
#bash_guide #bash #getopts #cli #scripting #Linux #arguments