en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels 👉 If you want to see the tag, subscribe

BashMaster

BashMaster

Open in Telegram

Удобные консольные наработки на каждый день для разработчиков, девопсов и сисадминов. Реклама: @Kone4noVasya Канал на бирже: https://telega.in/c/bash_help

Show more
8 780
Subscribers
-224 hours
-177 days
-6230 days
Posts Archive
Приглашаем на вебинар «Как упаковать инфраструктуру в сервис: vStack Cloud Panel» Когда: 11 декабря в 11:00 Спикер: Евгений К
Приглашаем на вебинар «Как упаковать инфраструктуру в сервис: vStack Cloud Panel» Когда: 11 декабря в 11:00 Спикер: Евгений Карпов, генеральный директор vStack На вебинаре мы покажем, как vStack Cloud Panel позволяет упаковать вычисления, хранилище и сеть в готовые облачные услуги с каталогом, тарифами и квотами - чтобы запускать и продавать их быстрее. Вы узнаете, как self-service и автоматизация помогают: 🔹Снизить количество тикетов и нагрузку на поддержку. 🔹Ускорить получение выручки (time-to-revenue). 🔹Превратить IaaS в управляемый и предсказуемый бизнес. Участие бесплатное, по предварительной регистрации. 🔗 Зарегистрироваться #реклама О рекламодателе

⚙️ Создание самодостаточных скриптов с автоматической обработкой ошибок и логированием ✔️Скрипты должны не только выполнять з
⚙️ Создание самодостаточных скриптов с автоматической обработкой ошибок и логированием ✔️Скрипты должны не только выполнять задачи, но и обрабатывать ошибки и логировать действия для контроля и анализа. В Bash можно интегрировать автоматическое логирование с обработкой ошибок для отладки, мониторинга и надежности в продакшене. ➡️ Пример кода:
#!/bin/bash

LOG_FILE="/var/log/my_script.log"

# Функция для логирования
log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> $LOG_FILE
}

# Функция для обработки ошибок
error_exit() {
    log "Ошибка: $1"
    exit 1
}

# Основной процесс
log "Скрипт начался"

# Симуляция работы с проверкой ошибок
cp /nonexistent/file /tmp/ || error_exit "Не удалось скопировать файл"

# Если все прошло успешно
log "Скрипт завершен успешно"
➡️ Как это работает: 💠В примере создается функция log, которая записывает события в лог файл с временной меткой 💠Функция error_exit используется для немедленного выхода из скрипта при возникновении ошибки, что позволяет избежать выполнения дальнейших команд в случае неудачи 💠Скрипт копирует файл, но в случае ошибки (например, если файл не существует), он записывает ошибку в лог и завершает выполнение с кодом ошибки ▶️Подход полезен в производственных скриптах для выполнения задач и логирования для мониторинга и быстрого реагирования на проблемы. 🖼️ Ссылка на источник 🔨 bash_help

⚙️ Памятка по написанию сценариев Bash 🔨 bash_help
+3
⚙️ Памятка по написанию сценариев Bash 🔨 bash_help

