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

По всем вопросам : @Sofiia_artamonova
Download Telegram
Стандартные инструменты для диагностики системы 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 — универсальный инструмент для сбора и анализа данных о системе (сотни различных источников скомбинированные вместе)
2👍1
Права доступа к файлам Linux
👍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
Полное руководство по Docker Secrets

Даже если вы использовали Docker для небольших или локально разработанных программ, вы могли обнаружить, что он может быть довольно трудным для решения более сложных задач. Особенно это касается управления секретами и совместного использования - областей, которые часто упускаются из виду при работе с контейнерными приложениями.

https://earthly.dev/blog/docker-secrets/
3
Linux Dash

Позволяет мониторить:

Средняя загрузка системы (load average)
Оперативная память (Всего/Использовано/Свободно)
Использование дисков (свободное место)
Список пользователей
Список программного обеспечения и путь до бинарного файла
Список интерфейсов с их IP-адресами
Текущая скорость интерфейса (Входящая/Исходящая)
Список подключенных пользователей
Список процессов

https://github.com/tariqbuilds/linux-dash

Demo https://afaqurk.github.io/linux-dash/#/system-status
👍3
ArcherySec — open-source инструмент, который позволяет проводить сканирование инфраструктуры

export TIME_ZONE='Asia/Kolkata'
git clone https://github.com/archerysec/archerysec.git
cd archerysec
NAME=User EMAIL=user@user.com PASSWORD=admin@123A bash setup.sh
./run.sh


ArcherySec интегрируется с 80+ коммерческими и открытыми инструментами и имеет удобный ArcherySec CLI — локально развертываемый инструмент командной строки, предназначенный для запуска на любом хосте Linux.

https://github.com/archerysec/archerysec
👍3
https://quickref.me - шпаргалка по разным утилитам для Linux и языкам программирования.
👍3
zabbix-cli — утилита командной строки для работы с Zabbix. Написана на Python и недавно начала снова обновляться. Поможет выполнить рутинные операции из командной строки через Zabbix API.

https://github.com/unioslo/zabbix-cli
👍3
Media is too big
VIEW IN TELEGRAM
Настройка контейнеров на RouterOS | Docker + PiHole

Начиная с RouterOS v7.5 маршрутизаторы mikrotik получили возможность устанавливать контейнеры docker. В этом видео мы узнаем, как правильно подготовить маршрутизатор и как развернуть контейнер в RouterOS.

В маршрутизаторах mikrotik начального уровня оперативной памяти недостаточно для корректной работы контейнеров docker, мы будем устанавливать контейнер docker на виртуальный сервер с установленной системой RouterOS. Вы можете выбрать оптимальную конфигурацию виртуального сервера с предустановленной RouterOS.

источник
👍2
Linux: делаем скриншот и отправляем его на электронную почту

Для успешной работы скрипта необходимо сначала установить: ssmtp(обязательно настроить), mpack и scrot


#!/usr/bin/env bash
# Важно! Для работы скрипта необходимо установить и настроить ssmtp, mpack и scrot
# путь к директории со скриншотами
dirpath=/home/$USER/screenshots
# проверяем наличие директории (если нет, то создаем). Делаем скриншот с названием по маске: ДД-ММ-ГГ_ЧЧ-ММ-СС.jpg
if [[ -d $dirpath ]]; then
scrot '%d-%m-%Y_%H-%M-%S.jpg' -e "mv \$f $dirpath"
screenshot=$(find "$dirpath" -name "*.jpg")
else
mkdir -p "$dirpath"
scrot '%d-%m-%Y_%H-%M-%S.jpg' -e "mv \$f $dirpath"
screenshot=$(find "$dirpath" -name "*.jpg")
fi
# отправляем письмо на почту
echo "Скриншот с сервера: $HOSTNAME" > $dirpath/message_body.txt
mpack -s "Скриншот" -d $dirpath/message_body.txt $screenshot your_login@mail.ru
# удаляем скриншот
rm -f $screenshot
👍31
Как сделать безопасную загрузку с полностью зашифрованным диском на Linux без загрузчика на UEFI

