🔑 Секрет
Эй, Bash-архитектор!
Тебе нужна гибкая аутентификация (IP ИЛИ пароль)?
Директива
Вывод: Если IP совпадает, сервер не спросит пароль.
#Nginx #Хаки #Security #CLI #МиниГайд
Satisfy: IP-доступ без пароля для админовЭй, Bash-архитектор!
Тебе нужна гибкая аутентификация (IP ИЛИ пароль)?
Директива
Satisfy any позволяет тебе обходить Basic Auth для внутренних IP, не требуя пароля.# Конфигурация Nginx/Angie (Location Block)
# Внимание: Basic Auth небезопасна без HTTPS
location /admin/ {
# 1. Настройка аутентификации
auth_basic "Restricted Zone";
auth_basic_user_file /etc/nginx/.htpasswd;
# 2. Правила доступа по IP
allow 192.168.1.10; # Разрешить админу
deny all;
# 3. Ключевой хак: достаточно одного условия
satisfy any;
}
Вывод: Если IP совпадает, сервер не спросит пароль.
#Nginx #Хаки #Security #CLI #МиниГайд
👍4
- Автоматизировать управление контейнерами и масштабирование
- Освоить DevOps-подход «инфраструктура как код»
- Подготовиться к сертификации CNCF (CKA и CKAD)
Практикующие эксперты, актуальная программа, разбор нюансов эксплуатации K8s и бонус: подготовительный курс по Linux.
Максимальная скидка 30% на обучение до 21.12.2025:
1 курс — тающая скидка 15% до 21.12
2 курса −25%, 3 курса −30%
Учиться системно — выгоднее!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👎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 #Мониторинг
🔥8👍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 #Утилиты
Какая переменная хранит код возврата (exit status) последней выполненной команды?
Anonymous Quiz
25%
$$
26%
$!
17%
$#
32%
$?
Как получить длину строковой переменной ${string}?
Anonymous Quiz
18%
${#string}
21%
${string.length}
43%
length($string)
18%
${string:-len}
👍3
🔥 DevOps-стек: Запусти 3 контейнера одной командой (YAML)
Привет, цифровой архитектор!
Тратить время на ручное развертывание тестовых сервисов.
Docker Compose позволяет тебе развернуть весь DevOps-стек (приложение, БД, мониторинг) одной командой.
Вывод: Запусти стек командой
#Docker #DevOps #Мониторинг #YAML
Привет, цифровой архитектор!
Тратить время на ручное развертывание тестовых сервисов.
Docker Compose позволяет тебе развернуть весь DevOps-стек (приложение, БД, мониторинг) одной командой.
# docker-compose.yml (версия 3.8)
version: '3.8'
services:
app:
# Пример: веб-приложение Flask
image: custom/app:1.0
ports: ["8080:8080"]
# Переменные среды для подключения к БД (The Twelve-Factor App)
environment:
DB_HOST: db
db:
# Официальный образ БД
image: postgres:15
# Сохраняем данные на томе (volume)
volumes:
- db_data:/var/lib/postgresql/data
monitor:
# Пример дашборда
image: grafana/grafana:latest
ports: ["3000:3000"]
volumes:
db_data: # Объявление тома
Вывод: Запусти стек командой
docker-compose up -d.#Docker #DevOps #Мониторинг #YAML
👎1
🎥 Вебинар по Linux: Пользователи и права в Linux: первые шаги администратора
Разберёмся, как устроена система пользователей в Linux и зачем нужны root, sudo и su.
На вебинаре вы узнаете:
- Какие бывают типы пользователей в Linux и чем они отличаются.
- Где хранится информация о локальных пользователях и как её читать.
- Как безопасно переключаться между пользователями с помощью su и sudo.
- Какие ошибки часто совершают новички при работе с правами.
В результате вебинара вы:
- Узнаете, как Linux идентифицирует пользователей и их права.
- Сможете легко переключаться между пользователями.
- Научитесь читать системные файлы /etc/passwd и /etc/shadow.
- Поймёте, как использовать sudo без ошибок и повысить безопасность своей системы.
🎁 Все участники вебинара получат специальные условия на полное обучение курса "Administrator Linux. Basic"
👉 Для участия зарегистрируйтесь: https://otus.pw/xwoC/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Разберёмся, как устроена система пользователей в Linux и зачем нужны root, sudo и su.
На вебинаре вы узнаете:
- Какие бывают типы пользователей в Linux и чем они отличаются.
- Где хранится информация о локальных пользователях и как её читать.
- Как безопасно переключаться между пользователями с помощью su и sudo.
- Какие ошибки часто совершают новички при работе с правами.
В результате вебинара вы:
- Узнаете, как Linux идентифицирует пользователей и их права.
- Сможете легко переключаться между пользователями.
- Научитесь читать системные файлы /etc/passwd и /etc/shadow.
- Поймёте, как использовать sudo без ошибок и повысить безопасность своей системы.
🎁 Все участники вебинара получат специальные условия на полное обучение курса "Administrator Linux. Basic"
👉 Для участия зарегистрируйтесь: https://otus.pw/xwoC/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
⚠️ Никогда не используй [ ] в 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
👍14
🏎️ Почему твой Linux грузится вечность? Находим и обезвреживаем
Эй, линуксоид! 👋
Знакома ситуация: отправил сервер в reboot, и можно идти варить кофе, потому что он поднимается мучительно долго? 😤 Часто виноват один-единственный «зависший» сервис, который тянет время всей системы.
В systemd есть встроенный инструмент-детектив, который покажет, кто именно крадет твои секунды.
📌 1. Оцениваем общий масштаб бедствия
Сначала посмотрим, сколько времени ушло на загрузку в целом (ядро + userspace).
Это дает общее понимание: если userspace занимает слишком много времени, значит, проблема в службах.
📌 2. Ищем виновника (команда blame)
Эта команда выводит список всех запущенных юнитов, отсортированных по времени инициализации — от самых медленных к самым быстрым.
В данном примере видно, что NetworkManager-wait-online.service задерживает запуск почти на 4 секунды.
📌 3. Анализируем критический путь
Иногда сервис запускается долго, но не тормозит остальных. Чтобы увидеть дерево зависимостей и понять, какой процесс реально блокирует финиш загрузки, используйте:
Здесь видно, что systemd-networkd-wait-online.service является узким местом в цепочке,.
💡 Совет:
Если вы нашли «тормоза», которые вам не нужны (например, postfix на рабочей станции или ожидание сети там, где это не критично), их можно отключить (systemctl disable) или оптимизировать.
#Linux #Systemd #DevOps #SysAdmin #Performance
Эй, линуксоид! 👋
Знакома ситуация: отправил сервер в reboot, и можно идти варить кофе, потому что он поднимается мучительно долго? 😤 Часто виноват один-единственный «зависший» сервис, который тянет время всей системы.
В systemd есть встроенный инструмент-детектив, который покажет, кто именно крадет твои секунды.
📌 1. Оцениваем общий масштаб бедствия
Сначала посмотрим, сколько времени ушло на загрузку в целом (ядро + userspace).
$ systemd-analyze
Startup finished in 253ms (kernel) + 933ms (initrd) + 6.873s (userspace) = 8.060s
Это дает общее понимание: если userspace занимает слишком много времени, значит, проблема в службах.
📌 2. Ищем виновника (команда blame)
Эта команда выводит список всех запущенных юнитов, отсортированных по времени инициализации — от самых медленных к самым быстрым.
$ systemd-analyze blame
3.811s NetworkManager-wait-online.service
806ms tuned.service
680ms postfix.service
490ms lvm2-monitor.service
...
В данном примере видно, что NetworkManager-wait-online.service задерживает запуск почти на 4 секунды.
📌 3. Анализируем критический путь
Иногда сервис запускается долго, но не тормозит остальных. Чтобы увидеть дерево зависимостей и понять, какой процесс реально блокирует финиш загрузки, используйте:
$ systemd-analyze critical-chain
graphical.target @9.663s
└─multi-user.target @9.661s
└─snapd.seeded.service @9.062s +62ms
└─basic.target @6.336s
└─sockets.target @6.334s
└─snapd.socket @6.316s +16ms
└─sysinit.target @6.281s
└─cloud-init.service @5.361s +905ms
└─systemd-networkd-wait-online.service @3.498s +1.860s
Здесь видно, что systemd-networkd-wait-online.service является узким местом в цепочке,.
💡 Совет:
Если вы нашли «тормоза», которые вам не нужны (например, postfix на рабочей станции или ожидание сети там, где это не критично), их можно отключить (systemctl disable) или оптимизировать.
#Linux #Systemd #DevOps #SysAdmin #Performance
👍4🔥3
💥 Фениксы и снежинки: как строить инфраструктуру, которая не ломается
🔥 25 декабря в 20:00 мск — бесплатный вебинар в OTUS
Почему одни инфраструктуры падают от малейшего чиха и восстанавливаются только «волшебником Васей», а другие перезапускаются за минуты даже после полного апокалипсиса?
Разберём, как превратить хрупкую «снежинку» в инфраструктуру-феникс: полностью воспроизводимую, декларативную и самовосстанавливающуюся.
📌 Что будет:
— Как распознать «снежинку» и почему она смертельно опасна
— Принципы «феникса»: самовосстановление и предсказуемость
— Ключевые инструменты: Terraform, Ansible, GitOps — смерть ручным настройкам
— Процессы, которые спасают: код-ревью, тесты, автоматизация
🎯 После вебинара вы сможете:
— Мгновенно находить снежинки и уничтожать их
— Создавать окружения одной командой
— Сделать инфраструктуру независимой от людей
— Спать спокойно, даже если сгорит весь дата-центр
👉 Регистрация открыта: https://otus.pw/JloL/
Вебинар приурочен к старту курса «DevOps-инженер: практики и инструменты»: за 5 месяцев — полный боевой стек Docker → Kubernetes → Terraform → Ansible → CI/CD → мониторинг.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🔥 25 декабря в 20:00 мск — бесплатный вебинар в OTUS
Почему одни инфраструктуры падают от малейшего чиха и восстанавливаются только «волшебником Васей», а другие перезапускаются за минуты даже после полного апокалипсиса?
Разберём, как превратить хрупкую «снежинку» в инфраструктуру-феникс: полностью воспроизводимую, декларативную и самовосстанавливающуюся.
📌 Что будет:
— Как распознать «снежинку» и почему она смертельно опасна
— Принципы «феникса»: самовосстановление и предсказуемость
— Ключевые инструменты: Terraform, Ansible, GitOps — смерть ручным настройкам
— Процессы, которые спасают: код-ревью, тесты, автоматизация
🎯 После вебинара вы сможете:
— Мгновенно находить снежинки и уничтожать их
— Создавать окружения одной командой
— Сделать инфраструктуру независимой от людей
— Спать спокойно, даже если сгорит весь дата-центр
👉 Регистрация открыта: https://otus.pw/JloL/
Вебинар приурочен к старту курса «DevOps-инженер: практики и инструменты»: за 5 месяцев — полный боевой стек Docker → Kubernetes → Terraform → Ansible → CI/CD → мониторинг.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576