Типичный Сисадмин
1.25K subscribers
364 photos
43 videos
201 links
⚙️Информация для системного администратора

По всем вопросам : @Sofiia_artamonova
Download Telegram
Скрипт для мониторинга дискового пространства в Linux

Скрипт ниже предназначен для мониторинга использования дискового пространства на указанном разделе сервера. Настраиваемые параметры включают в себя максимально допустимый процент использования дискового пространства (`MAX`), адрес электронной почты для получения оповещений (`EMAIL`) и целевой раздел (`PARTITION`).

Скрипт использует команду df для сбора информации об использовании диска и отправляет предупреждения по электронной почте, если текущее использование превышает заданный порог.



#!/bin/bash

# Set the maximum allowed disk space usage percentage
MAX=90

# Set the email address to receive alerts
EMAIL=user@example.com

# Set the partition to monitor (change accordingly, e.g., /dev/sda1)
PARTITION=/dev/sda1

# Get the current disk usage percentage and related information
USAGE_INFO=$(df -h "$PARTITION" | awk 'NR==2 {print $5, $1, $2, $3, $4}' | tr '\n' ' ')
USAGE=$(echo "$USAGE_INFO" | awk '{print int($1)}') # Remove the percentage sign

if [ "$USAGE" -gt "$MAX" ]; then
# Send an email alert with detailed disk usage information
echo -e "Warning: Disk space usage on $PARTITION is $USAGE%.\n\nDisk Usage Information:\n$USAGE_INFO" | \
mail -s "Disk Space Alert on $HOSTNAME" "$EMAIL"
fi
Горячие клавиши терминала Linux

Терминал Linux — один из самых мощных инструментов на вооружении данного семейства операционных систем. Для неподготовленного пользователя, однако, вряд ли покажется чем-то удобным в использовании: горячие клавиши, к которым мы привыкли в Windows, часто не работают или работают не так, как мы от них ждем. В результате, первое знакомство с терминалом, как правило, бывает неприятным.

В данной статье мы рассмотрим комбинации клавиш, которые сильно упростят жизнь всем, кто работает с терминалом.

https://telegra.ph/Goryachie-klavishi-terminala-Linux-09-21
Media is too big
VIEW IN TELEGRAM
Управление и настройка сети в Linux с помощью утилиты nmcli

Вы можете использовать различные инструменты для настройки сетевых подключений, как графических так и консольно командных, графические удобны своей простотой, а командные удобны тем что их можно использовать в различных сценариях, в этом видео вы познакомитесь с консольной утилитой nmcli (Network Manager Command Line Interface)

Команды тут

https://m.youtube.com/watch?v=hZl9B-H6-Rc
Краткая шпаргалка по использованию tmux

Ctr+B, ? Показать все доступные хоткеи
Ctr+B, C Создать окно
Ctr+B, N Следующее окно
Ctr+B, P Предыдущее окно
Ctr+B, [0-9] Перейти к окну с данным номером
Ctr+B, X Закрыть окно
Ctr+B, % Горизонтальное разделение
Ctr+B, " Вертикальное разделение
Ctr+B, стрелочки Переход между разделениями
Ctr+B, запятая Переименовать окно
Ctr+B, W Список всех окон с переключением
Ctr+B, Fn+вверх Скролинг, можно использовать точпад
Ctr+B, $ Переименовать текущую сессию
Ctr+B, D Detach, отсоединиться от сессии

Список доступных сессий можно посмотреть командой:
tmux ls

Подключение к сессии:
tmux attach -t 0


Сессиям можно давать осмысленные имена и запускать в них фоновые задачи:

# создать фоновую сессию
tmux new-session -d -s background-task 'watch date'

# подсоединиться к сессии
tmux attach -t background-task

# прибить сессию
tmux kill-session -t background-task

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

Интересно также, что в отличие от screen, в tmux нет возможности работать с последовательными портами. Но если вы решите полностью переходить на tmux, то для этой задачи можете воспользоваться утилитой cu:

cu -l /dev/tty.usbserial -s 115200
Media is too big
VIEW IN TELEGRAM
Как работает процесс загрузки Linux?
Ioping

Константин Хлебников разработал полезную утилиту ioping, позволяющую в стиле утилиты ping наблюдать за изменением отзывчивости системы ввода/вывода в Linux.

Установка в Debian 11
# apt install ioping

Поддерживаемые ОС
GNU/Linux, GNU/HURD, Windows, OS X, FreeBSD, DragonFlyBSD, OpenBSD

Пример выполнения:

