🔧 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
Привет, повелитель скриптов!
Видел скрипты, где пути и настройки вбиты намертво? А потом ломаешь голову, почему они не работают на другой машине. 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.
Как это работает:
1.
2.
💡 Вывод
Теперь ты за секунду знаешь, можно ли использовать эту VPS для работы с гео-зависимыми сервисами. Если проверка пройдена, можешь смело приступать к настройке.
#Linux #Bash #DevOps #VPS #CLI #Security
Привет, техноэнтузиаст!
Купил свежий 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 строк кода
Привет, повелитель терминала!
Твой
Вместо ручного поиска и убийства PID, давай настроим автоматический скрипт, который решит эту проблему за тебя.
📌 Авто-чистка зависших FPM
Этот скрипт ищет дочерние процессы
💡 Фишка: Ты можешь запускать этот скрипт через
#Linux #Bash #DevOps #автоматизация #мониторинг
Привет, повелитель терминала!
Твой
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
Эй, технарь! Готов автоматизировать рутину?
Не оставляет меня идея создания собственных простых видео. Вот второй подход к снаряду. Напомню источниками являются официальные гайды.
📃 Текстовая инструкция
#Linux #Bash #Автоматизация #rsync #Cron #CLI
👍8🔥2
🛠️ 5 ключевых метасимволов, которые покрывают 80% задач
Привет, инженер!
Давай будем честны: освоить синтаксис регулярных выражений (РВ) — непростая задача. Не потому, что это очень сложно, а потому что ты работаешь с ними лишь время от времени, для разовых задач. В итоге ты быстро всё забываешь.
Но чтобы полностью реализовать потенциал командной оболочки, тебе придется овладеть Регулярными Выражениями. РВ — это набор символов и/или метасимволов, которые задают шаблон для поиска текста.
К счастью, тебе не нужно знать их все. Достаточно запомнить базовые метасимволы, которые критически важны для работы с
Вот твоя шпаргалка: 5 ключевых метасимволов, которые покрывают 80% задач:
Регулярные выражения используются для поиска текста по шаблону и работы со строками.
1. Начало и конец строки (
- Символ
- Знак
- Выражение
2. Любой символ (
Точка (
3. Ноль или больше повторений (
Звездочка (
4. Набор символов (
Квадратные скобки (
5. Экранирование (
Обратный слэш (
💡 Вывод
Основное назначение РВ — это поиск текста по шаблону и работа со строками. Если ты знаешь, как использовать эти 5 метасимволов, ты сможешь эффективно применять
#Linux #Bash #CLI #Regex #Шпаргалка
Привет, инженер!
Давай будем честны: освоить синтаксис регулярных выражений (РВ) — непростая задача. Не потому, что это очень сложно, а потому что ты работаешь с ними лишь время от времени, для разовых задач. В итоге ты быстро всё забываешь.
Но чтобы полностью реализовать потенциал командной оболочки, тебе придется овладеть Регулярными Выражениями. РВ — это набор символов и/или метасимволов, которые задают шаблон для поиска текста.
К счастью, тебе не нужно знать их все. Достаточно запомнить базовые метасимволы, которые критически важны для работы с
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
👋 Привет, покоритель пингвинов!
Анатолий, ведущий системный администратор с 10-летним опытом, отвечает на главные вопросы: как войти в профессию, нужно ли программировать, стоит ли ставить Linux дома и почему самообразование в IT — это навсегда.
🔗 Источник: https://www.youtube.com/
#linux #sysadmin #карьера #ansible #python #bash #devops
🔥 Собери свой
Привет, системный траблшутер!
Если у тебя что-то "легло" или тормозит, нужно моментально получить срез состояния системы. Ты не хочешь запускать 10 разных команд.
Объедини ключевые команды (
🐧 Скрипт
Вывод: Ты можешь использовать эту заготовку как основу, чтобы быстро диагностировать проблемы с CPU, памятью или диском, а затем добавить
#Мониторинг #Bash #CLI #Скрипт #uptime #free
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
Хей, защитник хоста!
Если твой скрипт аварийно завершается, временные файлы (
Чтобы гарантировать удаление, используй ловушку EXIT.
Вывод:
#Bash #Автоматизация #Скрипты #trap #CLI
Хей, защитник хоста!
Если твой скрипт аварийно завершается, временные файлы (
/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. ⚙️
2. 🚀
Используй
3. 💾
Всегда создавай временные файлы с помощью
Когда
4. 🔗
Если ты не можешь размонтировать файловую систему (
5. 🔑
Эти три команды помогают тебе быстро найти исполняемый файл или узнать его назначение, что критически важно при работе в новой системе:
6. 📊 Комбинирование:
Используй эти три фильтра вместе для анализа структурированных текстовых файлов или вывода команд (например,
💡 Вывод
Эти хаки и утилиты — настоящий золотой фонд командной строки. Используя
#Шпаргалка #Хаки #CLI #Bash #Скрипт #Утилиты
Привет, гуру 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
Привет, повелитель терминала!
Тратить время на ввод
Добавь этот динамический скрипт в свой
⚙️ Скрипт: Динамический MOTD (Message of the Day)
Скрипт использует подстановку команд
Вывод:
Вставь этот код в конец своего файла
#Bash #Скрипты #SSH #CLI #Мониторинг
Привет, повелитель терминала!
Тратить время на ввод
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
💡
Хей, гуру Linux-оболочки!
Ты тратишь время на медленный Web-GUI для рутинных задач (например, перезапуск служб)?
Используй команду
Вывод:
#TUI #CLI #Bash #Утилиты
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 решит, что это перенаправление ввода/вывода.
📌 2. Двойные квадратные [[ ... ]] — Расширенная проверка
Это ключевое слово самого Bash. Оно мощнее и безопаснее.
Плюс: Не нужно экранировать > и <.
Поддерживает логические && и || прямо внутри скобок.
Киллер-фича: Поддерживает регулярные выражения через оператор =~.
📌 3. Одинарные круглые ( ... ) — Подоболочка (Subshell)
Команды внутри запускаются в отдельном процессе.
Суть: Переменные, измененные внутри (), не меняются в основном скрипте.
Пример: (cd /tmp; rm *.log) — вы перейдете в папку только внутри скобок, основной скрипт останется в текущей директории.
📌 4. Двойные круглые (( ... )) — Арифметика
Специальная конструкция для математики в стиле Си.
Плюс: Можно не писать $ перед переменными.
Поддерживает инкременты var++ и тернарные операторы.
💡 Итог:
Пишешь на Bash? Всегда используй [[ ]] для условий и (( )) для математики. Оставь [ ] для совместимости со старым sh.
#Linux #Bash #DevOps #Scripting #Shell
Привет, инженер! 👋
Сколько раз ты ловил 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 хранит адрес цели.
ping -c 2 отправляет ровно два пакета (чтобы не ждать вечно).
Конструкция if [[ ... ]] проверяет код возврата команды ping. Если 0 (успех) — узел жив.
💡 Почему это круто:
Ты не зависишь от стороннего софта.
Работает даже на встраиваемых системах и роутерах.
Легко добавить отправку уведомления на почту или в Telegram прямо в блок else.
#Linux #Bash #DevOps #Scripting #Monitoring
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
Каждый день на серверы идут тысячи автоматических сканирований на поиск слабых мест.
Проблема: ты даже не знаешь, какие уязвимости уже есть в твоей системе. 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
Сервер зависает, 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
ChatGPT решает задачи → когнитивный спад. Освой regex самостоятельно!
🔹 RegexLearn (RU)
https://regexlearn.com/ru
• Теория + практика
• Русский перевод
• Шпаргалка
Изучал Asterisk? Без regex никуда. База для extensions.conf.
#linux #regex #bash #sysadmin
Regexlearn
Regex Learn - шаг за шагом, от нуля до продвинутого уровня.
Изучайте Regex в интерактивном режиме, практикуйтесь на своём уровне, протестируйте и поделитесь своими собственными Regex с другими участниками.
🧠 Алиас ipa: IP-детали одним словом — WSL/Debian
Эй, цифровой детектив!
Надоел копипаст IP в whois/dig? Алиас ipa в .bashrc выдаст ASN/country одним словом — для WSL/Debian/bash.
Проверяй внешний/чужой IP с JSON: country, ASN, без user_agent мусора.
Добавь в ~/.bashrc:
Пример (оригинальный вывод):
Комбо с DNS (стандарт):
-
-
-
Бесплатно, без API — ifconfig.co forever.
💡 Вывод:
Сохрани часы: алиас в .bashrc — и IP всегда под рукой. Reload:
#Bash #Alias #IP #WSL #DevOps #Linux
Эй, цифровой детектив!
Надоел копипаст 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.
Оригинальный скрипт (~/.bashrc или /usr/local/bin/telegram_notification.sh):
Запуск:
💡 Вывод:
Мгновенные алерты: входы/баны/статистика. Лучше Jail-шаблонов — гибче.
#Fail2ban #Bash #Telegram #Monitoring #Linux #SSH
Эй, страж сервера!
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
Настройка нового сервера — это ритуал. Чтобы ничего не забыть и сделать всё по фэншую (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