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

По всем вопросам : @Sofiia_artamonova
Download Telegram
Bash-Oneliner

Несколько лет назад я занимался биоинформатикой и был поражен тем, как однокомандные bash-команды могут быть намного быстрее, чем мои скучные скрипты. Учеба командам командной строки и написание скриптов помогло мне сэкономить много времени. В последние годы я занимаюсь облачными вычислениями и продолжаю записывать полезные команды здесь. Не все из них однострочные, но я стараюсь делать их краткими и быстрыми. В основном я использую Ubuntu, Amazon Linux, RedHat, Linux Mint, Mac и CentOS, прошу прощения, если команды не работают на вашей системе.

Этот блог будет посвящен простым bash-командам для парсинга данных и обслуживания систем Linux, которые я приобрел на работе и при сдаче экзамена LPIC. Прошу прощения за отсутствие подробных источников для всех команд, но, вероятно, они взяты из любимого Google и Stack Overflow.

Примеры:

Случайная генерация пароля (например, сгенерировать 5 паролей длиной по 13 символов каждый)
sudo apt install pwgen
pwgen 13 5
#sahcahS9dah4a xieXaiJaey7xa UuMeo0ma7eic9 Ahpah9see3zai acerae7Huigh7


Случайный выбор 100 строк из файла
shuf -n 100 filename

Случайный порядок (лотерея)
for i in a b c d e; do echo $i; done | shuf

Вывести серию случайных чисел в диапазоне (например, перемешать числа от 0 до 100, затем случайным образом выбрать 15 из них)
shuf -i 0-100 -n 15

Случайное число от 1 до 10
echo $(((RANDOM %10)+1))
Команды мониторинга и отладки

top отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (с автоматическим обновлением данных)

ps -eafw отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды)

ps -e -o pid,args --forest вывести PID’ы и процессы в виде дерева

pstree отобразить дерево процессов

kill -9 98989
kill -KILL 98989
«убить» процесс с PID 98989 «на смерть» (без соблюдения целостности данных)

kill -TERM 98989 Корректно завершить процесс с PID 98989

kill -1 98989
kill -HUP 98989
заставить процесс с PID 98989 перепрочитать файл конфигурации

lsof -p 98989 отобразить список файлов, открытых процессом с PID 98989

lsof /home/user1 отобразить список открытых файлов из директории /home/user1

strace -c ls > /dev/null вывести список системных вызовов, созданных и полученных процессом ls

strace -f -e open ls > /dev/null вывести вызовы бибилотек

watch -n1 ‘cat /proc/interrupts’ отображать прерывания в режиме реального времени

last reboot отобразить историю перезагрузок системы

last user1 отобразить историю регистрации пользователя user1 в системе и время его нахождения в ней

lsmod вывести загруженные модули ядра

free -m показать состояние оперативной памяти в мегабайтах

smartctl -A /dev/hda контроль состояния жёсткого диска /dev/hda через SMART

smartctl -i /dev/hda проверить доступность SMART на жёстком диске /dev/hda

tail /var/log/dmesg вывести десять последних записей из журнала загрузки ядра

tail /var/log/messages вывести десять последних записей из системного журнала
Настраиваем дампы ядра в Linux

Core Dump (Дамп ядра) - это файл, который автоматически генерируется ядром Linux после сбоя программы. Этот файл содержит данные о памяти, значениях регистров и стеке вызовов приложения на момент сбоя. Да, обычно появление сообщения о создании Core Dump является не слишком приятным сюрпризом, которых лучше бы было поменьше. Но если уж Core Dump был создан, то лучше, чтобы он содержал максимум полезной информации, которая поможет разработчикам и администраторам разобраться в причинах возникшего сбоя.

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

Это простая утилита командной строки, используемая для отображения списка подключенных файловых систем или поиска файловой системы в /etc/fstab, /etc/mtab или /proc/self/ mountinfo.

Для отображения списка подключенных файловых систем, выполните в командной строке следующую команду.
По умолчанию команда findmnt отображает файловые системы в древовидном формате.
# findmnt

Чтобы отобразить информацию в виде обычного списка, используйте параметр -l, как показано ниже
# findmnt -l

Можно выбрать отображение файловых систем только определенного типа, используя параметр командной строки -t, за которым следует тип файловой системы, такой как XFS или EXT4.
# findmnt --fstab -t xfs или # findmnt --fstab -t ext4

Поиск файловой системы, используя точку монтирования.

Например, следующая команда отображает все файловые системы /etc/fstab, где каталогом точки монтирования является /mnt/external/disk2.
# findmnt --fstab /mnt/external/disk2 #this prints bind mounts where /mnt/external/disk2 is a source
или # findmnt --fstab --target /mnt/external/disk2

Выводим все файловые системы /etc/fstab и преобразовываем теги LABEL = и UUID = в реальные имена устройств, добавьте ключ – –evaluate
# findmnt --fstab --evaluate

Отобразить только точку монтирования, в которой смонтирована файловая система с меткой «/ boot» или «/», используйте следующую команду.
# findmnt -n --raw --evaluate --output=target LABEL=/boot или # findmnt -n --raw --evaluate --output=target LABEL=/

Findmnt также позволяет отслеживать действия по монтированию, размонтированию, перемонтированию и перемещению каталога, например, в /mnt/test.
# findmnt --poll --mountpoint /mnt/test

Если вы хотите больше информации в выводе, используйте ключ –verbose.
# findmnt --real --verbose
Http logs viewer 💪

