Админские угодья
1.47K subscribers
462 photos
40 videos
223 links
Всё для системного администратора

По всем вопросам : @Sofiia_artamonova
Download Telegram
Пример 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="[email protected]"
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
👍3
Производительность RDP в Windows Server и способы ее повышения

Эта статья актуальна для Windows Server 2019 в качестве сервера и Windows 10 в качестве клиента RDP. В статье мы рассмотрим шаги, которые следует предпринять для достижения максимальной производительности терминальных сессий RDP в Windows Server.

https://telegra.ph/Proizvoditelnost-RDP-v-Windows-Server-i-sposoby-ee-povysheniya-09-23
👍3
Основы мониторинга (обзор Prometheus и Grafana)

Мониторинг сегодня – фактически обязательная «часть программы» для компании любых размеров. В данной статье мы попробуем разобраться в многообразии программного обеспечения для мониторинга и рассмотрим подробнее одно из популярных решений – систему на основе Prometheus и Grafana

https://habr.com/ru/post/709204/
👍2
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
👍2
📌Совет по Linux

Если вы хотите определить, сколько времени займет выполнение определенной команды или скрипта, используйте команду time.

Вот синтаксис:

$ time <команда>.

Пример:
$ time find / -perm -u=s -type f &>/dev/null

Он также показывает использование системных ресурсов процесса, что делает его полезным инструментом для оценки эффективности конкретной команды.
👍4
Шпаргалка по безопасности сетей
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Как фильтровать вывод предыдущей команды и зачем нужен pipe |

Bash удобен тем, что позволяет передавать результаты одной команды в другую. Для этого используется символ | (pipe, канал, или конвейер).

Простой пример: нужно отфильтровать вывод лога nginx, чтобы отобразить только запросы к конкретному URL. Сначала используем команду cat для вывода содержимого файла, затем фильтруем нужные строки с помощью grep.


cat access.log | grep api/users
cat access.log | grep 02/Dec
cat access.log | grep api | grep 172.17.0.1
👍1
Haskell Dockerfile Linter

Интеллектуальный распаковщик Dockerfile, помогающий создавать лучшие образы Docker. Линтер разбирает Docker-файл на AST и выполняет правила поверх AST. Он опирается на поддержку ShellCheck для проверки Bash-кода внутри инструкций RUN.

https://github.com/hadolint/hadolint
Что в bash скрипте означает команда set -euo pipefail?

Команда set -euo pipefail в Bash-скрипте изменяет поведение интерпретатора и добавляет контроль ошибок, что делает сценарий более надежным.

1. -e: Завершает выполнение скрипта, если любая команда завершилась с ненулевым статусом (то есть произошла ошибка). Это предотвращает дальнейшее выполнение скрипта, если что-то пошло не так.

2. -u: Вызывает ошибку, если используется неинициализированная (неопределенная) переменная. Это помогает избежать ошибок, когда случайно обращаются к переменной, которая не была задана.

3. -o pipefail: Заставляет весь конвейер (|) завершиться с ошибкой, если любая команда в цепочке вернула ненулевой статус. По умолчанию в Bash статус конвейера определяется только последней командой, а pipefail изменяет это поведение. Если любая команда в конвейере завершится ошибкой, это будет считаться ошибкой всего конвейера.

Пример

set -euo pipefail

# Пример команды, использующей необъявленную переменную
echo $undefined_var # Это вызовет ошибку из-за опции -u


Таким образом, set -euo pipefail делает скрипт более устойчивым к ошибкам, помогая избежать неожиданных ситуаций и неявных ошибок.
👍31
Массивы bash

Если вы используете «стандартную» оболочку *NIX-системы, возможно, вы не знакомы с такой полезной особенностью bash как массивы. Хотя массивы в bash не так круты, как в P-языках (Perl, Python и PHP) и других языках программирования, они часто бывают полезны.
Bash-массивы имеют только численные индексы, но они не обязательны к использованию, то есть вы не должны определять значения всех индексов в явном виде.

https://habr.com/ru/articles/511608/
👍2
Срок действия учетной записи

Узнать срок действия учетной записи в ActiveDirectory можно через оснастку: Пользователи и компьютеры или с помощью команды Powershell. Во втором случае мы получим список всех учетных записей, у которых заканчивается срок действия.


