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

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

РКН https://vk.cc/cMUwm4
Download Telegram
🔑 Секрет 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-циклы затянуты, а масштабирование напоминает ручную магию. Kubernetes вроде бы должен всё решать, но на практике сложностей только больше.

👩‍💻 Онлайн-курс «Инфраструктурная платформа на основе Kubernetes» поможет вам:
- Автоматизировать управление контейнерами и масштабирование
- Освоить DevOps-подход «инфраструктура как код»
- Подготовиться к сертификации CNCF (CKA и CKAD)

Практикующие эксперты, актуальная программа, разбор нюансов эксплуатации K8s и бонус: подготовительный курс по Linux.

➡️ Пройдите короткое вступительное тестирование и присоединяйтесь к группе: https://otus.pw/bmFr/

🎄 Учитесь в новом году по старым ценам!
Максимальная скидка 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

Привет, повелитель терминала!
Тратить время на ввод 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
💡 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
21%
${string.length}
43%
length($string)
18%
${string:-len}
👍3
🔥 DevOps-стек: Запусти 3 контейнера одной командой (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
⚠️ Никогда не используй [ ] в 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
👍14
🏎️ Почему твой Linux грузится вечность? Находим и обезвреживаем

Эй, линуксоид! 👋

Знакома ситуация: отправил сервер в 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