Linux Skill - Освой Linux c нуля до DevOps
11.2K subscribers
66 photos
103 videos
502 links
Освой Linux c нуля до DevOps
Подробный гайд по Linux и море других уроков для системных администраторов

📩 По всем вопросам: @chorapov

РКН https://vk.cc/cMUwm4
Download Telegram
Что делает эта команда?

for token in a b c; do
echo -n ${token};
done

Не гугли — напиши в комментах 👇

#linux #bash #вопрос
👍6
🔧 20+ переменных Bash, которые ты точно не использовал

Привет, повелитель скриптов!

Видел скрипты, где пути и настройки вбиты намертво? А потом ломаешь голову, почему они не работают на другой машине. Bash уже всё придумал за тебя — используй зарезервированные переменные.

📂 Навигация и окружение
$DIRSTACK — Содержимое вершины стека каталогов
$OLDPWD — Прежний рабочий каталог
$PATH — Путь поиска программ
$HOME — Домашний каталог пользователя

👤 Информация о пользователе
$UID — Содержит реальный идентификатор, который устанавливается только при логине
$EUID — Эффективный UID. Если вы использовали программу su для выполнения команд от другого пользователя, то эта переменная содержит UID этого пользователя
$GROUPS — Массив групп к которым принадлежит текущий пользователь

🖥️ Информация о системе
$HOSTNAME — hostname машины
$HOSTTYPE — Архитектура машины
$OSTYPE — Тип ОС

⚙️ Работа со скриптами и функциями
$EDITOR — Текстовый редактор по-умолчанию
$FUNCNAME — Имя текущей функции в скрипте
$SECONDS — Время работы скрипта (в сек.)
$$ — PID самого скрипта
$PPID — Идентификатор родительского процесса
$! — PID последнего запущенного в фоне процесса
$? — Содержит код завершения последней команды

📝 Работа с параметрами
$# — Общее количество параметров переданных скрипту
$* — Все аргументы переданные скрипту (выводятся в строку)
$@ — Тоже самое, что и предыдущий, но параметры выводятся в столбик

🔍 Дополнительные переменные
$LC_CTYPE — Внутренняя переменная, которая определяет кодировку символов

🔖 Сохрани шпаргалку — пригодится в каждом скрипте!

#Linux_Mastery #bash #scripting #linux #automation #devops #sysadmin
👍9🔥3
🧠 Запусти аудит зарубежных IP за 1 секунду на своем VPS

Привет, техноэнтузиаст!

Купил свежий VPS, но не уверен, куда с нее можно дотянуться? Это частая боль: если сервер уже под гео-ограничениями, он бесполезен для работы с зарубежным софтом, GitLab CI или просто для проверки YouTube/TikTok.

Показывать, куда есть доступ, а куда нет, нужно быстро, без установки лишних пакетов. Китайские умельцы давно создали скрипт, который делает это одной командой. Он проверяет доступность YouTube, TikTok, ChatGPT, Gmail и другие сервисы, а также выдает информацию о гео IP адресе виртуалки.

📌 Bash-ванлайнер для аудита VPS
Этот скрипт скачивает и запускает проверку, выводя результат прямо в консоль. Важно: Запускать его нужно на свежеарендованной VPS.

# Скачать и запустить проверку доступности зарубежных сервисов (YouTube, TikTok, ChatGPT и др.)
curl -sL https://check.foreign.services.sh | bash


Как это работает:
1. curl -sL скачивает скрипт (содержит набор пингов и DNS-запросов к актуальным зарубежным IP).
2. | bash передает его сразу на выполнение в Bash. Результат выводится мгновенно.

💡 Вывод
Теперь ты за секунду знаешь, можно ли использовать эту VPS для работы с гео-зависимыми сервисами. Если проверка пройдена, можешь смело приступать к настройке.

#Linux #Bash #DevOps #VPS #CLI #Security
👍9👎1
🚀 Systemd + Bash: Мониторинг зависшего PHP-FPM за 5 строк кода

Привет, повелитель терминала!

Твой php-fpm начал зависать в любой момент и перестал отвечать на запросы? Это происходит из-за исчерпания ресурсов или процессов, ушедших в непрерываемое ожидание.