Наша новая статья — для довольно искушённых пользователей Linux. В ней DevOps-инженер Алексей Гаврилов разобрал, как установить Debian или аналогичный дистрибутив на полностью зашифрованный диск без загрузчика на UEFI с включённым Secure Boot.

После завершения установки вы получите включённый Secure boot с использованием личных ключей для подписи EFI-файлов, подписанные ключом файл ядра и initramfs, а также зашифрованные разделы диска за вычетом EFI boot. Это позволит уменьшить возможность векторного взлома ноутбука и усложнит жизнь потенциальному взломщику, поскольку в его распоряжении будут только подписанные EFI-файлы.

https://habr.com/ru/companies/flant/articles/835778/
👍3
Создание уведомлений и напоминаний на рабочем столе из Linux терминала

Иногда полезно получить визуальную обратную связь от скрипта. Например, когда завершается работа скрипта или задание cron, или, когда долгоиграющая сборка терпит неудачу. Или, когда во время выполнения скрипта возникает срочная проблема.

https://letsdebug.it/post/30-linux-desktop-notifications/
Основные команды PowerShell

1. Основные команды управления системой:
- Get-Help: Получение справки о командах. Например, Get-Help Get-Process показывает справку о команде Get-Process.
- Get-Command: Показать список всех доступных команд или команд, связанных с определённой задачей. Пример: Get-Command *process*.
- Get-Service: Показать все службы, установленные на системе.
- Start-Service: Запустить службу. Пример: Start-Service -Name "wuauserv".
- Stop-Service: Остановить службу.
- Restart-Service: Перезапустить службу.

