Типичный Сисадмин
1.24K subscribers
351 photos
43 videos
195 links
⚙️Информация для системного администратора
Download Telegram
Анализатор, который уверенна будет полезен!

GoAccess

GoAccess был разработан как быстрый анализатор логов, работающий в терминале. Основная идея заключается в быстром анализе и просмотре статистики веб-сервера в реальном времени без необходимости использования браузера (это особенно удобно, если вы хотите быстро проанализировать лог доступа через SSH или просто предпочитаете работать в терминале).

Хотя вывод в терминал является стандартным, программа также способна генерировать полный автономный HTML-отчет в реальном времени (что отлично подходит для аналитики, мониторинга и визуализации данных), а также отчеты в формате JSON и CSV.

https://goaccess.io/
👍21
Выводим список установленных пакетов в Linux по дате

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

https://telegra.ph/Vyvodim-spisok-ustanovlennyh-paketov-v-Linux-po-date-09-10
4
Шпаргалка по PowerShell


Основные команды
- Get-Help <команда> – получить справку по команде
- Get-Command – список доступных команд
- Get-Command -Module <модуль> – команды из конкретного модуля
- Get-Alias – список псевдонимов команд
- Get-Process – список запущенных процессов
- Get-Service – список служб

Навигация по файловой системе
- Get-Location – текущий путь
- Set-Location <путь> – перейти к каталогу
- Get-ChildItem или ls – просмотр содержимого каталога
- New-Item -Path <путь> -Name <имя> -ItemType <тип> – создать файл или папку

Работа с файлами и папками
- Copy-Item -Path <источник> -Destination <назначение> – копировать файл/папку
- Move-Item -Path <источник> -Destination <назначение> – переместить файл/папку
- Remove-Item -Path <путь> – удалить файл/папку
- Rename-Item -Path <путь> -NewName <новое имя> – переименовать файл/папку

Работа с текстом и выводом
- Write-Output "текст" – вывод текста
- Write-Host "текст" – вывод текста на экран
- Read-Host -Prompt "вопрос" – ввод данных от пользователя
- Get-Content <файл> – чтение содержимого файла
- Set-Content <файл> – запись в файл
- Add-Content <файл> – добавление текста в файл

Переменные
- $<имя_переменной> = значение – создание переменной
- $var += значение – добавление к значению переменной
- $null – пустое значение

Условия и циклы
- if (<условие>) { <действие> } – условие if
- foreach ($item in $array) { <действие> } – цикл foreach
- while (<условие>) { <действие> } – цикл while

Работа с процессами и службами
- Start-Process <программа> – запуск программы
- Stop-Process -Name <имя> – завершение процесса
- Start-Service <служба> – запуск службы
- Stop-Service <служба> – остановка службы

Фильтрация и сортировка
- Where-Object { <условие> } – фильтрация объектов
- Sort-Object <свойство> – сортировка объектов

Примеры:
1. Получение списка файлов:

Get-ChildItem -Path "C:\папка"


2. Копирование файла:

Copy-Item -Path "C:\путь\файл.txt" -Destination "D:\копия\файл.txt"


3. Вывод чисел от 1 до 10:

for ($i = 1; $i -le 10; $i++) { Write-Output $i }


4. Фильтрация процессов по имени:

Get-Process | Where-Object { $_.Name -eq "notepad" }
1
Kopia — кроссплатформенный инструмент резервного копирования для Windows, macOS и Linux с быстрым инкрементным резервным копированием, сквозным шифрованием на стороне клиента, сжатием и дедупликацией данных. Включены CLI и GUI.

Источник
3
Как очистить историю bash при выходе из системы

Как автоматически очищать историю GNU Bourne-Again SHell при выходе из оболочки shell?

Отключите переменную оболочки HISTFILE при входе в систему, чтобы история команд не сохранялась при выходе из оболочки.


$ echo "unset HISTFILE" | sudo tee /etc/profile.d/unset_histfile.sh


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

Внимание, это очень неудобно, так как полностью отключит историю в оболочке входа в систему.


$ echo "HISTSIZE=0" | sudo tee /etc/profile.d/disable_histsize.sh


Создайте /etc/bash.bash_logout файл, который будет выполняться при выходе из шелла.

Используйте его для очистки истории.

Не волнуйтесь, он будет выполнен после отдельного файла очистки оболочки входа ~/.bash_logout.


$ echo "history -c" | sudo tee /etc/bash.bash_logout


Обратите внимание, он не будет записывать пустой список истории в файл истории.

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

Это также означает, что список истории не будет инициализирован из файла истории при запуске.

Удалите существующий файл истории ~ /.bash_history, чтобы все было в порядке.

Но помните о других пользователях.

Вы всегда можете сохранить список истории в специальный файл.

Обратите внимание, что это добавит текущий список истории в файл.


$ HISTFILE=session_history.txt history -w
$ cat session_history.txt
cat .bash_history
HISTFILE=session_history.txt history -w
👍21
Горячие клавиши для работы в терминале Linux