$ ioping /home
4096 bytes from /home (ext4 /dev/sda5): request=1 time=0.4 ms
4096 bytes from /home (ext4 /dev/sda5): request=2 time=0.8 ms
4096 bytes from /home (ext4 /dev/sda5): request=3 time=0.9 ms
4096 bytes from /home (ext4 /dev/sda5): request=4 time=0.3 ms
4096 bytes from /home (ext4 /dev/sda5): request=5 time=0.2 ms
--- . ioping statistics ---
5 requests completed in 4266.5 ms
min/avg/max/mdev = 0.2/0.5/0.9/0.1 ms


https://github.com/koct9i/ioping
Общие сетевые протоколы
Изменение порта для подключения по SSH

Чтобы изменить порт для подключения по SSH необходимо отредактировать файл конфигурации SSH демона. Откроем данный файл текстовым редактором:
vim /etc/ssh/sshd_config
Найдем строку Port 22 и изменим её, указав новый порт для подключения. Например Port 25022.

Выходим, сохраняем файл и перезагружаем SSH следующей командой:
service sshd restart

После перезапуска SSH, он станет доступен по новому порту, а текущая сессия на старом останется активной. Поэтому не отключаясь для проверки попробуем подключится по новому порту - если не пускает, то возможно в системе работает фаервол и нужно в нем разрешить новый порт, например в iptables это делается так (где 25022 наш новый порт):
iptables -A INPUT -p tcp --dport 25022 -j ACCEPT

Можно разрешить средствами iptables подключение к SSH только с указанного диапазона IP адресов:
iptables -A INPUT -d 192.168.0.0/24 -p tcp --dport 25022 -j ACCEPT

где 192.168.0.0/24 - IP адрес сети и маска сети, с которых разрешено подключение по SSH. Далее проверяем подключение по SSH на новом порту ssh <user>@<ip> -p <port> - если подключение выполняется, то можем удалить правило iptables подключения по SSH по старому порту:
iptables -D INPUT -p tcp --dport 22 -j ACCEPT

Посмотреть в системе на каком порту и на каких сетевых интерфейсах работает SSH можно следующей командой:
netstat -tulpan | grep ssh
Команда nslookup, получение информации от DNS

Команда nslookup — инструмент сетевого администрирования для запросов в доменной системе имен (DNS) с целью получения доменного имени, IP-адреса или другой информации из записей DNS.

Кроме того, эта команда используется для поиска и устранения проблем с DNS. В данном руководстве мы рассмотрим наиболее типичные примеры ее применения.

Команда nslookup может работать в интерактивном и неинтерактивном режимах. Интерактивный режим позволяет пользователю в режиме диалога отправлять DNS-серверу запросы о различных узлах и доменах. Неинтерактивный режим позволяет отправить один запрос об одном узле или домене.

https://telegra.ph/Komanda-nslookup-poluchenie-informacii-ot-DNS-09-26
Шпаргалка по командам Docker
Изменение порта для подключения по SSH

Чтобы изменить порт для подключения по SSH необходимо отредактировать файл конфигурации SSH демона. Откроем данный файл текстовым редактором:
vim /etc/ssh/sshd_config
Найдем строку Port 22 и изменим её, указав новый порт для подключения. Например Port 25022.

Выходим, сохраняем файл и перезагружаем SSH следующей командой:
service sshd restart

После перезапуска SSH, он станет доступен по новому порту, а текущая сессия на старом останется активной. Поэтому не отключаясь для проверки попробуем подключится по новому порту - если не пускает, то возможно в системе работает фаервол и нужно в нем разрешить новый порт, например в iptables это делается так (где 25022 наш новый порт):
iptables -A INPUT -p tcp --dport 25022 -j ACCEPT

Можно разрешить средствами iptables подключение к SSH только с указанного диапазона IP адресов:
iptables -A INPUT -d 192.168.0.0/24 -p tcp --dport 25022 -j ACCEPT

где 192.168.0.0/24 - IP адрес сети и маска сети, с которых разрешено подключение по SSH. Далее проверяем подключение по SSH на новом порту ssh <user>@<ip> -p <port> - если подключение выполняется, то можем удалить правило iptables подключения по SSH по старому порту:
iptables -D INPUT -p tcp --dport 22 -j ACCEPT

Посмотреть в системе на каком порту и на каких сетевых интерфейсах работает SSH можно следующей командой:
netstat -tulpan | grep ssh
Внедрение GitOps с помощью ArgoCD: пошаговое руководство

В современном быстро меняющемся мире DevOps управление и развертывание приложений, последовательное и надежное в различных средах, может оказаться сложной задачей. GitOps, парадигма, использующая Git-репозитории в качестве единого источника истины для декларативной инфраструктуры и приложений, предлагает решение. В этом посте я расскажу вам о проекте, в котором мы внедрили GitOps с помощью ArgoCD, подробно опишу цели проекта и шаги, которые мы предприняли для их достижения.