HTTP Logs Viewer (ранее Apache Logs Viewer) — это бесплатный и мощный инструмент, который позволяет с легкостью отслеживать, просматривать и анализировать логи Apache/IIS/nginx. Он предоставляет функции поиска и фильтрации логов, выделяя различные HTTP-запросы на основе их кода состояния. Также имеется возможность создания отчетов, благодаря чему вы можете за несколько секунд сгенерировать круговую или столбчатую диаграмму. В дополнение к этому, доступны статистические данные, где можно увидеть самые популярные запросы, основные ошибки, количество кодов состояния, общий объем переданных данных и многое другое.
Наглядное руководство по туннелированию SSH и переадресации портов

Если говорить коротко, то я жалею, что не знал о пробросе портов и туннелировании раньше. В этой статье я пытаюсь лучше понять это и поделиться с вами некоторым опытом и советами.
Темы: сценарии использования, конфигурация, SSH jumphosts, локальная/удаленная/динамическая переадресация портов и ограничения
Команда grep в Linux

Это эффективная утилита для поиска текста, встроенная в каждый из популярных дистрибутивов ОС семейства GNU / Linux.

Установка в Debian и Ubuntu
$ sudo apt install grep

Установка в RHEL, CentOS и Fedora
$ sudo yum install grep


Поиск файлов с помощью команды grep
# dpkg -l | grep -i python

Поиск всех файлов с расширением .mp3
# find . –name "*.mp3" | grep –i "ABC" | grep –vi "remix"
Процесс загрузки Linux

Диаграмма ниже показывает этапы:

Шаг 1 - Когда мы включаем питание, загружается прошивка BIOS (Basic Input/Output System) или UEFI (Unified Extensible Firmware Interface) из энергонезависимой памяти и выполняет POST (Power On Self Test).

Шаг 2 - BIOS/UEFI обнаруживает устройства, подключенные к системе, включая процессор, оперативную память и устройства хранения данных.

Шаг 3 - Выбирается устройство для загрузки операционной системы. Это может быть жесткий диск, сетевой сервер или CD-ROM.

Шаг 4 - BIOS/UEFI запускает загрузчик (GRUB), который предоставляет меню для выбора операционной системы или функций ядра.

Шаг 5 - После подготовки ядра происходит переход в пользовательское пространство. Ядро запускает systemd как первый процесс в пользовательском пространстве, который управляет процессами и службами, проверяет оставшееся оборудование, монтирует файловые системы и запускает рабочую среду.

Шаг 6 - systemd по умолчанию активирует target unit при загрузке системы. Также выполняются другие анализирующие модули.

Шаг 7 - Система выполняет набор скриптов для настройки среды.

Шаг 8 - Пользователям отображается окно входа в систему. Система готова к работе.
💡 Консольный калькулятор Linux

Надо что-то вычислить, а под рукой только консоль? Воспользуйтесь встроенным калькулятором - командой expr.

Пользоваться ею просто. Например, сложение:
expr 2 + 2

Вычитание:
expr 12 - 2

Знаки умножения и деления нужно дополнительно экранировать:
expr 5 \* 4
expr 36 \/ 4

Можно использовать скобки, но их также нужно экранировать и отделить пробелами от знаков операций и операндов:
expr 12 - \( 2 + 2 \)

Чтобы узнать больше возможностей команды запустите ее с ключом —help
Настройка iptables в Linux

Рассмотрим использование наиболее популярного в дистрибутивах Linux межсетевого экрана iptables на Ubuntu 20.04 LTS 64-bit.
Используя любой SSH клиент, например PuTTY для Windows подключаемся к машине.
Выполним первоначальную настройку сервера с целью повышения степени защищенности системы. Все действия, описанные в данной статье, выполняются с правами суперпользователя root.

https://telegra.ph/Nastrojka-iptables-v-Linux-06-30
Объединение файлов командой cat

Команду cat в большинстве случаев используют только для просмотра файлов. На самом деле одно из ее предназначений это конкатенация (объединение) файлов. А название команды происходит от слова catenate (сцепить), то есть присоединение одного после другого.

Под объединением файлов понимается их соединение. Например, если мы имеем два текстовых файла и в одном из них записана строка:
My text file 1

А в другом:
My text file 2

То после объединения мы получим файл с двумя строками:
My text file 1
My text file 2


То есть происходит простое соединение файлов. К содержимому одного добавляется содержимое другого. Это касается не только текстовых файлов, но и всех остальных (бинарных, например).

Чтобы объединить два файла командой cat нужно просто указать в качестве аргументов названия этих файлов и направить результат выполнения в новый файл. Например, мы хотим объединить два файла file1 и file2, а результат записать в новый файл file12. Тогда мы должны выполнить следующую команду:

cat file1 file2 > file12
Вы можете объединить неограниченное количество файлов. Например, чтобы объединить четыре файла и записать результат в файл myfile, выполните команду:

cat file1 file2 file3 file4 > myfile
htop и многое другое на пальцах

На протяжении долгого времени я не до конца понимала htop. Я думала, что средняя загрузка [load average] в 1.0 означает, что процессор загружен на 50%, но это не совсем так. Да и потом, почему именно 1.0?

Затем я решила во всём разобраться и написать об этом. Говорят, что лучший способ научиться новому — попытаться это объяснить.

https://habr.com/ru/articles/316806/
Шпаргалка по повышению привилегий в Linux

Эта шпаргалка предназначена для тех, кто готовится к OSCP, чтобы помочь им понять различные методы эскалации привилегий на машинах под управлением Linux и CTF с примерами.

https://github.com/Ignitetechnologies/Linux-Privilege-Escalation