2. Работа с файлами и каталогами:
- Get-ChildItem: Просмотреть файлы и каталоги (аналог команды dir или ls`). Пример: `Get-ChildItem C:\.
- Set-Location: Перейти в другой каталог (аналог cd`). Пример: `Set-Location C:\Users.
- Copy-Item: Копировать файл или папку. Пример: Copy-Item C:\source.txt C:\destination.txt.
- Move-Item: Переместить файл или папку. Пример: Move-Item C:\file.txt C:\archive\file.txt.
- Remove-Item: Удалить файл или папку. Пример: Remove-Item C:\file.txt.
- New-Item: Создать новый файл или каталог. Пример: New-Item -Path C:\ -Name "file.txt" -ItemType "file".

3. Информация о системе и процессах:
- Get-Process: Показать список всех запущенных процессов.
- Stop-Process: Остановить процесс. Пример: Stop-Process -Name "notepad".
- Get-EventLog: Просмотр журналов событий (Event Logs). Пример: Get-EventLog -LogName Application.
- Get-WmiObject: Получить информацию о системе, например, о процессоре или установленной ОС. Пример: Get-WmiObject Win32_OperatingSystem.

4. Работа с пользователями и группами:
- Get-LocalUser: Показать всех локальных пользователей.
- New-LocalUser: Создать нового локального пользователя. Пример: New-LocalUser -Name "TestUser" -Password (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force).
- Remove-LocalUser: Удалить локального пользователя.
- Add-LocalGroupMember: Добавить пользователя в локальную группу. Пример: Add-LocalGroupMember -Group "Administrators" -Member "TestUser".

5. Работа с переменными и данными:
- Set-Variable: Установить переменную. Пример: Set-Variable -Name "MyVar" -Value "Hello".
- Get-Variable: Показать значения переменных.
- Remove-Variable: Удалить переменную.
- Export-Csv: Экспорт данных в CSV-файл. Пример: Get-Process | Export-Csv -Path "C:\processes.csv".
- Import-Csv: Импорт данных из CSV-файла. Пример: Import-Csv -Path "C:\processes.csv".

6. Потоки данных и конвейеры:
- | (Pipeline): Передача данных от одной команды к другой. Пример: Get-Process | Where-Object { $_.CPU -gt 100 } — вывести процессы, которые используют больше 100 единиц процессорного времени.
- Out-File: Записать результат команды в файл. Пример: Get-Process | Out-File -FilePath "C:\processes.txt".
- Select-Object: Выбор определённых полей. Пример: Get-Process | Select-Object -Property Name, CPU.

7. Сетевые команды:
- Test-Connection: Проверить доступность компьютера (аналог команды ping`). Пример: `Test-Connection google.com.
- Get-NetIPAddress: Показать список всех IP-адресов на машине.
- Get-NetAdapter: Показать информацию о сетевых адаптерах.

8. Скрипты и автоматизация:
- Invoke-Command: Выполнить команду на удалённой системе. Пример: Invoke-Command -ComputerName "Server1" -ScriptBlock { Get-Process }.
- Start-Job: Запустить задачу в фоне. Пример: Start-Job -ScriptBlock { Get-Process }.
- Get-Job: Показать статус фоновых задач.
- Receive-Job: Получить результат выполнения фоновой задачи.

9. Обновления и безопасность:
- Install-Module: Установка PowerShell-модулей. Пример: Install-Module -Name "PSWindowsUpdate".
- Update-Module: Обновление установленных модулей.

10. Дополнительные команды:
- Clear-Host (или `cls`): Очистить экран.
- Exit: Выйти из сеанса PowerShell.
- Measure-Object: Подсчитать количество объектов, или сумму значений. Пример: Get-ChildItem | Measure-Object.
👍2
Увеличение времени сессии SSH

Бывает, что выполнение удаленно запущенной команды может затянуться, а необходимо дождаться ее выполнения (кстати, в этом случае весьма полезным может стать использование screen), или пришлось отвлечься, а сессия SSH в это время отвалилась. У меня на работе подобное случалось часто, поэтому решил увеличить на сервере таймаут сессии ssh, чтобы сохранить и соединение, и собственные нервы.

На сервере в конфигурационном файле /etc/ssh/sshd_config прописываем:
TCPKeepAlive yes
ClientAliveInterval 300
ClientAliveCountMax 60


TCPKeepAlive — установлен в «yes», значит сервер будет периодически пинговать клиента, проверяя жив ли он.
ClientAliveInterval — задает интервал пинга для проверки состояния клиента (в секундах). Параметр работает только для протокола версии 2 (Protocol 2).
ClientAliveCountMax — количество пингов клиента.
Таким образом в моем примере таймаут сессии будет равен 60*300/60 = 300 минут = 5 часов.
После изменения настроек не забудьте перезапустить сервис ssh.
👍3
Выводим список установленных пакетов в Linux по дате

Порой необходимо узнать когда тот или иной пакет был установлен в операционной системе (например, в целях аудита). В данной статье рассмотрим как вывести список установленных пакетов в Linux, отсортированный по дате установки - давайте разберемся!

https://telegra.ph/Vyvodim-spisok-ustanovlennyh-paketov-v-Linux-po-date-09-10
👍3
Полезные команды Linux. Атрибуты файлов

# chattr +a file
Разрешает только добавление данных в файл
# chattr +d file
Игнорировать данный файл при создании резервной копии с помощью программы dump
# chattr +c file
Разрешить ядру автоматически сжимать/разжимать содержимое файла
# chattr +i file1
Защита файла от каких либо изменений или манипуляций: редактирование, перемещение, удаление, создание ссылок на него
# chattr +S file1
Определяет, будет-ли при сохранении изменений, произведена синхронизация, как при использовании команды sync
# chattr +u file1
При удалении файла с данным атрибутом, его будет сохранено, что-бы оставить пользователю возможность восстановить данные в случае необходимости
# chattr +s file1
Позволяет безвозвратное удаление данного файла. При удалении файла с этим атрибутом, место на диске, занимаемое файлом, перезаписывается нулями, после чего файл уже не подлежит восстановлению
# lsattr
Листинг файлов с атрибутами
👍2
Подборка Linux утилит для системного администратора

Nezha - Легкий и элегантный аналог Zabbix
Plow - Этот инструмент был разработан для проведения нагрузочного тестирования HTTP
Hunt - Утилита для поиска файлов на локальном компьютере
AutoRegex - Регулярные выражения — это мощный инструмент для преобразования текстовых данных.
ContainerSSH - Утилита, которая позволяет вам незаметно направлять SSH-клиентов в изолированные контейнеры
Krunvm - Это инструмент, который позволяет создавать простые виртуальные машины на основе образов OCI.
Zellij - Это интересный мультиплексор, который может быть использован в качестве альтернативы tmux

https://bookflow.ru/podborka-linux-utilit-dlya-sistemnogo-administratora/
👍2