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

По всем вопросам : @Sofiia_artamonova
Download Telegram
📌Какая разница между командами GREP, AWK и SED

Команды grep, awk и sed – это мощные утилиты в Unix/Linux, которые используются для обработки и манипуляции текстом. Они имеют разные цели, хотя в некоторых случаях их можно использовать взаимозаменяемо.

1. grep – Поиск строк
- Используется для поиска строк, соответствующих заданному шаблону (обычно регулярному выражению).
- Выводит найденные строки или их части.
- Основная задача – фильтрация текста.

Примеры:

grep "error" log.txt # Найти строки, содержащие "error"
grep -i "warning" log.txt # Игнорировать регистр
grep -E "fail|error" log.txt # Использовать расширенные регулярные выражения (ERE)
grep -v "INFO" log.txt # Исключить строки, содержащие "INFO"




2. sed – Потоковый редактор
- Позволяет заменять, удалять, изменять текст на основе шаблонов.
- Работает построчно, но может также обрабатывать многострочные паттерны.
- Может использоваться для быстрого редактирования файлов.

Примеры:

sed 's/apple/orange/' file.txt # Заменить первое вхождение "apple" на "orange" в каждой строке
sed 's/error/ERROR/g' file.txt # Заменить все вхождения "error" на "ERROR"
sed '/DEBUG/d' file.txt # Удалить строки, содержащие "DEBUG"
sed -i 's/foo/bar/g' file.txt # Редактировать файл на месте (без создания копии)




3. awk – Анализ и обработка текста
- Используется для извлечения данных, обработки полей, манипуляции с текстом.
- Работает как мини-программа: может выполнять арифметические операции, фильтрацию и форматирование.
- Использует колонки (разделенные пробелами или другими разделителями) для обработки данных.

Примеры:

awk '{print $1, $3}' file.txt # Вывести 1-й и 3-й столбцы
awk -F ":" '{print $1}' /etc/passwd # Вывести имена пользователей (разделитель - двоеточие)
awk '$3 > 50 {print $1, $3}' file.txt # Вывести строки, где 3-й столбец > 50
awk '{sum+=$3} END {print "Sum:", sum}' file.txt # Подсчитать сумму 3-го столбца




Основные отличия между grep, sed и awk

grep: основное назначение - поиск строк по шаблону
grep: что делает лучше всего? - фильтрация строк по регулярным выражениям

sed: основное назначение - поиск и замена текста
sed: что делает лучше всего? - удаление, вставка строк в файле

awk: основное назначение - работа с колонками и данными
awk: что делает лучше всего? - анализ данных, извлечение полей, обработка значений

Когда использовать?
- Нужно просто найти строку в файле? → grep
- Нужно заменить или удалить текст? → sed
- Нужно обработать данные, работать с колонками? → awk

Каждая из этих утилит может быть использована совместно для более сложных задач, например:

grep "error" log.txt | awk '{print $2, $5}' | sed 's/:/-/'

(Ищем ошибки, берем 2-й и 5-й столбцы, заменяем : на `-`)
👍3
Static-get или портативные утилиты в Linux

Static-get — инструмент, с помощью которого можно скачать статически слинкованный бинарный файл нужной нам утилиты. Такой файл будет работать практически на любом дистрибутиве. В данный момент, в базе static-get доступно 930 пакетов и количество постепенно растёт.

Установка и использование.
Каких-то специфических шагов для установки делать не потребуется, но наличие wget (почему-то без него первый запуск скрипта не выполнялся корректно) и tar будет обязательным.


# dnf install git wget tar


Исполняемый файл static-get — это по сути скрипт, так что достаточно будет просто клонировать репозиторий с ним, и он уже будет готов к использованию.


# git clone https://github.com/minos-org/minos-static
# cd minos-static/
# ./static-get


Итак, с помощью скрипта мы можем: выполнить поиск нужной программы, скачать архив с ней, обновить её при необходимости, установить программу в систему и удалить её.

Скрипту так же можно передать некоторые параметры для работы — в каком репозитории искать пакеты, для какой архитектуры, какого формата они должны быть. Имеется возможность выполнить dry-run запуск или выполнить установку в verbose режиме. Несколько примеров работы ниже:

— Скачиваем и запускаем nano:


# ./static-get --extract nano
# ./nano/bin/nano --version
GNU nano, version 2.4.2
(C) 1999..2015 Free Software Foundation, Inc.
Email: [email protected] Web: https://www.nano-editor.org/
Compiled options: --disable-libmagic --disable-nls --disable-utf8



— Устанавливаем qemu в систему:


# ./static-get --install qemu
qemu-1.4.0-1.tar.xz
# /bin/qemu-io --version
qemu-io version 0.0.1


— Удаляем qemu:


# ./static-get --remove qemu
# /bin/qemu-io --version
-bash: /bin/qemu-io: No such file or directory


— Ищем gcc в репозитории:


# ./static-get --search gcc
gcc-4.6.1-2.tar.xz:672ba63bc0dd505104f22e4c3295c0e6


В своей работе static-get базируется на нескольких проектах — bifrost-autobuild, morpheus-autobuild, rlsd2-autobuild, misc-autosync. Бинарные файлы описываются в специальных рецетах (предпочтительны рецепты для bifrost), а после сборки архивы с пакетами публикуются в репозитории s.minos.io, откуда скриптом и выполняется установка.
2
📌 Шпаргалка по командам Docker
3
Проверка портов