Перемещение по строке
← , → или Ctrl + b, Ctrl + f Смещение курсора на один символ левее или правее.
Ctrl + →, Ctrl + ←
или
Alt + b, Alt + f Смещение курсора на одно слово влево или вправо
Ctrl + a, Home Установить курсор в начало строки
Ctrl + e, End Установить курсор в конец строки
Ctrl + xx Переход между двумя последними позициями курсора

Сочетания клавиш для редактирования строки в терминале.
Редактирование строки


Tab, Ctr + i Автодополнение команды или пути
Tab, tab или Alt + ?(Shift+/) Представление вариантов автодополнения
Backspace, Ctrl + h Удаление символа перед курсором
Ctrl + d Удалить символ за курсором
Ctrl + w или Alt + Backspace Удалить все символы от курсора до пробела слева
Alt + d, Esc + d Удалить символы от курсора до конца слова
Ctrl + y Вставить слова, которые были удалены с помощью Alt+d, Ctrl+w
Alt + \ Удалить любое количество пробелов вместе, где стоит курсор.
Alt + r, Esc + r Отменить все изменения внесенные в строку
Alt + c Изменить регистр буквы под курсором на заглавный и переместить курсор в конец слова
Alt + u Изменить регистр всех букв от курсора до конца слова на верхний регистр
Alt + l Изменить регистр всех букв от курсора до конца слова на нижний регистр
Alt + t Поменять местами слово под курсором и предыдущее слово
Ctr + t Переместить символ перед курсором под курсор
Ctrl + _(Sift+-) Откат редактирования (Undo)

Сочетания клавиш для просмотра истории команд.
История команд


Ctrl + r Поиск ранее введенной команды в истории
↑, ↓ или Ctrl + p, Ctrl + n Перемещение по истории ранее введенных команд и путей
Ctrl + o Вызвать последнею введенную команду
Alt + . или Esc + . Вставить аргумент команды, выполненной ранее
Alt + < (Shift+,) Повторить первую команду в буфере истории
Сочетания клавиш для управления выводом информации на экран.

Вывод на экран

Ctrl + l Очистка окна терминала
Ctrl + s Заморозить терминал
Ctrl + q Продолжить работу терминала
Ctrl + c Прервать работу терминальной утилиты
Ctrl + z Перевести работу терминальной утилиты в фоновый режим
Ctrl + d Выйти из командной оболочки bash
2
Graphpath генерирует сетевую диаграмму ASCII из таблицы маршрутов Unix/Linux прямо в терминале.

https://github.com/ocochard/graphpath
👍1
Проверка доступности доменного имени с помощью bash


#!/bin/bash

# Проверка доступности домена
if [ "$#" -eq 0 ]; then
echo "Укажите хотя бы одно доменное имя!"
exit 1
fi

DOMAINS=( '.com' '.co.uk' '.net' '.org' '.ru' )
for DOMAIN in "$@"; do
for TLD in "${DOMAINS[@]}"; do
if whois "$DOMAIN$TLD" | grep -qE 'No match|NOT FOUND|available'; then
echo "$DOMAIN$TLD : доступен"
else
echo "$DOMAIN$TLD : занят"
fi
done
done

Сохраните этот скрипт в файл, например check_domain.sh, и дайте ему права на выполнение с помощью команды chmod +x check_domain.sh. Запустите его, передав доменное имя в качестве аргумента.
1
Как работает Docker
1
Пример 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="admin@example.com"
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
2👍1
Bash. Проверки файлов
Kоманды позволяют проверять различные условия, касающиеся файлов

-d file # Проверяет, существует ли файл, и является ли он директорией.
-e file # Проверяет, существует ли файл.
-f file # Проверяет, существует ли файл, и является ли он файлом.
-r file # Проверяет, существует ли файл, и доступен ли он для чтения.
-s file # Проверяет, существует ли файл, и не является ли он пустым.
-w file # Проверяет, существует ли файл, и доступен ли он для записи.
-x file # Проверяет, существует ли файл, и является ли он исполняемым.
file1 -nt file2 # Проверяет, новее ли file1, чем file2.
file1 -ot file2 # Проверяет, старше ли file1, чем file2.
-O file # Проверяет, существует ли файл, и является ли его владельцем текущий пользователь.
-G file # Проверяет, существует ли файл, и соответствует ли его идентификатор группы идентификатору группы текущего пользователя.

#!/bin/bash

mydir=/home/likegeeks

if [ -d $mydir ] # если файл сущетсвует и он является директорией
then
echo "The $mydir directory exists" # выводим сообщение
cd $mydir # переходим в него
ls # отображаем содержимое
else # ИНАЧЕ
echo "The $mydir directory does not exist"
fi
1👍1
Haskell Dockerfile Linter

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

https://github.com/hadolint/hadolint
1
Утилита для бэкапов Borgbackup

Дедуплицирующий архиватор с сжатием и защищенным шифрованием.

BorgBackup дает вам:
Экономия места при хранении резервных копий.
Безопасное, аутентифицированное шифрование.
Сжатие: lz4, zstd, zlib, lzma или без него.
Возможность монтирования резервных копий с помощью FUSE.
Простая установка на различных платформах: Linux, macOS, BSD, ...
Свободное программное обеспечение (лицензия BSD).
Поддерживается большим и активным сообществом разработчиков с открытым исходным кодом.

