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

По всем вопросам : @Sofiia_artamonova
Download Telegram
Шпаргалка по клавиатурным сочетаниям Midnight Commander
5
Примеры скриптов для системного администрирования

Коллекция примеров пошаговых сценариев администрирования систем с помощью PowerShell.

https://learn.microsoft.com/ru-ru/powershell/scripting/samples/sample-scripts-for-administration?view=powershell-7.2
2
Шпаргалка по скриптам Bash

Основы написания скриптов на Bash
Условные операторы
Циклы Bash
Арифметические операторы
Арифметические условные операторы
Операторы сравнения строк
3
💡Советы по написанию и отладке Bash скриптов

Комментарии
Используйте комментарии для объяснения кода. Это поможет вам и другим разработчикам понять, что делает скрипт. Комментарии начинаются с символа #.



#!/bin/bash
# This script prints the current date and time
echo "Current date and time: $(date)"


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


#!/bin/bash -x
echo "Debugging mode enabled"


Логирование
Записывайте важные события и ошибки в лог-файлы для последующего анализа. Это помогает отслеживать работу скрипта и выявлять проблемы.


#!/bin/bash
LOG_FILE="/path/to/logfile.log"
echo "Script started at $(date)" >> "$LOG_FILE"



Обработка ошибок
Используйте команды set -e и trap для обработки ошибок. Команда set -e завершает выполнение скрипта при ошибке, а команда trap позволяет выполнять команды при возникновении определенных событий.


#!/bin/bash
set -e
trap 'echo "An error occurred. Exiting..."' ERR
echo "Starting script..."
# Your script commands here


Использование функций
Разделяйте код на функции для улучшения читаемости и повторного использования. Функции позволяют структурировать код и делать его более понятным.


#!/bin/bash
function greet {
local name=$1
echo "Hello, $name!"
}
greet "John"
👍1
📌 Шпаргалка по tmux
2
Шпаргалка по grep

grep — это мощный инструмент для поиска текста в файлах на основе регулярных выражений.


Основные команды:

1. Поиск строки в файле:

grep "строка" имя_файла

Ищет указанную строку в файле.

2. Поиск в нескольких файлах:

grep "строка" файл1 файл2


3. Поиск рекурсивно:

grep -r "строка" /путь/к/каталогу

Ищет строку во всех файлах указанного каталога.

4. Игнорирование регистра:

grep -i "строка" имя_файла


5. Показать номер строки:

grep -n "строка" имя_файла


6. Вывод строк, не содержащих шаблон:

grep -v "строка" имя_файла


7. Подсветка совпадений:

grep --color "строка" имя_файла


8. Подсчитать количество совпадений:

grep -c "строка" имя_файла



Расширенные команды:

1. Использование регулярных выражений:

grep -E "регулярное_выражение" имя_файла

Или:

egrep "регулярное_выражение" имя_файла


2. Поиск с указанием количества строк до и после совпадения:

grep -A 3 -B 2 "строка" имя_файла

-A (after) и -B (before) указывают количество строк, которые будут выведены до и после найденной строки.

3. Поиск только имени файла:

grep -l "строка" *


4. Инвертированный поиск файлов:

grep -L "строка" *

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



Полезные опции:

- -w — ищет полные слова.
- -o — выводит только совпавшие строки.
- -q — тихий режим, без вывода в терминал, используется для проверки совпадений.

Примеры:

1. Поиск строки "error" в логах:

grep "error" /var/log/syslog


2. Поиск строк с IP-адресами:

grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' имя_файла


3. Поиск строки и запись результата в файл:

grep "pattern" имя_файла > output.txt
2
Как работает Docker
1
Создаем логические тома LVM на Linux

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

Это краткое руководство по внедрению LVM на вашем linux-сервере или рабочей станции.

https://telegra.ph/Sozdaem-logicheskie-toma-LVM-na-Linux-10-09
1👍1
Выводим список установленных пакетов в Linux по дате

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


https://telegra.ph/Vyvodim-spisok-ustanovlennyh-paketov-v-Linux-po-date-09-10
2
Шпаргалка по маскам подсети CIDR
2👍2🔥2
Стандартные инструменты для диагностики системы 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 — универсальный инструмент для сбора и анализа данных о системе (сотни различных источников скомбинированные вместе)
3
Трюки терминала Bash