https://medium.com/@kalimitalha8/implementing-gitops-with-argocd-a-step-by-step-guide-b79f723b1a43
👍1
DNS Record Types
Пример Bash-скрипта, который выполняет следующие задачи

1. Проверяет доступность важного веб-сервера.
2. Проверяет использование дискового пространства.
3. Делает бэкап указанных директорий.
4. Отправляет отчет на электронную почту администратора.

Пример скрипта:

#!/bin/bash

# Установки
WEB_SERVER="https://example.com"
BACKUP_DIR="/backup"
TARGET_DIRS="/var/www /etc"
DISK_USAGE_THRESHOLD=90
ADMIN_EMAIL="admin@example.com"
DATE=$(date +"%Y-%m-%d")
BACKUP_FILE="$BACKUP_DIR/backup-$DATE.tar.gz"

# Проверка доступности веб-сервера
echo "Проверка доступности веб-сервера..."
if curl -s --head $WEB_SERVER | grep "200 OK" > /dev/null; then
echo "Веб-сервер доступен."
else
echo "Внимание: Веб-сервер недоступен!" | mail -s "Проблема с веб-сервером" $ADMIN_EMAIL
fi

# Проверка дискового пространства
echo "Проверка дискового пространства..."
DISK_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
if [ $DISK_USAGE -gt $DISK_USAGE_THRESHOLD ]; then
echo "Внимание: Использование дискового пространства превысило $DISK_USAGE_THRESHOLD%!" | mail -s "Проблема с дисковым пространством" $ADMIN_EMAIL
else
echo "Дискового пространства достаточно."
fi

# Создание бэкапа
echo "Создание бэкапа..."
tar -czf $BACKUP_FILE $TARGET_DIRS

if [ $? -eq 0 ]; then
echo "Бэкап успешно создан: $BACKUP_FILE"
else
echo "Ошибка создания бэкапа!" | mail -s "Ошибка создания бэкапа" $ADMIN_EMAIL
fi

# Отправка отчета
echo "Отправка отчета на $ADMIN_EMAIL..."
REPORT="Отчет за $DATE\n\n"
REPORT+="Статус веб-сервера: $(curl -s --head $WEB_SERVER | head -n 1)\n"
REPORT+="Использование дискового пространства: $DISK_USAGE%\n"
REPORT+="Расположение бэкапа: $BACKUP_FILE\n"

echo -e $REPORT | mail -s "Ежедневный отчет системы" $ADMIN_EMAIL

echo "Готово."


Описание:
1. Проверка веб-сервера: Используется команда curl, чтобы проверить, доступен ли сайт.
2. Проверка дискового пространства: С помощью df и awk проверяется использование диска. Если превышен порог (90%), отправляется уведомление.
3. Создание бэкапа: Команда tar архивирует и сжимает директории, которые указаны в переменной TARGET_DIRS.
4. Отправка отчета: Отчет по всем операциям отправляется на почту администратора с помощью mail.

Как использовать:
1. Задайте нужные параметры, такие как адрес веб-сервера, директории для бэкапа, порог использования диска и email.
2. Сделайте скрипт исполняемым:

   chmod +x /path/to/your/script.sh

3. Добавьте скрипт в cron для выполнения на регулярной основе:

   crontab -e

Пример для выполнения каждый день в 00:00:


0 0 * * * /path/to/your/script.sh
2
Media is too big
VIEW IN TELEGRAM
Подключение USB сетевого диска к Mikrotik

Настроим Микротик в роли файлового сервера с использованием внешнего usb жесткого диска или любого USB Flash Disk. Для начала нам понадобятся:

1. Модель MIkroTik с USB-портом.
2. USB-диск или USB Flash Disk “флэшка”.

источник
👍3
Деление сети на подсети: шпаргалка
2
Одноразовые пароли для доступа по ssh через HashiCorp Vault

HashiCorp Vault имеет в своём арсенале SSH secrets engine, который позволяет организовать защищённый доступ к вашим машинам по ssh, через создание клиентских сертификатов и одноразовых паролей. Про последнее – создание одноразовых паролей (OTP) – мы и поговорим в этой статье.

https://habr.com/ru/articles/785052/
👍2
⚙️Ресурс, описывающий самые популярные инструменты DevOps

Здесь описывается Docker, GitHub Actions, k8s, Go, Helm, Prometheus, ArgoCD, Jenkins.

Помимо инструментов, внимание здесь уделяется таким методологиям как GitOps, DevSecOps, описываются базовые команды Linux, основы написания Bash-скриптов и много всего другого.

https://devops.pradumnasaraf.dev/