Search-ADAccount -AccountExpiring -UsersOnly -TimeSpan 07.00:00:00 | Sort-Object -Descending AccountExpirationDate | ft Name, AccountExpirationDate

Устанавливаем TimeSpan на одну неделю и получаем список учетных записей срок действия которых закончится в течение одной недели (7 дней).
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Sampler. Визуализация для любой команды shell

Инструмент для выполнения команд shell, визуализации и оповещения. Настраивается с помощью простого файла YAML.

Установка Linux
sudo wget https://github.com/sqshq/sampler/releases/download/v1.1.0/sampler-1.1.0-linux-amd64 -O /usr/local/bin/sampler
sudo chmod +x /usr/local/bin/sampler

https://github.com/sqshq/sampler
❤‍🔥3
Простой и удобный шаблон для bash-скриптов выполняемых по расписанию

Хочу поделиться с сообществом простым и полезным шаблоном скрипта-обёртки на bash для запуска заданий по cron (а сейчас и systemd timers), который моя команда повсеместно использует много лет.

Сначала пара слов о том зачем это нужно, какие проблемы решает. С самого начала моей работы системным администратором linux, я обнаружил, что cron не очень удобный планировщик задач. При этом практически безальтернативный. Чем больше становился мой парк серверов и виртуальных машин, тем больше я получал абсолютно бесполезных почтовых сообщений "From: Cron Daemon". Задание завершилось с ошибкой - cron напишет об этом. Задание выполнено успешно, но напечатало что-нибудь в STDOUT/STDERR - cron всё равно напишет об этом. При этом даже нельзя отформатировать тему почтового сообщения для удобной автосортировки. Сначала были годы борьбы с использованием разных вариаций из > /dev/null, 2> /dev/null, > /dev/null 2>&1, | mail -E -s '<Subject>' root@. Потом я нашёл Cronic - обёртку на bash, которая скрывает вывод запускаемой задачи, если она завершена успешно. Стало полегче, но обнаружилось, что от некоторых заданий всё же лучше получать сообщение "Task OK", чтобы не столкнуться в самый неподходящий момент с тем, что выполнение задания тихо сломано месяц назад.

https://habr.com/ru/articles/778922/
👍2
Zenith - что-то вроде top или htop, но с диаграммами с возможностью масштабирования, использованием CPU, GPU, сети и диска.

Особенности
Дополнительные графики использования ЦП, памяти, сети и дисков
Быстрый просмотр свободного места на диске, IP-адресов сетевых карт, частоты процессора
Выделение основных пользователей ЦП, памяти и диска
Процент заряда батареи, время зарядки или разрядки, потребляемая мощность
Таблица процессов с возможностью фильтрации по типу верхней части, включающая использование диска каждым процессом
Изменение приоритета процесса
Представления диаграмм с возможностью масштабирования (с поддержкой прокрутки назад во времени)
Управление процессами с помощью сигналов
Сохранение данных о производительности между запусками
Метрики использования GPU для графических процессоров NVIDIA (с --features nvidia), включая использование GPU для каждого процесса
Графики свободного места на диске
Учет задержек (в Linux при запуске zenith с правами root)

Установка на дистрибутивы Linux на базе Debian/Ubuntu (64-бит)

sudo apt install curl
curl -sL https://raw.githubusercontent.com/wimpysworld/deb-get/main/deb-get | sudo -E bash -s install deb-get



https://github.com/bvaisvil/zenith
👍4
Media is too big
VIEW IN TELEGRAM
Файловые системы в линуксе | сравнительный тест файловых систем linux ext4 xfs f2fs btrfs zfs
Список полезных консольных команд VMWare ESXi (в том числе ESXCLI)