Вместо ручного поиска и убийства PID, давай настроим автоматический скрипт, который решит эту проблему за тебя.

📌 Авто-чистка зависших FPM

Этот скрипт ищет дочерние процессы php-fpm в состоянии D и принудительно завершает их, чтобы твой пул восстановился, используя базовые принципы Bash-сценариев.

# Ищем процессы FPM, застрявшие в D-состоянии
STUCK_PIDS=$(ps -o pid=,state= -C php-fpm | grep D | awk '{print $1}')

if [ -n "$STUCK_PIDS" ]; then
# Найдено: принудительно убиваем зависшие процессы (SIGKILL)
# Используй kill -9 только в крайних случаях!
echo "$STUCK_PIDS" | xargs kill -9

# Перезапускаем сервис для гарантированного восстановления
systemctl restart php-fpm
fi


💡 Фишка: Ты можешь запускать этот скрипт через cron или systemd.timer, чтобы автоматизировать траблшутинг. Это гарантирует стабильность твоего сервиса.

#Linux #Bash #DevOps #автоматизация #мониторинг
👍4
Media is too big
VIEW IN TELEGRAM
🤖 Синхронизация каталогов: Ультимативный Bash-гайд для сисадмина

Эй, технарь! Готов автоматизировать рутину?

Не оставляет меня идея создания собственных простых видео. Вот второй подход к снаряду. Напомню источниками являются официальные гайды.

📃 Текстовая инструкция

#Linux #Bash #Автоматизация #rsync #Cron #CLI
👍8🔥2
🛠️ 5 ключевых метасимволов, которые покрывают 80% задач

Привет, инженер!

Давай будем честны: освоить синтаксис регулярных выражений (РВ) — непростая задача. Не потому, что это очень сложно, а потому что ты работаешь с ними лишь время от времени, для разовых задач. В итоге ты быстро всё забываешь.

Но чтобы полностью реализовать потенциал командной оболочки, тебе придется овладеть Регулярными Выражениями. РВ — это набор символов и/или метасимволов, которые задают шаблон для поиска текста.

К счастью, тебе не нужно знать их все. Достаточно запомнить базовые метасимволы, которые критически важны для работы с grep, sed и awk.

Вот твоя шпаргалка: 5 ключевых метасимволов, которые покрывают 80% задач:
Регулярные выражения используются для поиска текста по шаблону и работы со строками.

1. Начало и конец строки (^ и $):
- Символ ^ означает начало строки. (Иногда, в зависимости от контекста, он может означать отрицание, например, в квадратных скобках [^...]).
- Знак $ соответствует концу строки.
- Выражение ^$ соответствует пустой строке.

2. Любой символ (.)
Точка (.) соответствует любому одиночному символу. Обычно это любой символ, кроме символа перевода строки.

3. Ноль или больше повторений (*)
Звездочка (*) означает любое количество символов (включая нулевое). Это относится к символу или выражению, предшествующему звездочке. Например, .* означает "любое количество любого символа".

4. Набор символов ([])
Квадратные скобки ([...]) предназначены для задания подмножества (диапазона) символов. Например, [a-z0-9] соответствует одной букве нижнего регистра или одной цифре.

5. Экранирование (\)
Обратный слэш (\) используется для экранирования специальных символов. Это значит, что экранированные символы интерпретируются буквально, как простые символы. Например, комбинация \$ ищет знак доллара как обычный символ, а не как признак конца строки.

💡 Вывод
Основное назначение РВ — это поиск текста по шаблону и работа со строками. Если ты знаешь, как использовать эти 5 метасимволов, ты сможешь эффективно применять grep, sed и awk для большинства повседневных задач.

#Linux #Bash #CLI #Regex #Шпаргалка
👍10🔥2
Media is too big
VIEW IN TELEGRAM
🐧 Linux-администратор: с чего начать и куда расти

👋 Привет, покоритель пингвинов!

Анатолий, ведущий системный администратор с 10-летним опытом, отвечает на главные вопросы: как войти в профессию, нужно ли программировать, стоит ли ставить Linux дома и почему самообразование в IT — это навсегда.