GitHub https://github.com/borgbackup/borg

Demo https://www.borgbackup.org/demo.html
🔥21👍1
Как быстро очистить лог-файлы, не перезапуская сервис

Привет, коллеги! Сегодня хочу показать простой, но очень полезный приём для работы с логами. Иногда лог-файлы разрастаются до гигантских размеров, и хочется их обнулить — но без остановки сервиса, который пишет в этот файл.

Вот как это сделать:


: > /var/log/your-log.log


Или, альтернативно:


truncate -s 0 /var/log/your-log.log


📌 Что здесь происходит:

- : > — это no-op команда (:) с перенаправлением вывода в файл, по сути затирает его.
- truncate -s 0 — устанавливает размер файла в 0 байт.

Главное: не удаляйте лог-файл напрямую!
Если вы сделаете rm /var/log/your-log.log, то большинство демонов продолжат писать в уже открытый файловый дескриптор — и вы потеряете лог, не освободив место.

Если лог-файл всё-таки нужно удалить — сделайте это аккуратно:


> /var/log/your-log.log && systemctl reload your-service
2
Шпаргалка по работе с Tmux (терминальный мультиплексор)

1. Установка

CentOS (нужен подключенный репо EPEL)
# yum install tmux
Fedora
# dnf install tmux
Ubuntu/Debian
# apt-get install tmux


2. Конфигурационные файлы

(пользователя, системный):
~/.tmux.conf
/etc/tmux.conf


До версии 2.1
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on
set -g mode-mouse on



3. Работа с Tmux

Старт
# tmux //без параметров будет создана сессия 0
# tmux new -s session1 //новая сессия session1. Название отображается снизу-слева в квадратных скобках в статус строке. Далее идет перечисление окон. Текущее окно помечается звездочкой.

Префикс (с него начинаются команды)
<C-b> (CTRL + b)

Новое окно (нажать CTRL+b, затем нажать с)
<C-b c>

Список окон
<C-b w> // переключиться курсором вверх-вниз

Переключение
<C-b n> // следующее окно
<C-b p> // предыдущее окно
<C-b 0> // переключиться на номер окна

Окна можно делить на панели (Panes)
Как в тайловых (мозаичных) оконных менеджерах.

Деление окна горизонтально
<C-b ">
либо команда
# tmux split-window -h

Деление окна вертикально
<C-b %>
либо команда
# tmux split-window -v

Переход между панелей
<C-b стрелки курсора> // либо режим мыши

Изменение размеров панелей
<C-b c-стрелки> // либо режим мыши

Закрытие окон
<C-b x> // нужно подтвердить y
либо
# exit

Отключение от сессии
<C-b d>
либо
# tmux detach

Список сессий
# tmux ls

Подключиться к работающей сессии
# tmux attach //подключение к сессии, либо к единственной, либо последней созданной
# tmux attach -t session1 // подключение к сессии session1

Выбрать сессию
<C-b s>

Завершение сессии
# tmux kill-session -t session1

Завершить все сессии
# tmux kill-server

Список поддерживаемых комманд
# tmux list-commands

Дополнительная информация
# man tmux
2
Шпаргалка по Nmap
👍31👎1
Команды для получения сведений об оборудовании


Некоторые сведения об оборудовании можно получить из файлов каталога /proc:

cat /proc/devices - информация о типах устройств.

cat /proc/diskstats - информация о дисковых устройствах.

cat /proc/dma - информация о режиме работы контроллера прямого доступа к памяти.

cat /proc/iomem - информация об адресах, используемых контроллерами ввода-вывода.

cat /proc/ioports - информация о портах ввода-вывода.

cat /proc/meminfo - информация об оперативной памяти.

cat /proc/cpuinfo - информация о процессорах..

lshw - отобразить полную информацию об оборудовании в текстовом формате.

lshw -c storage - отобразить информацию об устройствах хранения данных ( класса ”storage” )

lscpu - отобразить информацию о процессоре

lscpu | grep L2 - получить размер кэш второго уровня процессора.

lscpu | grep Arch - получить информацию об архитектуре процессора.

lspci - отобразить сведения об оборудовании на шине PCI

lsusb- отобразить сведения об оборудовании на шине USB

dmidecode отобразить версию программы, общую информация базы DMI, и расшифрованное содержимое отдельных записей.

dmidecode -t bios - сведения о BIOS

dmidecode -t system - сведения о переключателях системной платы.

dmidecode -t baseboard - сведения о материнской плате.

dmidecode -t chassis - сведения о переключателях и датчиках шасси.

dmidecode -t processor - сведения о центральном процессоре ( о процессорах для многопроцессорных систем ) .

dmidecode -t memory - сведения об оперативной памяти.

dmidecode -t cache - сведения о кэш-памяти.

dmidecode -t connector - сведения о разъемах контроллеров периферийных устройств.

dmidecode -t slot - сведения о разъемах PCI/PCI-Express
4