Типичный Сисадмин
1.24K subscribers
352 photos
43 videos
196 links
⚙️Информация для системного администратора
Download Telegram
Как удалить файл с именем -rf?

Удаление файла с именем -rf в UNIX/Linux может быть немного сложным, потому что -rf может быть воспринято как опция команды rm. Чтобы удалить файл с таким именем, можно использовать один из следующих способов:

1. Использовать путь к файлу
Укажите полный или относительный путь к файлу, используя ./ перед именем файла:

rm ./-rf

Это укажет командной строке, что -rf — это имя файла, а не параметр.

2. Использовать параметр `--`
Параметр -- сообщает команде rm, что все последующие аргументы следует трактовать как имена файлов, даже если они начинаются с -.

rm -- -rf


Оба этих метода помогут удалить файл с именем -rf безопасно.
1
Типы памяти и накопителей

- Основополагающий дуэт: RAM и ROM
- DDR4 и DDR5
- Микропрограмма и BIOS
- SRAM и DRAM
- HDD, SSD, USB-накопитель, SD-карта
1
Шпаргалка по командам 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