⚙️ Почему /bin/sh ✔️В различных проектах часто используют НЕ /bin/bash, а /bin/sh, почему? Он же старый! ▶️/bin/sh или Dash (
⚙️ Почему /bin/sh ✔️В различных проектах часто используют НЕ /bin/bash, а /bin/sh, почему? Он же старый! ▶️/bin/sh или Dash (Debian Almquist Shell) - легковесная оболочка командной строки, предназначенная для замены более тяжеловесного Bash. Она была создана для ускорения процесса загрузки и выполнения скриптов в системе. Поэтому многие дистрибутивы Linux, такие как Debian и Ubuntu, используют Dash в качестве оболочки по умолчанию. ▶️Скрипты, написанные на /bin/sh, обычно используются для максимальной переносимости между различными Unix-подобными операционными системами. Оболочка /bin/sh представляет собой стандартную оболочку командной строки в Unix-подобных системах, которая должна быть доступна на всех таких системах. ▶️В то время как /bin/bash (Bourne-Again Shell) является расширенной оболочкой командной строки, которая предоставляет больше функций, чем /bin/sh. Она представляет собой улучшенную версию стандартной оболочки /bin/sh, что делает ее более мощной и удобной для использования. Когда скрипт написан на /bin/sh, он чаще всего будет работать на всех Unix-подобных системах, исключая специфичные возможности, предоставляемые /bin/bash. Но если в скрипте используются уникальные функции /bin/bash, то он может не работать на системах, где /bin/bash не является стандартной оболочкой. Поэтому использование /bin/sh в некоторых проектах может быть обусловлено требованием максимальной переносимости скрипта между различными Unix-подобными системами. 🖼️ Ссылка на источник 🔨 bash_help

⚙️ goManageDocker ✔️Команды Docker вылетают из головы, потому что вы не используете Docker достаточно часто? Устали гуглить к
⚙️ goManageDocker ✔️Команды Docker вылетают из головы, потому что вы не используете Docker достаточно часто? Устали гуглить команды для повседневных задач? GoManageDocker создан, чтобы решить эту проблему. 🐙 Перейти на Github 🔨 bash_help

⚙️ xonsh ✔️Кроссплатформенный язык оболочки и командный интерпретатор на основе Python. ▶️Он объединяет Python и оболочку bas
⚙️ xonsh ✔️Кроссплатформенный язык оболочки и командный интерпретатор на основе Python. ▶️Он объединяет Python и оболочку bash таким образом, что вы можете запускать команды Python непосредственно в оболочке. А также можете комбинировать команды Python и shell. ➡️ Установка: ▶️Вы можете установить xonsh в систему через пакетный менеджер вашего дистрибутива, например для Ubuntu, командой:
sudo apt install xonsh
▶️Но как правило, сперва активируется виртуальное окружение Python, а затем в окружении устанавливается xonsh:
pip install 'xonsh[full]'
▶️Это гарантирует, что вы вызовете правильный интерпретатор Python и модуль pip. И получите актуальную версию xonsh. 🐙 Перейти на Github 🔨 bash_help

⚡️ YADRO×SPRINT OFFER: оффер для Network Engineer in Test за 3 дня! Хотите работать в команде, которая создаёт инфраструктуру
⚡️ YADRO×SPRINT OFFER: оффер для Network Engineer in Test за 3 дня! Хотите работать в команде, которая создаёт инфраструктуру для дата-центров и обеспечивает надёжность сетевых систем мирового уровня? Мы в поиске специалистов в команду KORNFELD, которая занимается тестированием коммутаторов различных типов и сетевого оборудования YADRO. Инженеры анализируют поведение систем, актуализируют требования, создают сценарии и подходы к тестированию — от функционального до надёжности и отказоустойчивости, а также помогают совершенствовать архитектуру продуктов и пользовательский опыт. 💡 Как всё проходит: 1️⃣ Оставьте заявку до 30 ноября, пройдите HR-скрининг и технический скрининг. 2️⃣ Пройдите техническое и менеджерское интервью. 3️⃣ Получите оффер всего за 3 дня. 🚀 Основные задачи: • Анализ продуктовых требований и подготовка use cases. • Проведение E2E- и failover-тестирования. • Разработка тест-кейсов и тест-планов для нового и уже существующего функционала. • Участие в совместных испытаниях и взаимодействие с командами разработки, L3 и сервиса. 🔥 Для нас важны: • Опыт работы с сетевым оборудованием (Cisco, Huawei, Juniper и др). • Глубокие знания протоколов, применяемых в ЦОДах (BGP, OSPF, VxLAN, VRRP и др.). • Навыки тестирования и траблшутинга. • Внимательность, системность и интерес к сетевым технологиям. 💙 Оставляйте заявку до 30 ноября, присоединяйтесь к инженерному сообществу YADRO и вносите вклад в развитие сетевых технологий будущего!

⚙️ brightness-controller ✔️Простой bash‑скрипт для управления яркостью экрана в Linux‑системах. ▶️Скрипт запускается с параме
⚙️ brightness-controller ✔️Простой bash‑скрипт для управления яркостью экрана в Linux‑системах. ▶️Скрипт запускается с параметром:
brightness-controller.sh 'параметр'
➡️ Доступные параметры: 💠Число от  0,1 до 1,0 — установка конкретного уровня яркости. 💠+ — увеличение яркости на шаг 0,1. 💠- — уменьшение яркости на шаг 0,1. ▶️Можно создать горячие клавиши в среде рабочего стола (DE) или оконном менеджере (WM), чтобы: 💠увеличивать яркость:
bash /home/'ваше_имя'/bin/brightness-controller.sh +
💠уменьшать яркость:
bash /home/'ваше_имя'/bin/brightness-controller.sh -
▶️Скрипт работает через интерфейс ядра Linux для управления яркостью дисплея. Требует прав пользователя, у которого есть доступ к настройкам экрана. ▶️Простота и минимализм — основное преимущество этого решения (нет графического интерфейса, только командная строка). 🐙 Перейти на Github 🔨 bash_help

⚙️ Шпаргалка по функциям в Bash-скриптах 🔨 bash_help
⚙️ Шпаргалка по функциям в Bash-скриптах 🔨 bash_help

⛴️ Открыта регистрация на ICEBREAKER 2025. Участие бесплатно 12 декабря состоится NGENIX ICEBREAKER 2025 — онлайн-конференция
⛴️ Открыта регистрация на ICEBREAKER 2025. Участие бесплатно 12 декабря состоится NGENIX ICEBREAKER 2025 — онлайн-конференция, на которой эксперты расскажут, на чем сегодня строится доверие к облачным решениям. 🤖 Отдельный блок программы будет посвящен защите от ботов. Последние годы бот-атаки становятся все изощреннее и приносят много проблем владельцам веб-ресурсов. Эксперты расскажут про эволюцию методов детекции и классификацию ботов, защиту API, а приглашенный гость из компании «Комус» поделится реальными кейсами, как сегодня бизнес может страдать от автоматизированных угроз. Также в программе конференции: 🛡️ защита от DDoS- и продвинутых бот-атак;  📊 эволюция средств статистики и продвинутой аналитики;  💻 развитие российских продуктов ИБ и аттестация; 🔑 управление правами доступа; 💭 презентация нового облачного продукта для финтеха. 📍 12 декабря, 11:00  🔹Онлайн  🔹Бесплатно ЗАРЕГИСТРИРОВАТЬСЯ

⚙️ Bash Style Guide ✔️Минималистичное и чёткое руководство по читаемому, безопасному и портируемому Bash-коду. ➡️ Коротко, чт
⚙️ Bash Style Guide ✔️Минималистичное и чёткое руководство по читаемому, безопасному и портируемому Bash-коду. ➡️ Коротко, что советует автор: 💠Используй [[ ... ]] вместо [ — надёжнее. 💠foo() и local var=... — забудь про function. 💠Только $(...) — никаких обратных кавычек. 💠Не ls, а glob (*) и while read. 💠Арифметика? Только ((…)) и $((…)). 💠Переменные — всегда в кавычках: "$name". 💠Только табы. Только 80 символов в строке. ▶️Всё это с аргументами. Есть терминальная версия: curl style.ysap.sh/plain 🖼️ Перейти на сайт 🔨 bash_help

⚙️ Управление рабочими процессами c помощью timeout и wait для контроля параллельных задач ✔️Для управления несколькими парал
⚙️ Управление рабочими процессами c помощью timeout и wait для контроля параллельных задач ✔️Для управления несколькими параллельными процессами в Bash важно контролировать их выполнение и предотвращать зависания или снижение производительности. Инструменты timeout и wait позволяют ограничить время выполнения задач и обеспечить их корректное завершение. ➡️ Пример: Запуск длительных процессов с ограничением времени работы и ожиданием их завершения перед продолжением.
#!/bin/bash

# Функция для выполнения команды с таймаутом
run_with_timeout() {
    timeout 10s "$@" || echo "Process $1 timed out"
}

# Запуск нескольких процессов параллельно
run_with_timeout command1 & 
run_with_timeout command2 & 
run_with_timeout command3 &

# Ожидаем завершения всех процессов
wait
echo "All processes completed."
➡️ Как это работает: 💠timeout 10s — устанавливает ограничение по времени на выполнение каждой команды. Если процесс не завершится за 10 секунд, он будет завершен автоматически. 💠& — запускает команды в фоновом режиме, позволяя им работать параллельно. 💠wait — блокирует выполнение скрипта до тех пор, пока все фоновые процессы не завершатся. 💠command1, command2, command3 — это команды или скрипты, которые могут выполнять задачи в фоне, например, запрашивать внешние API, выполнять анализ данных или обрабатывать файлы. ▶️Такой способ контроля над процессами помогает избегать зависаний и позволяет обрабатывать ошибки на лету, не блокируя другие процессы. 🖼️ Ссылка на источник 🔨 bash_help

😵‍💫Loading… Падают продажи из-за долгой загрузки? Распродажи — злачный сезон только для тех, кто готов к пиковым нагрузкам.
😵‍💫Loading… Падают продажи из-за долгой загрузки? Распродажи — злачный сезон только для тех, кто готов к пиковым нагрузкам. Пользователи не станут ждать, если в приложении или на сайте в разы вырастет время загрузки. Чтобы не терять клиентов, подключайте сеть доставки контента от Selectel. Кроме ускорения загрузки, CDN поможет: 🔹 повысить позиции сайта в поисковой выдаче, 🔹 сэкономить на инфраструктуре, 🔹 обеспечить постоянную доступность сервиса, 🔹 защитить инфраструктуру от DDoS-атак. До 31 декабря можно подключить CDN от Selectel со скидкой до 50%. Скидка распространяется на дополнительный трафик и действует до конца июня. Единственное условие — подать заявку на участие в акции до конца года. Регистрируйтесь и ускорьте загрузку сайта с помощью CDN от Selectel со скидкой: https://slc.tl/pzk85 Реклама. АО "Селектел". erid: 2W5zFHRVJpQ

⚙️ AliasForge ✔️Легкий кроссплатформенный менеджер псевдонимов, который добавляет ваши персональные сочетания клавиш в любую
⚙️ AliasForge ✔️Легкий кроссплатформенный менеджер псевдонимов, который добавляет ваши персональные сочетания клавиш в любую оболочку (Bash, Zsh или Fish) на macOS и Linux. Он делает ваши любимые команды портативными, удобными для редактирования и мгновенно доступными при каждом входе в систему. ➡️ Возможности: 💠Кроссплатформенность: macOS и Linux 💠Поддержка нескольких оболочек: Bash, Zsh, Fish и NuShell 💠Идемпотентность: можно запускать несколько раз 💠Простота настройки: отредактируйте один файл, перезагрузите, и готово 💠Возможность удаления для «чистого листа» 🐙 Перейти на Github 🔨 bash_help

📣 Внимание, хакеры и разработчики! Канал БАГодельня запустил площадку с CTF-задачами — это проект, в котором ребята создают
📣 Внимание, хакеры и разработчики! Канал БАГодельня запустил площадку с CTF-задачами — это проект, в котором ребята создают CTF-задачи для прокачки навыков в IT и ИБ. Новые задачи каждую субботу! На канале вас ждут: ⭐ Задачи для практики ⭐ Руководства и шпоргалки ⭐ Разбор кода и алгоритмы ⭐ Код-ревью проектов Все бесплатно и уже более 70 задач на платформе! Практикуйтесь с нами: @bug_makers

⚙️ Как настроить автодополнение для команды ssh с хостами из .ssh/config ✔️Автодополнение — одна из самых полезных функций ко
⚙️ Как настроить автодополнение для команды ssh с хостами из .ssh/config ✔️Автодополнение — одна из самых полезных функций командной строки, позволяющая быстро подбирать подходящие аргументы или команды, просто нажав клавишу Tab. В этой статье вам расскажут, как настроить автодополнение для команды ssh, чтобы Bash подсказывал хосты, указанные в файле ~/.ssh/config. ➡️ Содержание: 💠Понять зачем это нужно 💠Настройка автодополнения хостов из ~/.ssh/config 💠Скрипт для автодополнения хостов 💠Автозапуск автокомплита 💠Добавление удобного алиаса для получения информации о подключении 🖼️ Прочитать статью на Habr'e 🔨 bash_help

⚙️ Как настроить автодополнение для команды ssh с хостами из .ssh/config ✔️Автодополнение — одна из самых полезных функций ко
⚙️ Как настроить автодополнение для команды ssh с хостами из .ssh/config ✔️Автодополнение — одна из самых полезных функций командной строки, позволяющая быстро подбирать подходящие аргументы или команды, просто нажав клавишу Tab. В этой статье вам расскажут, как настроить автодополнение для команды ssh, чтобы Bash подсказывал хосты, указанные в файле ~/.ssh/config. ➡️ Содержание: 💠Понять зачем это нужно 💠Настройка автодополнения хостов из ~/.ssh/config 💠Скрипт для автодополнения хостов 💠Автозапуск автокомплита 💠Добавление удобного алиаса для получения информации о подключении 🖼️ Прочитать статью на Habr'e 🔨 bash_help

🔥OS DevConf 25 powered by GigaChat — конференция про разработку системного ПО, ядра Linux и open source. Один день, 500 учас
🔥OS DevConf 25 powered by GigaChat — конференция про разработку системного ПО, ядра Linux и open source. Один день, 500 участников, 20+ докладов, 3 трека — концентрат практического опыта, знаний и инструментов, готовых к внедрению сразу по возвращению в офис. И, конечно, мега-возможности для нетворкинга с коллегами и экспертами сообщества! Что будем обсуждать? -Инструменты и примеры отладки, виртуализации, оптимизации производительности -Практический опыт оптимизации сетевых решений с DPDK -Эффективные методы безопасной разработки ядра Linux -Реальные кейсы создания драйверов на Rust -Все про GPU, NPU, ASIC и как запускать AI на железе под Linux и не только. Как AI встраивается в современную разработку -Современные подходы к разработке системного и embedded ПО Участие бесплатное, но количество мест ограничено — зарегистрируйтесь прямо сейчас 💻 #реклама О рекламодателе

⚙️ Скрипт для мониторинга использования диска и отправки оповещения, если оно превышает 80 % ➡️ Шаг 1. Проверьте использовани
⚙️ Скрипт для мониторинга использования диска и отправки оповещения, если оно превышает 80 % ➡️ Шаг 1. Проверьте использование диска в Linux ▶️Прежде чем писать сценарий, вам нужно узнать, сколько места на диске занимает ваша система, с помощью команды df:
df -h
➡️ Шаг 2. Создайте скрипт для мониторинга использования диска ▶️Вот очень простой скрипт для мониторинга корневого раздела (/):
#!/bin/bash

# Установка порогового значения (в процентах) 
THRESHOLD=80

# Извлечение процента использования корневой файловой системы
USAGE=$(df -h / | awk 'NR==2 {print }' | sed 's/%//')

# Сравнение использования с пороговым значением
if [ "$USAGE" -ge "$THRESHOLD" ]; then
 echo "Предупреждение: использование диска составляет ${USAGE}% на $(hostname)" | mail -s "Предупреждение о диске: $(hostname)" user@example.com
fi
▶️Давайте разберёмся, что здесь происходит: 💠THRESHOLD=80 → Это тот предел, который нас интересует. Всё, что выше, слишком рискованно. 💠df -h / → Проверяется только корневая файловая система. 💠awk 'NR==2 {print }' → Из вывода df извлекается столбец «Use%». 💠sed 's/%//' → Убирает знак %, чтобы мы могли рассматривать его как число. 💠Блок if → Если использование диска превышает пороговое значение, срабатывает оповещение. ➡️ Шаг 3. Мониторинг использования всех разделов диска ▶️Вот немного улучшенная версия, которая проверяет все подключённые файловые системы:
#!/bin/bash

THRESHOLD=80

# Перебираем все файловые системы, перечисленные в df
df -h | grep '^/dev/' | while read line; do
    USAGE=$(echo $line | awk '{print }' | sed 's/%//')
    PART=$(echo $line | awk '{print }')

 if [ "$USAGE" -ge "$THRESHOLD" ]; then
 echo "Предупреждение: раздел $PART заполнен на ${USAGE}% на $(hostname)" | mail -s "Оповещение о состоянии диска: $(hostname)" user@example.com
 fi
done
▶️Теперь вместо того, чтобы проверять только /, он будет проверять каждую файловую систему в /dev/ и, если какой-либо раздел пересечёт границу 80%, вы получите электронное письмо с предупреждением. ➡️ Шаг 4. Автоматизация скрипта с помощью Cron ▶️Чтобы настроить его, откройте файл crontab с помощью:
crontab -e
▶️Добавьте эту строку внизу:
0 * * * * /путь/к/файлу_проверки_диска.sh
▶️Сохраните и выйдите, а cron позаботится обо всём остальном. С этого момента ваш скрипт будет в фоновом режиме проверять использование диска и предупреждать вас, если ситуация ухудшится. ➡️ Шаг 5. Тестирование скрипта ▶️Прежде чем полагаться на этот скрипт, стоит его протестировать. В конце концов, не стоит ждать, пока ваш диск заполнится на 80 %, чтобы проверить, работает ли ваша система оповещений.Самый простой способ проверить — временно снизить порог:
THRESHOLD=1
▶️Таким образом, скрипт почти наверняка сразу же выдаст предупреждение, поскольку большинство разделов заполнены как минимум на 80 %. Как только вы убедитесь, что электронная почта или журналы работают, измените значение на 80. ▶️Если вы не готовы настраивать электронную почту, вы можете заменить команду mail на что-то более простое, например:
echo "Предупреждение: раздел $PART используется на ${USAGE}% на $(hostname)"
➡️ Шаг 6. Настройка уведомлений по электронной почте ▶️Наш скрипт использует команду mail для отправки оповещений, но этот инструмент не всегда доступен по умолчанию. Сначала вам нужно будет его установить:
sudo apt install mailutils [В Debian]
sudo yum install mailx [В RHEL]
▶️После установки убедитесь, что ваш сервер действительно может отправлять электронные письма. Для этого может потребоваться дополнительная настройка, например Postfix, Gmail SMTP или сторонний сервис, например SendGrid. ▶️Если вы не хотите сейчас работать с электронной почтой, вы всё равно можете использовать этот скрипт, записывая оповещения в файл:
echo "Предупреждение об использовании диска: $PART, $USAGE%" >> /var/log/disk_alert.log
▶️Таким образом, вы сможете проверить журнал позже или использовать следующую команду для просмотра оповещений в режиме реального времени.
tail -f /var/log/disk_alert.log
🖼️ Прочитать статью в источнике 🔨 bash_help