🔗 Источник: https://www.youtube.com/
#linux #sysadmin #карьера #ansible #python #bash #devops
🔥 Собери свой top: скрипт для моментальной диагностики Linux

Привет, системный траблшутер!

Если у тебя что-то "легло" или тормозит, нужно моментально получить срез состояния системы. Ты не хочешь запускать 10 разных команд.
Объедини ключевые команды (uptime, free, ps) в одну функцию, которая быстро покажет тебе, где узкое место.

🐧 Скрипт check_status.sh

#!/bin/bash

# Используем hostname для получения имени сервера
SERVER_NAME=$(hostname)

# Создание функции, чтобы избежать повторов кода
function get_quick_status() {
echo "--- СТАТУС СЕРВЕРА: ${SERVER_NAME} ---"

# 1. Аптайм и Load Average
echo "Load Average (1, 5, 15 мин) и Uptime:"
uptime
# Load Average > 1.0 часто указывает на проблемы

# 2. Использование памяти (в удобном формате)
echo "Использование RAM и SWAP (free -h):"
free -h
# free -h выводит информацию о памяти и swap

# 3. Использование корневого раздела
echo "Использование диска (df -h /):"
df -h / | tail -n 1 | awk '{print "Used: " $3 ", Avail: " $4 }'
# df показывает использование файловой системы

# 4. Топ-5 активных процессов по CPU
echo "Топ-5 активных процессов (PID, %CPU, COMMAND):"
ps -e --no-header -o pid,%cpu,comm | sort -nr -k 2 | head -5
# ps -e отображает информацию о текущих запущенных процессах
}

# Запускаем функцию
get_quick_status


Вывод: Ты можешь использовать эту заготовку как основу, чтобы быстро диагностировать проблемы с CPU, памятью или диском, а затем добавить vmstat или iostat для глубокого анализа, если это требуется.

#Мониторинг #Bash #CLI #Скрипт #uptime #free
👍19
💾 Bash-антигайд: Удаляй tmp-файлы даже после kill -9

Хей, защитник хоста!

Если твой скрипт аварийно завершается, временные файлы (/tmp) остаются.
Чтобы гарантировать удаление, используй ловушку EXIT.

#!/bin/bash
# Создай уникальное имя для временного файла
TMP_FILE=$(mktemp)

# 1. Ловушка EXIT (сигнал 0) сработает при ЛЮБОМ выходе
trap "rm -f $TMP_FILE" EXIT

# 2. Здесь идет твой основной код
echo "Лог пишется в $TMP_FILE" >> $TMP_FILE

# 3. Дополнительно можно перехватить SIGINT (2) и SIGTERM (15)
trap "rm -f $TMP_FILE; exit 1" INT TERM


Вывод: trap...EXIT обеспечивает, что функция очистки выполнится всегда, даже при ошибке.

#Bash #Автоматизация #Скрипты #trap #CLI
🔥4
🤯 CLI-гайд: 6 команд, которые делают "грязную" работу за тебя

Привет, гуру Linux-оболочки!

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

1. ⚙️ stat: Вся информация о файле

stat выдает подробную и многословную статистику о заданном файле, каталоге или устройстве. Сюда входит тип файла, права доступа, inode, размер и время.

# Получить детальные метаданные о файле
stat /etc/passwd

# Извлечь конкретные данные (например, inode и тип файла)
# -c%i - inode number, -c%F - file type
stat -c%i,%F /etc/passwd

stat используется, чтобы быстро получить всю информацию, включая время последнего доступа (atime), модификации (mtime) или изменения статуса (ctime).

2. 🚀 xargs: Параллельное выполнение команд

Используй xargs для передачи аргументов команде из потока ввода (stdin), что особенно полезно, когда список аргументов слишком длинный для обычной подстановки.

# Найти все файлы *.log и удалить их, даже если их миллион
find /var/log/ -name "*.log" -print0 | xargs -0 rm -f

# Найти все .mp3-файлы и вывести их размер (с использованием xargs)
find ~/ -name "*.mp3" -print0 | xargs -0 du -h

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

3. 💾 mktemp: Создание безопасного временного файла

Всегда создавай временные файлы с помощью mktemp для обеспечения "уникального" имени файла. Это предотвращает атаки, связанные с гонкой (race condition).

