BashMaster
رفتن به کانال در Telegram
Удобные консольные наработки на каждый день для разработчиков, девопсов и сисадминов. Реклама: @Kone4noVasya Канал на бирже: https://telega.in/c/bash_help
نمایش بیشتر8 887
مشترکین
-624 ساعت
-197 روز
+1630 روز
آرشیو پست ها
8 889
⚙️ bash-file-cleaner — cкрипт для очистки файлов
✔️Этот репозиторий содержит Bash-скрипт для автоматической очистки старых файлов в указанной директории. Скрипт удаляет файлы, которые старше заданного количества дней, с возможностью ведения лога для отслеживания выполненных действий и удаленных файлов.
➡️ Возможности
💠Автоматическая очистка: Скрипт удаляет файлы, старые более заданного количества дней.
💠Логирование: Все действия (включая ошибки и удаленные файлы) записываются в указанный лог-файл.
💠Настройка: Параметры, такие как целевая директория, количество дней и путь к лог-файлу, настраиваются через файл
.env.
💠Простота использования: Скрипт готов к автоматическому запуску через cron для регулярного выполнения.
➡️ Требования
💠Операционная система Linux с поддержкой Bash и cron.
💠Установленная команда find (обычно она предустановлена в большинстве Linux-дистрибутивов)
🐙 Перейти на Github
🔨 bash_help8 889
8 889
⚙️ DevOps Roadmap 2025
✔️Актуальный roadmap для DevOps, который включает в себя необходимые ссылки на обучающие материалы для каждого шага на этом пути.
➡️ Некоторые этапы DevOps Roadmap
💠Изучение основ. Освоение Linux, сетевых технологий и языков программирования
💠Работа с системами контроля версий (Git и GitHub). Изучение команд Git, ветвления и слияния, а также GitHub Actions для CI/CD.
💠Освоение CI/CD (Jenkins, GitHub Actions, GitLab CI). Понимание автоматизации тестирования, интеграции и развёртывания.
💠Изучение инфраструктуры как кода (IaC). Освоение Terraform, Ansible и других инструментов для автоматизации инфраструктуры.
💠Изучение облачных платформ (AWS, Azure, GCP). Понимание сервисов для DevOps, например, EC2, S3, IAM
💠Освоение контейнеризации и оркестровки. Изучение Docker, Kubernetes, Helm и других инструментов.
💠Мониторинг и логирование. Освоение Prometheus, Grafana и стека ELK для мониторинга и анализа логов
💠Безопасность в DevOps (DevSecOps). Интеграция безопасности в процесс DevOps, использование принципов DevSecOps.
▶️В репозитории представлен пошаговый план обучения DevOps с ссылками на соответствующие ресурсы.
🐙 Перейти на Github
🔨 bash_help
8 889
Освой сети и командную строку с лучшими обучающими каналами
🤩 Network Admin - обучающий канал по сетевым технологиям
🤩 Network Admin | Guides - канал, где рассказывают полезную информацию про Windows/Linux
📱 BashTex - обучение работе с командной строкой
8 889
⚙️ getopts: как писать CLI-утилиты с флагами без внешних библиотек
✔️
getopts — это встроенный в любой POSIX-совместимый Linux/Unix-shell мини-парсер аргументов. Один shebang — и у вас CLI-утилита без единой внешней зависимости. В статье рассмотрим, как выжать из getopts максимум, где он спотыкается и когда пора переехать на getopt или Argbash.
➡️ Почему вообще всё ещё getopts
💠Входит в POSIX — доступен в /bin/sh на любом «живом» юниксе.
💠Никаких зависимостей — скрипт останется единственным файлом.
💠Поведение чётко регламентировано спецификацией Open Group — т. е. скрипт будет вести себя одинаково под bash, zsh, dash, ksh.
▶️Минус — лишь короткие флаги и отсутствие родной поддержки --long-option. Но и это решаемо.
➡️ Базовый синтаксис: одно кольцо, чтобы править всеми
#!/usr/bin/env sh
set -euo pipefail
IFS='
'
usage() {
cat <<EOF
Usage: ${0##*/} [-a] [-b ARG] file...
-a : включить дополнительный режим
-b ARG : передать аргумент
EOF
exit 2
}
# двоеточие в начале → тихий режим ошибок
while getopts ":ab:" opt; do
case "$opt" in
a) flag_a=true ;;
b) param_b=$OPTARG ;;
:) echo "Опция -$OPTARG требует аргумента" >&2; usage ;;
\?) echo "Неизвестная опция -$OPTARG" >&2; usage ;;
esac
done
shift "$((OPTIND-1))" # убираем уже разобранные параметры
▶️Двоеточие в начале optstring переводит парсер в «silent mode» — ошибки по argv приходится ловить самостоятельно, зато можно отдать лайтовый help, а не cryptic usage из недр шелла. Про необходимость shift "$((OPTIND-1))" задокументировано даже в posix man-pages — так убираем из $@ опции и получаем чистый список позиционных аргументов.
➡️ Короткие флаги и их комбо
getopts умеет распаковывать слипшиеся флаги: -abc интерпретируется как -a -b -c. Если после символа ожидается аргумент, разбор прекращается ровно там:
# optstring="a:b"
$ my.sh -ac # OK: -a, -c как позиционка
$ my.sh -abx # -a, -b x
$ my.sh -ab # ошибка: -b ждёт аргумент
Edge-case — отрицательные числа (-5) внезапно принимаются за флаг. Начинайте список ожидаемых опций с --, тогда getopts прекратит работу при виде первого не-флага, и минусы в числах останутся нетронутыми.
➡️ Поддерживаем --long без сторонних тулов
Частый прием: сначала через case "$1" ловим варианты --help, --version, --long=value, а затем отдаём остаток в getopts — так не ломаем POSIX-совместимость и не тащим GNU getopt.
while [ $# -gt 0 ]; do
case "$1" in
--help) usage ;;
--output=*) opt_o=${1#*=}; shift ;;
--) shift; break ;; # двойное тире — конец опций
-*) break ;; # короткие опции разберет getopts
*) break ;;
esac
done
# теперь классический getopts
while getopts ":o:f:" opt; do
...
done
shift "$((OPTIND-1))"
▶️Схема простая: захотите — добавите alias-ы вроде --verbose/-v, или вообще YAML-конфиг после --config=path.yml.
🖼️ Дочитать статью на Habr'e
🔨 bash_help8 889
❕ Приглашаем на урок по работе с чувствительными данными в Kubernetes-кластере!
⏺ Открытый урок «K8S + Vault — как получать секреты?»
Бесплатно 17 июня в 20:00 МСК.
Поймете, как организовать безопасное и масштабируемое взаимодействие между Kubernetes и HashiCorp Vault. Разберём подход dynamic secrets и инструмент External Secrets Operator для интеграции секретов из Vault в кластер.
На уроке вы узнаете:
- как Kubernetes работает с секретами по умолчанию и его ограничения;
- способы интеграции Kubernetes и Vault;
- что такое External Secrets Operator и почему его выбирают для production-сред;
- пошаговую схему подключения Vault к K8s.
➡️ Регистрация на вебинар
Урок в рамках старта курса «Инфраструктурная платформа на основе Kubernetes», ты можешь воспользоваться 🎁 бонусным промокодом Kuber_06 при покупке курса.
#реклама
О рекламодателе
8 889
⚙️ Shellfirm — защита от случайных или вредоносных команд в терминале
✔️Утилита, которая защищает терминал от потенциально опасных команд. Она работает как капча, запрашивая подтверждение перед выполнением рискованной команды.
▶️Цель — предотвратить случайные удаления файлов, перезагрузки системы и другие разрушительные действия.
➡️ Как работает Shellfirm
▶️Shellfirm анализирует введённую команду и, если находит в ней подозрительный шаблон (предопределённый или заданный пользователем), приостанавливает выполнение и запрашивает подтверждение.
Например, при вводе
rm -rf / программа покажет предупреждение и потребует подтвердить удаление.
➡️ Установка и настройка
▶️Shellfirm поддерживает различные оболочки, например Bash и Zsh. Установить программу можно через Homebrew, go install или скачать бинарник с GitHub.
▶️Настроить Shellfirm можно, например, добавив или удалив групповые проверки, а также изменив режим проверки по умолчанию (например, на математический вопрос).
▶️Пользователи отмечают, что Shellfirm добавляет дополнительный уровень безопасности при работе в терминале. Однако есть и критика: некоторые пользователи считают, что программа слишком часто запрашивает подтверждение, и это может быть утомительным.
🐙 Перейти на Github
🔨 bash_help8 889
🚀 Почему пользователи платят $30 за простой конвертер картинок? Давайте разберемся.
Кирилл из комьюнити создал простой продукт всего за один месяц, внедрив метод, которой уже принес результат.
Как он это сделал:
1️⃣ Анализ спроса: через поисковые запросы он увидел, что много людей ищут конвертацию «HEIC to JPG».
2️⃣ Фокус на главном: удалил всё лишнее, оставив только функцию конвертации в один клик.
3️⃣ Скорость внедрения: за 30 дней сделал запуск без перфекционизма.
Посты про конвертер (ч.1, ч.2)
Что из этого получилось:
— Доход $500 в месяц с тенденцией роста.
— Более $10K заработано на конвертере.
— $0 на рекламу, всего $40 в месяц на сервер.
Выводы:
— Люди платят за удобство, даже если есть бесплатные аналоги.
— Продукт функционирует автоматически с минимальной поддержкой.
— Быстрая и экономичная проверка идеи может быть успешной.
Результаты из комьюнити билдеров:
— Более 400 запусков по этой методике.
— Некоторые продукты уже набрали от 50К до 100К+ пользователей.
Присоединяйтесь к @its_capitan — следите за процессом разработки, продвижения и узнайте, сколько можно заработать на таких микро-продуктах.
Реклама: ИП Зуев Игорь Владимирович, ИНН: 360408359441, Erid: 2VtzqwBXght
8 889
⚙️ Linux - администрирование - Bash: кладовая полезных знаний
✔️В этом курсе вас ожидает неформальное путешествие в мир системного администрирования на базе GNU/Linux. Основным нашим инструментом станет Bash — мы не просто освоим его возможности, но и подружимся с ним на практике. Вместе разберём ключевые задачи, стоящие перед системными и сетевыми администраторами, а также погрузимся в теоретические аспекты устройства систем, сетей и основ кибербезопасности.
➡️ Чему вы научитесь
💠Разбираться в дистрибутивах операционных систем на базе Linux
💠Устанавливать, настраивать и диагностировать систему
💠Уверенно пользоваться командной строкой
💠Писать скрипты на Bash
💠Проводить харденинг (укрепление/улучшение безопасности) системы
▶️Этот курс создан для тех, кто делает первые шаги в мире компьютерных технологий или хочет лучше понимать «внутренности» систем:
💠Начинающие исследователи техники
💠Системные администраторы и инженеры
💠Сетевые специалисты
💠Разработчики ПО
💠DevOps, SysOps, SecOps и все, кто стремится к глубокому пониманию IT-инфраструктуры
🖼️ Ссылка на курс
🔨 bash_help
8 889
⚙️ PastebinSearch
✔️Bash-скрипт, который позволяет искать термины на сервисе Pastebin с использованием различных поисковых систем.
➡️ Функции и возможности
💠Поддержка нескольких поисковых систем. Скрипт использует Google, Bing, DuckDuckGo и Yahoo.
💠Настраиваемый браузер. Можно указать предпочитаемый браузер (например, Firefox, Google Chrome).
💠Автоматическое URL-кодирование. Пробелы в поисковых терминах заменяются на «+» для правильного URL-кодирования.
💠Обработка ошибок. Выдаются чёткие сообщения об ошибках, если браузер не открывается или не найден.
💠Поддержка таймаута. Скрипт не зависает, если открытие браузера занимает слишком много времени
🐙 Перейти на Github
🔨 bash_help
8 889
😒 ZeroDay — всё, что нужно хакеру
— Пентесты Wi-Fi, камер, сайтов
— OSINT и социальная инженерия
— Техники анонимности и обход слежки
— Сливы и разборы реальных утечек
— Инструменты: Metasploit, Nmap, Kali Linux
https://t.me/+jBip_a1-JM9jNjFi
8 889
⚙️ localdiskmount
✔️Скрипт на языке Bash, предназначенный для автоматического монтирования локального диска (например, USB-накопителя).
➡️ Основные функции
💠Проверка существования диска и точки монтирования. Перед монтированием скрипт проверяет, не примонтирован ли диск, и создаёт точку монтирования, если это необходимо.
💠Указание параметров монтирования. В конфигурации скрипта определяются переменные:
DRIVE_TO_MOUNT — путь к локальному диску, который нужно смонтировать (например, /dev/sda1).
PATH_WHERE_MOUNT — абсолютный путь к точке монтирования.
MOUNT_TYPE — тип файловой системы, который будет использоваться в опции -t команды mount.
▶️Скрипт можно использовать через crontab.
🐙 Перейти на Github
🔨 bash_help8 889
IT-челлендж Слёрма — проверь свой скилл!
5 дней — 5 тем для IT-инженеров уровня Middle:
▪️ Bash / Linux / DevOps
▪️ Сети
▪️ CI/CD, Docker, Jenkins
▪️ SQL и базы данных
▪️ Информационная безопасность
🔺Короткие, но умные задания в Google Формах
🔺Удобный Telegram-бот ведёт по шагам
🔺Занимает не больше 15–20 минут в день
Подарки победителям:
Подписка на курсы Слёрма
Курс «Администрирование Linux»
Курс «Ansible: Infrastructure as Code»
🎫 30% скидка всем, кто дойдёт до конца
📅 Челлендж с 16 по 20 июня
📍 Регистрация в боте до 15 июня
8 889
⚙️ Скрытие пользовательского ввода в скриптах bash
✔️Это может быть полезно, когда вы просите пользователей ввести пароли, API-токены или что-то еще, что вы не хотите выводить на экран.
▶️Мы рассмотрим два решения.
Одно работает с любой оболочкой Bash или Bash-подобной оболочкой, а другое соответствует POSIX, если вам нужна максимальная совместимость.
Скрипт ниже включает в себя оба решения.
▶️Это пример, который вы можете запустить, но в нем есть только 1-3 строки кода в середине, которые сосредоточены на скрытии пользовательского ввода.
Вы можете раскомментировать вариант 1 или 2 в зависимости от вашего случая использования.
#!/usr/bin/env bash
set -o errexit
set -o nounset
while true; do
printf "Please input your API key and hit enter: "
# ВАРИАНТ 1: ТРЕБУЕТСЯ ОБОЛОЧКА BASH ИЛИ BASH-ПОДОБНАЯ ОБОЛОЧКА (BASH, ZSH, ASH И Т. Д.)
read -sr key
# ВАРИАНТ 2: ДЛЯ МАКСИМАЛЬНОЙ СОВМЕСТИМОСТИ С ОБОЛОЧКАМИ (SH, DASH И Т. Д.)
# stty -echo
# read -r key
# stty echo
if [ -z "${key}" ]; then
printf "\n\nPlease input your API key or hit CTRL+c to halt this script\n\n"
else
# TODO: Вставьте свою пользовательскую логику, которая использует этот ключ.
printf "\n\nFor demo purposes, your API key is: %s\n" "${key}"
break
fi
done
▶️Основное отличие заключается в том, что флаг -s из read недоступен в sh и других минимальных оболочках.
Флаг -s не позволяет передавать ввод пользователя через echo.
▶️Чтобы обойти это ограничение, мы можем использовать stty, чтобы отключить эхо, возвращающее наш чувствительный текст, записать этот ввод в переменную, а затем снова включить echo.
🖼️ Ссылка на источник
🔨 bash_help8 889
Как запустить собственный пет-проект и зарабатывать на нём как senior-разработчик? 💲
А что, если перевернуть игру, и вместо работы в IT на дядю запустить собственный пет-проект, который будет приносить деньги?
Александр Рогачев запустил телеграм-канал Indie Hackers, где рассказывает про пет-проекты, которые приносят неплохой стабильный доход своим создателям. Без венчурных инвестиций, без бизнес-планов и команды. Разве такое возможно? Да!
Несколько примеров:
— Агрегатор вакансий c доходом в 4000$ / месяц
— Плагин для Chrome с доходом 20000₽ / месяц
Вдохновляйтесь свежими идеями, которые могут обеспечить стабильный пассивных доход, на канале Indie Hackers. Уверен, что там вы найдёте то самое, что зажжёт огонь в вашем сердце! ❤️🔥
➡️ Ссылка для входа
8 889
⚙️ gah
✔️Установщик приложений из GitHub Releases, который не требует прав
sudo.
▶️Это простой bash-скрипт, который загружает последнюю версию бинарного файла приложения с GitHub и устанавливает его в директорию ~/.local/bin.
➡️ Основные функции
💠Загрузка версии приложения с GitHub. Можно указать последнюю или конкретную версию.
💠Автоматический выбор подходящего бинарника для текущей платформы.
💠Поддержка ОС: Linux и MacOS, архитектур x64 и ARM64.
💠Обработка нескольких приложений в одном релизе GitHub.
💠Поддержка архивированных (zip, tar.gz, tar.bz2, tar.xz) и одиночных бинарных релизов.
💠Предопределённые псевдонимы для репозиториев GitHub.
🐙 Перейти на Github
🔨 bash_help8 889
Всё, трансляция GetNet пошла — успевайте подключиться, пока не начали обсуждать “как всё сломалось”.
https://live.getnet.pro/
Сети, эксплуатация, мониторинг — чужие грабли, которые звучат гораздо приятнее, чем свои.
А если повезёт, можно будет потом сказать: “О, это у меня тоже было — но в пятницу”.
Так что готовьте кофе, и слушайте, как у других не всегда получается с первого раза, а главное, как с этим бороться
8 889
⚙️ Риски безопасности переменных без кавычек в Bash и POSIX
✔️В этом руководстве мы рассмотрим, почему кавычки переменных в скриптах Bash имеют решающее значение, и какие риски для безопасности несет их отсутствие.
➡️ Важность цитирования переменных
▶️Мы можем рассматривать переменные как контейнеры, в которых хранится информация для последующего использования.
▶️При разработке скриптов Bash/POSIX пренебрежение кавычками переменной приводит к тому, что shell-скрипты расширяют переменную, что впоследствии интерпретируется как несколько аргументов. Давайте напишем скрипт example.sh, в котором переменная хранит сообщение без кавычек:
#!/bin/bash
message=$1
echo $message
▶️Когда мы выполняем следующую команду в Bash, мы можем ожидать, что она выведет «Hello World» в терминале в той же строке, однако этого не происходит:
$ ./example.sh “Hello World”
Hello
World
▶️В примере мы видим, что скрипт использует команду echo дважды: один раз для «Hello» и второй раз для «World». Следовательно, он рассматривает переменную как два отдельных ввода вместо одного.
▶️Если заключить переменную message в строке echo в кавычки, например echo «$message», скрипт будет интерпретировать все, что находится внутри кавычек, как один аргумент, независимо от его содержания.
➡️ Риски безопасности и стратегия их снижения
▶️Невозможность заключить переменные в кавычки может привести к различным рискам безопасности. Рассмотрим, как это может привести к таким проблемам, как раскрытие информации и выполнение произвольного кода.
▶️Злоумышленник может использовать переменные без кавычек для перечисления каталогов или доступа к конфиденциальным файлам, что может привести к раскрытию конфиденциальной информации.
▶️Рассмотрим сценарий Bash с именем read_file.sh, в котором используются переменные без кавычек, что приводит к раскрытию информации:
#!/bin/bash
if [ "${1##*.}" != "txt" ]; then
echo "Only text files allowed"
exit 1
fi
filename=$1
contents=$(cat $filename)
echo "$contents"
▶️В представленном коде ${1##*.} извлекает расширение файла из его имени. Затем проверяется, имеет ли имя файла расширение txt; если нет, то скрипт завершает работу. Скрипт ожидает аргумент «имя файла» из командной строки. При получении имени файла с расширением txt он выводит его содержимое с помощью команды echo:
$. /read_file.sh itsecforu.txt ---Baeldung.txt--- You are currently viewing itsecforu file. ---End of itsecforu.txt---▶️Как показано выше, он выводит содержимое файла. Однако передача неверных аргументов вызывает сообщение об отказе:
$ ./read_file.sh secret
Only text files allowed
▶️В предыдущем примере мы не смогли получить прямой доступ к секретному файлу. Однако, передав аргумент с пробелом, скрипт позволил разделить аргумент:
$ ./read_file.sh ‘secret itsecforu.txt’ ***Disclaimer: You are accessing secret. Please be sure you are authorized*** Hey! this is a sensitive file. ***End of Secret*** ---Baeldung.txt--- You are currently viewing itsecforufile. ---End of itsecforu.txt---▶️Как показано выше, мы успешно загрузили секретный файл. Наличие файла itsecforu.txt с правильным расширением txt удовлетворяет требованиям скрипта. Более того, пробел в
‘secret itsecforu.txt’ приводит к тому, что сценарий интерпретирует его как два отдельных аргумента, что позволяет нам получить доступ к секретному файлу.
🖼️ Дочитать статью
🔨 bash_help8 889
Подборка 4 курсов по IT — бесплатно
👉 Забирайте курсы по ссылке, пока они открыты: https://epic.st/-Y_NP?erid=2Vtzqxksj17
8 889
⚙️ "AM" Application Manager
✔️Bash-скрипт, который позволяет устанавливать, обновлять и удалять отдельные AppImage-программы в GNU/Linux.
➡️ Некоторые возможности:
💠интеграция портативных программ и AppImages на уровне системы (по умолчанию) или локально (с использованием флага
--user);
💠обновление и управление программами из командной строки;
💠интеграция программ в меню приложений;
💠возможность сборки программ на лету.
▶️Может использоваться на всех архитектурах, поддерживаемых ядром Linux, и работает со всеми дистрибутивами GNU/Linux.
🐙 Перейти на Github
🔨 bash_help