Проверить порты можно с помощью следующих команд:

nc: Netcat – простая утилита Unix, которая считывает и записывает данные через сетевые соединения, используя протокол TCP или UDP.
nmap: Nmap («Network Mapper») – это инструмент с открытым исходным кодом для исследования сети и аудита безопасности. Он был разработан для быстрого сканирования больших сетей.

telnet: Утилита telnet используется для интерактивного взаимодействия с другим хостом по протоколу TELNET.
netstat: Утилита netstat позволяет увидеть открытые в системе порты, а также открытые на данный момент сетевые соединения.

ss: Утилита ss — это современная альтернатива для команды netstat. В отличие от netstat, которая берет информацию из каталога /proc, утилита ss напрямую связывается со специальной подсистемой ядра Linux

lost: Утилита lsof позволяет посмотреть все открытые в системе соединения, в том числе и сетевые.

https://telegra.ph/Proverka-portov-09-17
3
Подборка Linux утилит для системного администратора

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

https://bookflow.ru/podborka-linux-utilit-dlya-sistemnogo-administratora/
2
https://quickref.me - шпаргалка по разным утилитам для Linux и языкам программирования.
3
WebTTY: Доступ по SSH через браузер, даже там, где порт закрыт

Как мы с вами знаем, SSH — надежный и безопасный протокол для удаленного управления системами, который у многих является неотъемлемой частью работы. Однако, что делать, когда стандартные порты SSH заблокированы или закрыты, например, в строго защищенных корпоративных сетях или в облачных средах с жесткой политикой безопасности? Или что делать, если под рукой есть только браузер и нет возможности использовать обычный терминал? Или вам вживую нужно смотреть/управлять сессией?

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

В этой статье мы рассмотрим, как WebTTY может быть использован для доступа к SSH-портам через браузер, даже если они закрыты, как его можно настроить и когда его можно использовать. Основана цель данного материала – познакомить вас с таким вариантом подключения и показать, как использовать данный инструмент. Надеюсь, что представленные примеры и объяснения помогут вам оценить его возможности и найти полезные применения в вашей практике.

https://habr.com/ru/articles/840352/
1👍1
Как изменить дату установки пароля пользователя в Active Directory

У учетной записи пользователя в ActiveDirectory есть два атрибута, в которых хранится последнее время смены пароля учетной записи. Это атрибуты pwdLastSet и PasswordLastSet.

Различаются они форматом записи. PasswordLastSet хранит данные в нормальном читабельном виде, а вот в pwdLastSet дата хранится в виде большого целого числа, которое представляет собой количество 100-наносекундных интервалов, прошедших с 12:00 полуночи, 1 января 1601 года нашей эры в формате UTC (Coordinated Universal Time).

https://telegra.ph/Kak-izmenit-datu-ustanovki-parolya-polzovatelya-v-Active-Directory-08-08
2
Совет по Linux 💡

Найдите все нерабочие символьные ссылки в вашей системе с помощью:


find . -xtype l
👍32
Краткое руководство по Load Balancing
1
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 [email protected]
# удаляем скриншот
rm -f $screenshot
2
Контроль оплаты домена через Zabbix

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

На сервере с Zabbix’ом установим Zabbix-агент. Он и будет у нас заниматься проверкой наших доменов.

https://telegra.ph/Kontrol-oplaty-domena-cherez-Zabbix-09-26
1
Работа с архивами

Создать .tar.gz:
tar -czvf file.tar.gz /full/path — создать .tar.gz (архив)
tar -cjvf file.tar.bz2 /full/path — создать .tar.bz2 (архив)


Распаковать .tar:
tar -xvf file.tar.gz

Распаковать gz:
gunzip yourfile.gz

Распаковать многотомный архив:
7za x arch.7z.001

Получить листинг файлов в архиве:
tar -tf <path_to_tarfile>

Извлечь конкретный файл из архива:
tar -xf <path_to_tarfile> [<file_1_in_archive> <file_2_in_archive> ..]

Скопировать файл на сервер:
scp -P 12322 file.tar [email protected]:/home/user
4👍2
This media is not supported in your browser
VIEW IN TELEGRAM
DUF (Disk Usage/Free) — это современная утилита для отображения информации о дисковом пространстве на Linux, BSD, macOS и Windows. Она предоставляет удобный интерфейс для мониторинга использования дисков с цветовой индикацией и выводом полезной информации, такой как объем свободного и занятого места, проценты использования и точки монтирования.

Основные особенности DUF:

- Понятный и цветной интерфейс.
- Кроссплатформенность (Linux, BSD, macOS и Windows).
- Поддержка различных файловых систем.
- Возможность фильтрации и настройки отображаемых данных.

Эта утилита — полезный инструмент для системных администраторов и пользователей, которым требуется быстрая и удобная проверка состояния дисков в системе.

https://www.cyberciti.biz/open-source/command-line-hacks/duf-disk-usage-free-utility-for-linux-bsd-macos-windows/
1
This media is not supported in your browser
VIEW IN TELEGRAM
Netdata - это высокоточный мониторинг инфраструктуры и производительности в режиме реального времени.

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

Если метрика может быть собрана, она будет собрана: с 2 000+ автоопределяемых метрик и 100+ предварительно настроенных предупреждений на каждый узел.

https://github.com/netdata/netdata
2