# Создать временный файл в /tmp с уникальным именем
TMP_FILE=$(mktemp)
echo "Рабочие данные" > $TMP_FILE

# После использования, не забудь удалить
rm $TMP_FILE

Когда mktemp вызывается без аргументов, он создает файл нулевой длины в /tmp.

4. 🔗 lsof: Найди, что держит ресурс

Если ты не можешь размонтировать файловую систему (umount fails), lsof показывает все открытые файлы и связанные с ними процессы.

# Узнать, какие процессы используют директорию /mnt/data
lsof /mnt/data

# Показать, какие процессы открыли файл /usr/bin/vim
fuser -u /usr/bin/vim

lsof помогает тебе определить, какие файлы все еще открыты, чтобы ты мог безопасно убить соответствующие процессы.

5. 🔑 which, whereis, whatis: Быстрый поиск документации

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

# Показать полный путь к исполняемому файлу (только bin)
which rm
# Вывод: /usr/bin/rm

# Показать путь к bin, исходникам И man-странице
whereis rm
# Вывод: rm: /bin/rm /usr/share/man/man1/rm.1.bz2

# Получить краткое описание команды из базы данных whatis
whatis whatis
# Вывод: whatis (1) - search the whatis database for complete words


6. 📊 Комбинирование: cut, sort, uniq

Используй эти три фильтра вместе для анализа структурированных текстовых файлов или вывода команд (например, /etc/passwd).

# Найти 5 самых популярных оболочек в системе
cut -d':' -f7 /etc/passwd | sort | uniq -c | sort -rn | head -5
# cut -d':' -f7: извлекает поле 7 (оболочку).
# sort: сортирует, чтобы uniq работал.
# uniq -c: подсчитывает последовательные дубликаты.
# sort -rn: сортирует в обратном порядке по числам (самые популярные сверху).


💡 Вывод

Эти хаки и утилиты — настоящий золотой фонд командной строки. Используя xargs, stat и связку фильтров (cut, sort, uniq), ты сможешь превратить рутинные задачи в быстрые однострочники.

#Шпаргалка #Хаки #CLI #Bash #Скрипт #Утилиты
🔥9👍3👎1
🔥 3 метрики в SSH-баннере: Скрипт для Production

Привет, повелитель терминала!
Тратить время на ввод uptime и free при каждом SSH-входе, чтобы оценить состояние сервера.
Добавь этот динамический скрипт в свой ~/.bashrc (или /etc/profile), и ты получишь мгновенную оценку Load Average, RAM и IP-адреса, используя встроенный документ (here document).

⚙️ Скрипт: Динамический MOTD (Message of the Day)

