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

По всем вопросам : @Sofiia_artamonova
Download Telegram
Шпаргалка по командам Curl
2
Бэкап и очистка журналов Event Log в Windows, размер которых превышает определённое значение

Такой скрипт проверит размер файлов журнала (Event Log) и если обнаружит, что размер одного из них превышает указанное значение, то создаст его резервную копию, а затем очистит журнал.



strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate, (Backup, Security)}!\\" _
& strComputer & "\root\cimv2")

Set colLogFiles = objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile")

For Each objLogfile in colLogFiles
If objLogFile.FileSize > 100000 Then
strBackupLog = objLogFile.BackupEventLog _
("c:\scripts\" & objLogFile.LogFileName & ".evt")
objLogFile.ClearEventLog()
End If
Next
3
UDP vs TCP Protocol
1
MySQL

Auto insert with TimeStamp
CREATE TABLE test (
id INTEGER,
txt VARCHAR(20),
ts1 TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

Copy Database
mysqldump -u root -p db1 > dump.sql
mysqladmin -u root -p create db2
mysql -u root -p db2 < dump.sql


Create User
mysql> grant all privileges on DBNAME.* to USERNAME@localhost identified by 'PASSWORD';
mysql> grant all privileges on DBNAME.* to USERNAME@"%" identified by 'PASSWORD';
mysql> flush privileges;


--all DB
mysql> grant all privileges on *.* to USERNAME@localhost identified by 'PASSWORD';
mysql> grant all privileges on *.* to USERNAME@"%" identified by 'PASSWORD';
mysql> flush privileges;


Delete User
mysql> drop user USERNAME;
or
mysql> delete from mysql.user where user = 'USERNAME';


Change Password
--User
mysql> set password for USER@"%" = password('PASSWORD');
mysql> set password for USER@localhost = password('PASSWORD');


--root
mysql> set password for root=password('PASSWORD');
mysql> set password for root@localhost=password('PASSWORD');

CSV Import / Export
ERROR 1045 (28000) at line 1: Access denied for user 'USER'@'localhost' (using password: YES)
mysql> grant file on *.* to USER@localhost;


Tips
--Create table as same data and type
mysql> create table newtable as select * from orgtable;


--Create table with same type. data is null.
mysql> create table newtable as select * from orgtable where id is null;

Export to CSV
# mysql -uUSER -pPASS DATABASE -e "select * from TABLE;" | sed -e 's/^/"/g' | sed -e 's/$/"/g' | sed -e 's/\t/","/g' > /tmp/test.csv
1
Эффективный разбор лог-файлов Linux!

15 примеров, которые администраторы Linux могут использовать ежедневно 👇.

1/ Поиск определенного текста в файле журнала:
grep "error" /var/log/syslog
Эта команда ищет слово "error" в файле syslog.

2/ Подсчитайте вхождения определенного шаблона:
grep -c "error" /var/log/syslog
Эта команда подсчитывает вхождения слова "error" в файл syslog.

3/ Отфильтруйте журналы по диапазону дат:
grep "Apr 1" /var/log/syslog
Эта команда фильтрует записи syslog за 1 апреля.

4/ Просматривайте журналы в режиме реального времени:
tail -f /var/log/syslog
Эта команда позволяет следить за файлом syslog в режиме реального времени.

5/ Найдите наиболее часто встречающиеся ошибки:
grep "error" /var/log/syslog | sort | uniq -c | sort -nr
Эта команда подсчитывает и сортирует наиболее частые сообщения об ошибках.

6/ Выполните поиск в нескольких файлах журнала одновременно:
grep "error" /var/log/syslog /var/log/nginx/error.log
Эта команда ищет "error" в журналах ошибок syslog и Nginx.

7/ Извлеките определенные поля из записей журнала:
awk '{print $4, $6}' /var/log/nginx/access.log
Эта команда извлекает и выводит определенные поля из записей журнала доступа Nginx.

8/ Поиск IP-адресов:
grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" /var/log/nginx/access.log
Эта команда извлекает IP-адреса из записей журнала доступа Nginx.

9/ Определите основные шаблоны доступа:
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
Эта команда определяет наиболее часто используемые URL-адреса в журналах доступа Nginx.

10/ Поиск определенных кодов состояния HTTP:
grep "404" /var/log/nginx/access.log
Эта команда ищет ошибки HTTP 404 в журналах доступа Nginx.

11/ Определите основных потребителей трафика:
awk '{print $10, $7}' /var/log/nginx/access.log | sort -rh | head
Эта команда определяет URL-адреса с наибольшим потреблением трафика в журналах доступа Nginx.

12/ Фильтруйте журналы по IP-адресу источника:
grep "192.168.1.100" /var/log/auth.log
Эта команда фильтрует журналы аутентификации по определенному IP-адресу.

13/ Поиск неудачных попыток входа в систему:
grep "Failed password" /var/log/auth.log
Эта команда ищет неудачные попытки входа в систему SSH в журналах auth.

14/ Проверьте время запуска и выключения системы:
grep "systemd" /var/log/syslog | grep "Starting" | grep "Stopping"
Эта команда извлекает события запуска и выключения системы из syslog.

15/ Найдите процессы, потребляющие большое количество CPU:
grep "CPU" /var/log/syslog
Эта команда помогает выявить процессы, вызывающие повышенное потребление ЦП, в системных журналах.
2
Типы файлов Linux

В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

https://telegra.ph/Tipy-fajlov-Linux-04-20
1
This media is not supported in your browser
VIEW IN TELEGRAM
Шпаргалка по сетевой безопасности
4
Памятка/шпаргалка по SQL

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

https://habr.com/ru/articles/564390/
2
This media is not supported in your browser
VIEW IN TELEGRAM
Удаление строк, соответствующих шаблону, в Vim

:g/pattern/d — удалить строки, соответствующие шаблону
:g!/pattern/d — удалить строки, не соответствующие шаблону

https://vimtricks.com/p/remove-lines-matching-a-pattern-in-vim/
2
SID

Идентификатор безопасности security identifier (SID) в Windows (а также в Active Directory) — это уникальное значение для каждого объекта, которое используется для его однозначной идентификации. Вместо имён пользователей и компьютеров в правилах доступа используется SID. Он состоит из базовой части и добавочной. Базовая обозначает основной объект (ПК или домен), добавочная подобъекты в нём (пользователи и группы домена). Пример:

S-1-5-21-705789055-1138749243-1717242729-1108

SID всегда уникален и не может совпадать с SID другого объекта как на локальном ПК так и с SID'ами других ПК и пользователей, в том числе доменных.

Получить информацию о SID можно с помощью команд Инструментария Управления Windows, WMIC (Windows Management Instrumentation Command).

SID пользователей (в этот список попадают не только локальные пользователи, но и доменные - все с кем данный компьютер имел дело):
wmic useraccount get name, sid

SID групп:
wmic group get name, sid
1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Зажигаем огонь в терминале с помощью команды:
aafire

Как установить libaa-bin в Ubuntu / Debian

sudo apt update
sudo apt install libaa-bin



Примеры программ с использованием aalib

http://aa-project.sourceforge.net/aalib/
1
Примеры скриптов PowerShell для системного администрирования

Управление текущим расположением
Работа с файлами и папками
Работа с файлами, папками и разделами реестра
Работа с записями реестра

https://bookflow.ru/primery-skriptov-powershell-dlya-sistemnogo-administrirovaniya/
1👍1
Общие сетевые протоколы
2
Пример 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
1
Шпаргалка по поиску узких мест в Linux с помощью различных инструментов
👍2
Как провести Тех. обслуживание сервера с уведомлением пользователей?

Для начала создаем пустой файл /etc/nologin. Включаем возможность заходить под root. Теперь только root сможет авторизоваться по ssh.

Переходим к уведомлениям, возможно кто-то в данный момент работает в терминале.

Воспользуемся утилитой wall.

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

Запускаем команду:


wall "... текст сообщения ..."


Все кто подключен к серверу, получают сообщение:


... текст сообщения ...


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

В указанное время запускаем ассасина:


pkill -9 -u `who | awk '{print $1}'| grep -v root|head -1


Выгнали всех с сервера, кроме root’а и проводим технические работы, удаляем /etc/nologin.

Wall можно заменить например на такое:


echo "какой-то текст" | write user


Но тут сообщение уйдет конкретному пользователю user. Конечно, если по какой-то причине, в системе отсутствует wall, можно и через цикл выгрести всех юзеров и через echo отправить им уведомление.

write - утилита, позволяющая отправить сообщение другому пользователю, который имеет сессию в этой же системе.

Или так:


echo "какой-то текст" > /dev/pts/1
3👍2
Iptables - Официальная документация

Iptables — утилита командной строки, является стандартным интерфейсом управления работой межсетевого экрана (брандмауэра) Netfilter для ядер Linux, начиная с версии 2.4. С её помощью администраторы создают и изменяют правила, управляющие фильтрацией и перенаправлением пакетов. Для работы с семейством протоколов IPv6 существует отдельная версия утилиты — Ip6tables. Для использования утилиты Iptables требуются привилегии суперпользователя (root).

https://help.ubuntu.ru/wiki/iptables
1
📌 Понимание системных журналов Linux

Системные журналы, которые обычно находятся в каталоге /var/log на Linux-системах, крайне важны для мониторинга и устранения неполадок. Краткое описание основных журналов:

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

auth.log: Содержит сообщения, связанные с аутентификацией: успешные и неудачные попытки входа, смена пароля, события проверки пользователей.

kern.log: Фиксирует сообщения ядра: ошибки оборудования, загрузку модулей ядра и другие активности, связанные с ядром системы.

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

dmesg: Отображает кольцевой буфер сообщений ядра — в реальном времени показывает события, связанные с ядром и обнаружением оборудования при запуске системы.

cron: Журналирует работу заданий cron и запланированных задач: время выполнения, а также ошибки, возникшие при выполнении.

secure: Записывает сообщения, связанные с безопасностью: попытки аутентификации, эскалация привилегий и другие важные для безопасности события.

apache/access.log и apache/error.log: Журналы веб-сервера Apache. access.log хранит логи HTTP-доступа, а error.log — ошибки и предупреждения Apache.

nginx/access.log и nginx/error.log: Аналогичные журналы для веб-сервера Nginx, фиксируют события доступа и ошибки.

mysql/error.log: Содержит ошибки и предупреждения MySQL-сервера, включая ошибки запуска, сбои запросов и аварийные завершения работы базы данных.

Эти журналы предоставляют ценную информацию о производительности системы, событиях безопасности и помогают при поиске и устранении неполадок. Регулярный мониторинг и анализ этих логов позволяют поддерживать стабильность системы и выявлять потенциальные проблемы до их возникновения.
1
Утилита динамического мониторинга процессов Nmon

Это утилита измерения и настройки производительности. Она может отображать информацию о ЦП, оперативной памяти, сети, дисках (в виде мини графиков или числовых данных), файловых системах, NFS, самых нагружающих процессах, ресурсах.

Устанавливается командой:
sudo pamcan -S nmon

Для запуска утилиты необходимо выполнить команду:
nmon

https://telegra.ph/Utilita-dinamicheskogo-monitoringa-processov-Nmon-03-11
Удаленный запуск скрипта на сервере Linux

Удаленный запуск скрипта повторяющихся задач повышают эффективность системного администрирования. Это отлично подходит для локальных машин, но что если вы контролируете удаленные серверы? Можете ли вы запустить локальный скрипт на удаленном компьютере? Да!

https://bookflow.ru/udalennyj-zapusk-skripta-na-servere-linux/
1