Полезные комбинации клавиш (хоткеи) и небольшие хитрости, которые сделают Вашу работу в Linux более эффективной.

Горячие клавиши" Bash с Ctrl
Ctrl + n — то же самое, что и стрелка вниз.
Ctrl + p — то же самое, что и стрелка вверх.
Ctrl + r — поиск по предыдущим командам из истории команд (history). Продолжайте нажимать Ctrl + r, чтобы искать дальше. Ctrl + Shift + r — поиск в другую сторону.
Ctrl + s — остановить вывод в терминал.
Ctrl + q — восстановить вывод в терминал после Ctrl + s.
Ctrl + a — перейти к началу строки (аналог клавиши Home).
Ctrl + e — перейти к концу строки (аналог клавиши End).
Ctrl + d — если вы ввели что-то, то Ctrl + d удаляет символ под курсором. В противном случае означает конец ввода и завершает текущую сессию Bash.
Ctrl + k — удалить весь текст от курсора до конца строки.
Ctrl + x + backspace — удалить весь текст от начала строки до курсора.
Ctrl + t — переставить символ до курсора на символ под курсором. Нажмите Esc + t для перестановки двух слов до курсора.
Ctrl + w — удалить слово до курсора; затем Ctrl + y, чтобы вставить его.
Ctrl + u — удалить строку перед курсором; Ctrl + y для вставки его.
Ctrl + _ — отменить ввод.
Ctrl + l — очищает окно терминала. То же самое, что и clear.
Ctrl + x + Ctrl + e — запускает редактор, определённый в переменной $EDITOR, для ввода команды. Полезно для многострочных команд.

Изменить заглавные на строчные и наоборот
Esc + u — преобразовать буквы от курсора до конца строки в заглавные буквы.
Esc + l — преобразовать буквы от курсора до конца строки в нижний регистр.
Esc + c — заменить букву под курсором на заглавную.

Запустить предыдущую команду ещё раз
Запустить команду из истории по номеру (например, 53)
!53
!! — запуск последней команды.
sudo !! — запустить предыдущую команду с sudo.

Запускает последнюю команду и меняет какой-то параметр. Например, меняем "aaa" на "bbb":
# Последняя команда: echo 'aaa'
$ ^aaa^bbb

$ echo 'bbb'
bbb


Важно: предыдущая команда заменит только первое вхождение "aaa". Если вы хотите заменить все вхождения, используйте :&:
^aaa^bbb^:&
# или
!!:gs/aaa/bbb/


Запустить последнюю команду, которая начинается с...
Например, до этого в истории команд была команда cat filename:
!cat
# или
!c


— запускает cat filename ещё раз.

Указание файлов по шаблону в Bash
/etc/pa*wd/etc/passwd — символ * означает "несколько любых символов".
/b?n/?at/bin/cat — символ ? означает "один любой символ".
ls -l [a-z]* — вывести список файлов, содержащих только буквы латинского алфавита. В квадратных скобках [] перечисляются символы, которые будут искаться. А символ * после [] означает "хоть сколько раз".
ls {*.sh,*.py} — вывести все .sh и .py файлы. {} используется для группировки нескольких шаблонов по принципу "или".

Полезные переменные окружения Bash
Короткие переменные:
$0 — оболочка командной строки или путь до запускаемого файла.
$1, $2, $3, ... — аргументы запуска скрипта.
$# — число аргументов, переданных в скрипт из терминала.
$? — код завершения последней команды.
$- — текущие опции, установленные для оболочки.
$$ — идентификатор текущего процесса.
$! — идентификатор процесса, завершённого последним.

Более длинные, но тоже полезные переменные:
$DESKTOP_SESSION — текущий менеджер дисплеев.
$EDITOR — редактор текста по умолчанию.
$LANG — используемый системой язык.
$PATH — список директорий, в которых будут искаться исполняемые файлы.
$PWD — текущая директория.
$SHELL — текущая оболочка командной строки.
$USER — имя текущего пользователя.
$HOSTNAME — имя текущего хоста (компьютера).
5👍2