Скрипт использует подстановку команд $(...) (предпочтительная нотация вместо обратных кавычек ` ``) для сбора метрик и форматированный встроенный документ для их вывода.

#!/bin/bash
# -------------------------------------------------------------
# 1. Сбор системных метрик
# -------------------------------------------------------------

# Получаем локальный IP-адрес сервера (первый в списке)
SERVER_IP=$(hostname -I | awk '{print $1}')

# Получаем Load Average за 1 минуту.
# Средняя загрузка (Load Average) — это количество процессов,
# ожидающих ЦПУ или дискового ввода/вывода.
# Мы считываем метрики из псевдофайла /proc/loadavg,
# извлекая первое поле (1-минутное значение).
LOAD_AVG=$(cut -d " " -f1 /proc/loadavg)

# Получаем использованную/общую RAM в "человекочитаемом" виде.
# Используем команду `free` для статистики виртуальной памяти.
# AWK используется для извлечения 3-го и 2-го столбцов строки "Mem:"
RAM_USED_TOTAL=$(free -h | awk '/Mem:/ {print $3 "/" $2}')

# -------------------------------------------------------------
# 2. Вывод баннера с помощью Встроенного Документа (Here Document)
# -------------------------------------------------------------

# Конструкция 'cat << EOF' создает встроенный документ.
# Встроенные документы поддерживают подстановку параметров, если
# ограничитель (EOF) не экранирован.

cat << EOF

=============================================
🛡️ SYSTEM HEALTH CHECK | USER: $(whoami)
=============================================
🚀 Локальный IP: $SERVER_IP
⏱️ Load Average 1m: $LOAD_AVG
💾 RAM (Used/Total): $RAM_USED_TOTAL
---------------------------------------------

EOF


Вывод:

Вставь этот код в конец своего файла ~/.bashrc. Таким образом, ты увидишь здоровье сервера сразу после подключения, не используя команды вроде top или vmstat. Помни, что stat также может давать подробную информацию о файле или каталоге, включая размер, права доступа, и временные метки (доступ, модификация, изменение статуса).

#Bash #Скрипты #SSH #CLI #Мониторинг
🔥9👍5
💡 select + dialog: Создаём админ-меню прямо в консоли

Хей, гуру Linux-оболочки!

Ты тратишь время на медленный Web-GUI для рутинных задач (например, перезапуск служб)?
Используй команду select для создания интерактивного TUI-меню.

# 1. Задаем приглашение к вводу (PS3)
PS3='Выберите действие: '

# 2. Создаем TUI-меню с помощью select
select ACTION in 'Restart Proxy' 'Check Load' 'Exit'
do
# Выполняем команду, соответствующую выбору
case $ACTION in
'Restart Proxy')
# Перезапускаем службу proxy
systemctl restart proxy.service ;;
'Check Load')
# Проверяем загрузку системы (Load Average)
uptime ;;
'Exit')
# Выход из цикла
break ;;
esac
done


Вывод: select позволяет тебе быстро выбрать и выполнить команду прямо в консоли.

#TUI #CLI #Bash #Утилиты
⚠️ Никогда не используй [ ] в Bash, пока не прочитаешь это

Привет, инженер! 👋

Сколько раз ты ловил binary operator expected или забывал экранировать > в условии? В Bash скобки — это не просто стиль, это разные инструменты с разной логикой.

Давай разложим всё по полочкам, чтобы твои скрипты работали предсказуемо.

📌 1. Одинарные квадратные [ ... ] — Классика (test)
Это синоним команды test. Она старая, POSIX-совместимая, но капризная.

Нюанс: Переменные нужно брать в кавычки "$var", иначе при пустом значении скрипт упадет.
Минус: Знаки > и < нужно экранировать (\>), иначе Bash решит, что это перенаправление ввода/вывода.

if [ "$a" = "root" ]; then echo "Hi root"; fi


📌 2. Двойные квадратные [[ ... ]] — Расширенная проверка
Это ключевое слово самого Bash. Оно мощнее и безопаснее.

Плюс: Не нужно экранировать > и <.
Поддерживает логические && и || прямо внутри скобок.
Киллер-фича: Поддерживает регулярные выражения через оператор =~.

# Проверка регуляркой (без кавычек!)
if [[ "$ver" =~ ^3\. ]]; then echo "Version 3.x"; fi


📌 3. Одинарные круглые ( ... ) — Подоболочка (Subshell)
Команды внутри запускаются в отдельном процессе.

Суть: Переменные, измененные внутри (), не меняются в основном скрипте.
Пример: (cd /tmp; rm *.log) — вы перейдете в папку только внутри скобок, основной скрипт останется в текущей директории.

📌 4. Двойные круглые (( ... )) — Арифметика
Специальная конструкция для математики в стиле Си.

Плюс: Можно не писать $ перед переменными.
Поддерживает инкременты var++ и тернарные операторы.

(( a++ ))       # Увеличить a на 1
b=$(( a + 5 )) # Записать результат в b


💡 Итог:
Пишешь на Bash? Всегда используй [[ ]] для условий и (( )) для математики. Оставь [ ] для совместимости со старым sh.

#Linux #Bash #DevOps #Scripting #Shell
👍16
🔥 Забудь про UptimeRobot: Свой мониторинг на коленке

printf "Hello\n"

Иногда разворачивать тяжелые комбайны мониторинга ради проверки пары узлов — это как стрелять из пушки по воробьям. Ты же знаешь силу командной строки: зачем тебе веб-интерфейс, если есть старый добрый Bash?

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

📌 Скрипт проверки доступности узла:

HNAME=news-15.net  # Пресловутый спамер.
# HNAME=$HOST # Отладка: проверка локальной сети.
count=2 # Отсылаются только два пинга.

if [[ `ping -c $count "$HNAME"` ]]
then
echo ""$HNAME" все еще работает и рассылает спам."
else
echo ""$HNAME" Кажется выключен. Жаль."
fi


Разбор полетов:
Переменная HNAME хранит адрес цели.
ping -c 2 отправляет ровно два пакета (чтобы не ждать вечно).
Конструкция if [[ ... ]] проверяет код возврата команды ping. Если 0 (успех) — узел жив.

💡 Почему это круто:

Ты не зависишь от стороннего софта.
Работает даже на встраиваемых системах и роутерах.
Легко добавить отправку уведомления на почту или в Telegram прямо в блок else.

#Linux #Bash #DevOps #Scripting #Monitoring
👍6
🔒 Вот что hackers проверяют в первую очередь на твоём сервере

Каждый день на серверы идут тысячи автоматических сканирований на поиск слабых мест.

Проблема: ты даже не знаешь, какие уязвимости уже есть в твоей системе. SSH настроена правильно? Firewall включён? Сервисы обновлены?

Решение: два инструмента, которые за минуты покажут тебе всё, что видит хакер.

🔹 vps-audit
https://github.com/vernu/vps-audit

Легковесный bash-скрипт для быстрого аудита VPS:
• Проверяет SSH-конфигурацию (root login, слабые пароли)
• Статус firewall, fail2ban и открытых портов
• Запущенные сервисы и SUID файлы
• Генерирует цветной отчёт (🟢 PASS / 🟡 WARN / 🔴 FAIL)
• Нет зависимостей, работает везде

🔹 Lynis

https://github.com/CISOfy/lynis
Профессиональный инструмент аудита (15+ лет на рынке):
• Сканирует 200+ параметров безопасности
• Проверяет compliance (PCI DSS, HIPAA, ISO27001)
• Поиск уязвимостей в ПО и конфигурации
• Детальный hardening index — оценка безопасности
• Работает на Linux, macOS, BSD (14.5k звёзд на GitHub)

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

#Linux #Monitoring #Disk #DevOps #Bash #CLI
👍11🔥4
📊 Вот как настоящие админы видят, что происходит на сервере

Сервер зависает, CPU зашкаливает, память утекает — а ты не знаешь, в чём проблема.

Проблема: top, htop, df разбросаны по разным окнам. Решение: один bash-скрипт, который покажет всё сразу.

🔹 System Monitor
https://github.com/elliotsecops/System-Monitor

Bash-скрипт для мониторинга Linux:
• Отображает CPU, память и диск в реальном времени (обновляется каждые 5 сек)
• Поддерживает несколько точек монтирования диска
• Настраивается через конфиг или аргументы командной строки
• Graceful shutdown (Ctrl+C) без зависания

Запусти на своём сервере — увидишь, что там реально происходит.

#linux #мониторинг #bash #sysadmin #devops
👍7
🔤 Регулярки мозг не атрофируют

ChatGPT решает задачи → когнитивный спад. Освой regex самостоятельно!

🔹 RegexLearn (RU)
https://regexlearn.com/ru
• Теория + практика
• Русский перевод
• Шпаргалка

Изучал Asterisk? Без regex никуда. База для extensions.conf.

#linux #regex #bash #sysadmin
🧠 Алиас ipa: IP-детали одним словом — WSL/Debian

Эй, цифровой детектив!

Надоел копипаст IP в whois/dig? Алиас ipa в .bashrc выдаст ASN/country одним словом — для WSL/Debian/bash.

Проверяй внешний/чужой IP с JSON: country, ASN, без user_agent мусора.

Добавь в ~/.bashrc:

function ipa {
curl -s https://ifconfig.co/json?ip=$1 | jq 'del(.user_agent)'
}


Пример (оригинальный вывод):

# Твой внешний IP
ipa
# {"ip":"твой_IP","country":"RU","asn":"AS12345","asn_org":"Provider"}

# Чужой IP
ipa 104.21.80.1
# {"ip":"104.21.80.1","country":"US","asn":"AS13335","asn_org":"CLOUDFLARENET"}


Комбо с DNS (стандарт):
- dig +short example.com A → IP.
- ipa <IP> → детали.
- host <IP> → PTR.[4][5]

Бесплатно, без API — ifconfig.co forever.

💡 Вывод:
Сохрани часы: алиас в .bashrc — и IP всегда под рукой. Reload: source ~/.bashrc.

#Bash #Alias #IP #WSL #DevOps #Linux
👍5
🚨 Fail2ban → Telegram: уведомления о банах за секунды

Эй, страж сервера!

SSH-брутфорс каждые 500 попыток в день? Bash-скрипт шлет уведомления в Telegram: входы, баны, статистика.

Fail2ban + curl/tail — реал-тайм алерты без Jail-хака.

Что нужно:
- fail2ban + curl.
- Bot токен + chat_id.

sudo apt update
sudo apt install fail2ban curl



Оригинальный скрипт (~/.bashrc или /usr/local/bin/telegram_notification.sh):

#!/bin/bash

# Замените на ваш токен и chat_id
TOKEN="123456789:ABCDEFGHIJKLMN_OPQRSTUVWXYZ123456"
CHAT_ID="987654321"

# Функция для отправки сообщения в Telegram
send_telegram_message() {
local message="$1"
curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \
-d "chat_id=$CHAT_ID" \
-d "text=$message" \
-d "parse_mode=HTML"
}

# Переменная для отслеживания времени последнего уведомления о неудачных попытках и блокировках
last_failed_time=0
# Время (1 день) через которое следует посылать уведомления о неудачных попытках входа
track_time_range=86400

# Функция для проверки и отправки уведомлений о неудачных попытках и блокировках
check_failed_attempts() {
current_time=$(date +%s)
# Проверка, прошло ли больше суток с последнего уведомления
if (( current_time - last_failed_time >= track_time_range )); then
# Получаем информацию о неудачных попытках и блокировках за последние сутки
failed_attempts=$(grep "Failed password" /var/log/auth.log | wc -l)
bans=$(grep "Ban" /var/log/fail2ban.log | wc -l)

# Формируем сообщение
message="📊 Статистика за последние сутки:\n"
message+="🚨 Неудачных попыток входа: $failed_attempts\n"
message+="🔒 Заблокированных IP: $bans"

# Отправляем сообщение
send_telegram_message "$message"
last_failed_time=$current_time
fi
}

# Отслеживание логов аутентификации и Fail2Ban
tail -F /var/log/auth.log /var/log/fail2ban.log | while read line; do
# Проверка на успешные попытки входа
if echo "$line" | grep "Accepted password" &> /dev/null; then
send_telegram_message " Успешный вход: $line"
fi

# Проверка на неудачные попытки входа
if echo "$line" | grep "Failed password" &> /dev/null; then
check_failed_attempts
fi

# Проверка на заблокированные IP-адреса
if echo "$line" | grep "Ban" &> /dev/null; then
check_failed_attempts
fi
done



Запуск:
chmod +x telegram_notification.sh
nohup ./telegram_notification.sh &
ps aux | grep telegram_notification



💡 Вывод:
Мгновенные алерты: входы/баны/статистика. Лучше Jail-шаблонов — гибче.

#Fail2ban #Bash #Telegram #Monitoring #Linux #SSH
👍10👎1
🐧 Твой чек-лист по серверу: 6 гайдов по настройке сервера

Настройка нового сервера — это ритуал. Чтобы ничего не забыть и сделать всё по фэншую (best practices, а не просто "лишь бы заработало"), держи подборку наших лучших постов.

Подготовка и база
* Как узнать ВСЁ о железе и системе в Linux за 5 минут
* Лучшие практики для повышения производительности Linux-системы

Сеть и доступ
* Защита SSH-сервера: порты, ключи и iptables
* Как за 1 минуту определить, чем управляется сеть в Linux?
* Подними свой DNS-сервер и забудь про Google DNS

Безопасность и автоматизация
* Защити свои данные: Автоматическое резервное копирование на Linux

Теперь ты упакован по полной. Делись подборкой с коллегами, пусть тоже настраивают по уму!

❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #SkillHunter@LinuxSkill

#Linux #SysAdmin #ServerSetup #Nginx #Security #LVM #Bash #LinuxSkill
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👎1🔥1