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

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

РКН https://vk.cc/cMUwm4
Download Telegram
💥 Почему set -e в bash может сломать тебе всё!

Привет, терминальный заклинатель! Кажется, ты добавил set -e в свой bash-скрипт и думал, что теперь ошибки сами себя поймают? А потом скрипт резко перестал доходить до конца?.. Давай разберемся, в чём подвох.

🤔 Что вообще делает set -e?

set -e говорит интерпретатору bash:
> "Если любая команда завершится ошибкой, — останови скрипт немедленно".

Это полезно для CI/CD, бэкапов и всего, что не прощает ошибок. Но...

⚠️ Проблема: поведение set -e — неочевидно!

Вот типичный случай:

#!/bin/bash
set -e
false
echo "Я не выполнюсь!"


Скрипт завершится после false, и echo даже не запустится. Всё логично.
Но теперь внимание:

#!/bin/bash
set -e
if false; then
echo "Упс"
fi
echo "А вот и я!"


🎉 Здесь echo выполнится! Потому что ошибки внутри if, while, until и &&/|| — игнорируются!

🔍 Когда set -e может навредить?

Если ты используешь команды вроде:

grep "что-то" файл.txt || echo "не найдено"


Скрипт продолжит работу, даже если grep вернёт ненулевой код. Но теперь представь, что ты этого не знал… 😬

Как правильно использовать set -e?
1. Сначала — пойми, где оно действительно нужно (например, в CI/CD, деплое, тестах).
2. Используй его в отдельных функциях, а не во всём скрипте сразу.
3. Если обрабатываешь ошибку вручную — используй ||, if, trap, set +e.

👨‍💻 Итог:
set -e — не волшебная палочка. Это строгий сторож, который иногда рубит по-живому. Используй с умом, тестируй поведение и знай, где он тебя может подставить.

🌳 Ветка: https://stackoverflow.com/questions/19622198/what-does-set-e-mean-in-a-bash-script

📩 Завтра: BTRFS: Продвинутые техники для настоящих гуру!
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 -Настрой мониторинг сети в реальном времени с Prometheus и Grafana
🧠 - b2-tools — простое и быстрое резервное копирование в облако
🧠 - Ты не знал, что cat умеет это! Лайфхаки для работы с файлами в Linux

#stackoverflow @LinuxSkill #bash #linux #скрипты #автоматизация #devops #linuxskill #сетевые_лайфхаки #shell #ci_cd #ошибки
👍18👀1
🚨 Можешь ли ты использовать sudo без пароля? Проверь за 5 секунд!

👋 Привет, мастер терминала! Иногда нужно понять: можешь ли ты выполнять команды через sudo без запроса пароля? Особенно важно для скриптов и автоматизации.

Базовая проверка:

sudo -n true 2>/dev/null || exit 1

- -n запрещает запрос пароля.
- Команда мгновенно завершится с ошибкой, если пароль требуется.

🛡️ Проверка без влияния кэшированных сессий:

sudo -k
sudo -n true 2>/dev/null || exit 1

- sudo -k очищает кэш пароля.

🔍 Защита от частных NOPASSWD правил:

rand=$(mktemp /tmp/true.XXXXX)
cp /usr/bin/true "$rand"
sudo -n "$rand" 2>/dev/null && echo "Есть доступ" || echo "Нет доступа"
rm "$rand"

- Проверяем реальное право на запуск любой команды без пароля.

🌐 Источник: https://unix.stackexchange.com/questions/777552/check-if-current-user-can-run-sudo-without-requiring-a-password

📩 Завтра: Что будет, если ввести неправильный пароль в sudo? (спойлер: тебя унизят)
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Производительность Nginx vs Apache: кто победит?
🧠 - Как измерить время выполнения программы в Linux?
🧠 - Осторожно: Как не стать жертвой сниффинга паролей на Linux!

#stackoverflow @LinuxSkill #linux #bash #sudo #shell #security
👍12