reboot — перезагрузить хост
poweroff — выключить хост
esxcli system version get — узнать версию (номер) инсталлированной версии VMware ESXi
uname -a — так же узнать версию VMware ESXi
vmware –vl – и еще один способ узнать версию и релиз VMware ESXi
esxcli hardware pci list | more — полная информация об установленных PCI устройствах
lspci — краткая информация обо всех установленных PCI устройствах
esxtop — диспетчер процессов top для vmware esxi (быстрые клавиши для переключения дисплея: c :cpu, i :interrupt, m :memory, n :network, d :disk adapter, u :disk device, v :disk VM, p :power mgmt)
vmkerrcode -l — расшифровка кодов ошибок
esxcfg-nics -l — информация о сетевых картах
esxcfg-vswitch -l — информация о виртуальных коммутаторах
find . -name libstorelib.so — найти файл libstorelib.so
dcui — работа с консолью сервера через ssh сессию
chkconfig -l — статус работы демонов
esxcli hardware memory get — размер установленной памяти
esxcli software vib list — список установленных vib-пакетов
esxcli network ip connection list — состояние активных соединений (аналог netstat)
esxcli storage vmfs extent list — информация о примонтированных/подключенных томах VMFS
esxcli hardware clock (get/set) — отображение/установка времени esxi-хоста
cd - Смена текущей директории;
cp - Копирование файла.cp [файл 1] [файл2];
find - Поиск файлов по критериям;
ls - Список файлов и директорий в текущей или явно указанной директории.ls /vmfs/volumes/ ключи: -l подробная информация -a отображение скрытых файлов;
mkdir — Создание директории;
mv — Перемещение файла. Переименование файла.mv [путь и имя файла] [путь, куда перемещать];
ps — Информация о запущенных процессах. ps -ef;
rm - Удаление файлов;
shutdown — Выключение или перезагрузка сервера shutdown nowshutdown –r now;
vi — Текстовый редактор;
nano — Дружелюбный к новичкам текстовый редактор, отсутствует на ESXi;
cat — Вывод содержимого файла на экран. cat /etc/hosts;
more — Вывод содержимого файла на экран, по странице за раз. more /etc/hosts;
man — Справка по командам man <команда, по которой есть вопрос>, для некоторых команд помощь выводится при запуске самой команды без параметров;
useradd — Создание пользователя. useradd <имя пользователя>;
passwd - Задание пароля пользователю passwd <имя пользователя>;
esxcli storage nfs list — список подключеных nfs- хранлилищ на хосте
esxcli software vib list — cписок установленных vib-пакетов
esxcli hardware memory get — информация об использовании памяти на хосте ESXi, включая общий объем
This media is not supported in your browser
VIEW IN TELEGRAM
Relax-and-Recover

Решение для аварийного восстановления и миграции систем на новое железо под управлением Linux (ср. mksysb,
ignite)

Relax-and-Recover создает загрузочный образ. Этот образ может переразметить систему. После этого запускается восстановление из резервной копии. Возможно восстановление на другое оборудование. Поэтому Relax-and-Recover можно использовать и как инструмент миграции.

В настоящее время Relax-and-Recover поддерживает различные загрузочные носители (включая ISO, PXE, ленту OBDR, USB или eSATA), разнообразные сетевые протоколы (включая sftp, ftp, http, nfs, cifs), а также множество стратегий резервного копирования (включая IBM TSM, CommVault, Micro Focus Data Protector, Symantec NetBackup, Bareos, Bacula, rsync, Borg).

Решение Relax-and-Recover было разработано для простой настройки, не требует обслуживания и готово прийти на помощь в случае бедствия. Его характер "установил и забыл" устраняет любые оправдания для отсутствия решения по аварийному восстановлению.

https://relax-and-recover.org/

https://github.com/rear/rear
👍1
PowerShell: используем Invoke-Command для запуска команд/скриптов на удаленных компьютерах

В этой статье мы рассмотрим особенности использования командлета Invoke-Command для удаленного выполнения команд и скриптов. Возможно запускать команды удаленно на одном компьютере, или параллельно на множестве компьютерах в вашей сети. Командлет Invoke-Command использует возможности удаленного управления, заложенные в PowerShell Remoting. PowerShell Remoting позволяет удаленно подключаться к PowerShell сессиям на компьютерах через службу WinRM (Windows Remote Management) через протокол Web Services for Management (WS-Management). Этот сервис дает возможность принимать команды Powershell и устанавливать сеансы.

https://telegra.ph/PowerShell-ispolzuem-Invoke-Command-dlya-zapuska-komandskriptov-na-udalennyh-kompyuterah-09-26
💯1