ru
Feedback
Bash Days | Linux | DevOps

Bash Days | Linux | DevOps

Открыть в Telegram

Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru

Больше

📈 Аналитический обзор Telegram-канала Bash Days | Linux | DevOps

Канал Bash Days | Linux | DevOps (@bashdays) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 23 810 подписчиков, занимая 5 710 место в категории Технологии и приложения и 28 118 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 23 810 подписчиков.

Согласно последним данным от 15 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -195, а за последние 24 часа — -10, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 23.79%. В первые 24 часа после публикации контент обычно набирает 11.52% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 5 664 просмотров. В течение первых суток публикация набирает 2 744 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 25.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как bashdays, linux, bash, docker, скрипт.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.r...

Благодаря высокой частоте обновлений (последние данные получены 16 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

23 810
Подписчики
-1024 часа
-337 дней
-19530 день
Архив постов
Подработка на разработку! Мой хороший товарищ попросил закинуть, закидываю. Мож у кого-то команда разработчиков простаивает, ну либо договоритесь выполнить какую-то часть работ в плане инфраструктуры. Короче, за подробностями пишите Марии, все расскажет и покажет 👇 @marysako_py чтобы вопросов не было — публикация ТЗ и контактов согласованы

Карьерный рост в информационной безопасности требует не только знаний, но и практического опыта. Платформа онлайн-тренингов «
Карьерный рост в информационной безопасности требует не только знаний, но и практического опыта. Платформа онлайн-тренингов «Лаборатории Касперского» по кибербезопасности предлагает уникальную возможность — обучение на реальных кейсах из практического опыта мировых экспертов компании. В программе курсы по: • Реверс-инжинирингу и анализу вредоносного ПО • Реагированию на инциденты и цифровой криминалистике • Поиску угроз с помощью современных инструментов Все тренинги включают работу в виртуальных лабораториях с доступом 24/7. Формат самообучения подходит даже занятым специалистам. Сделайте практические навыки своим конкурентным преимуществом. Реклама. АО "ЛАБОРАТОРИЯ КАСПЕРСКОГО", ИНН: 7713140469

Как я обновил Proxmox и остался жив Здрасти, приехали. Сегодня будем обновлять proxmox 8 на 9.1 Оно в принципе и необязательно, но очень хотелось потыкать новую фичу с OCI.
OCI это способ запускать контейнеры из Docker-образов. То есть proxmox теперь умеет скачивать Docker-образы (OCI-images) и превращать их в LXC-контейнеры.
А нахуя? Чтобы проще запускать приложения, которые уже существуют в виде Docker-образов. Теперь в LXC не нужно поднимать отдельно докер демон, все работает из коробки. Ладно, отвлеклись. Про OCI отдельно распишу. Сегодня обновляем всю эту трихомудию до нужной версии. Бекапить я ничего не буду, бекапы для слабаков. Но ты меня не слушай, делай правильно и подстилай соломку.
Даже если у меня всё пойдет по пиздец, это отличный кейс, чтобы отдебажить проблему и решить её.
По классике сюда всё не влезло, поэтому гоу в блог читать продолжение 👇 🅰️🅰️🅰️🅰️🅰️🅰️🅰️🅰️ ➡️ https://two.su/4ui2c 🅰️🅰️🅰️🅰️🅰️🅰️🅰️🅰️ 🛠 #proxmox #devops #selfhosting 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Надёжность сервисов — это не “бонус”, а фундамент. Любой сбой, простои или утечка — это потерянные деньги, репутация и довери
Надёжность сервисов — это не “бонус”, а фундамент. Любой сбой, простои или утечка — это потерянные деньги, репутация и доверие пользователей. Если вы работаете с продакшн-системами, пришло время прокачать инженерное мышление в духе SRE. 🔥 Курс «SRE: практики и инструменты» от OTUS покажет, как инженеры крупнейших компаний выстраивают работу так, чтобы сервисы не падали, а росли под нагрузкой. Вы научитесь: - управлять надёжностью, - автоматизировать эксплуатацию, - устранять инциденты до того, как они станут проблемой. Всё это через практику: Kubernetes, Prometheus, Terraform, Ansible, Python. После курса вы сможете не просто “чинить” инфраструктуру, а проектировать её с нуля — устойчивую, наблюдаемую, масштабируемую. ➡️ Пройдите короткое вступительное тестирование, получите скидку и закрепите за собой место на курсе: https://vk.cc/cRDLsU Старт 27.11.2025! Промокод на скидку: SRE_En_11 до 07.12.2025 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

А вот это нам надо! TUI админка для Proxmox. И да, ее можно поставить себе локально и цепануть к ней все твои Proxmox кластер
А вот это нам надо! TUI админка для Proxmox. И да, ее можно поставить себе локально и цепануть к ней все твои Proxmox кластера, которые находятся где-то в сети. Называется всё это добро — pvetui Работает под всеми операционками, так как реализован на GO. А зачем? Ну я заебался каждый раз лезть в браузер, чтобы сделать какие-то рутинные действия, да и айпишники я никогда не помню чтобы к ним по ssh подключиться. А через pvetui такое можно провернуть в два счета.
Ты скажешь — дак сделай алиасы для айпишников и цепляйся к нужным виртуалкам. Справедливо, но мне лень. Тем более виртуалки у меня постоянно создаются, удаляеются и я ебал каждый раз алиасы делать.
Установка и запуск:
go install github.com/devnullvoid/pvetui/cmd/pvetui@latest
/home/user/go/bin/pvetui
Под другие ОС:
yay -S pvetui-bin
yay -S pvetui-git
brew install --cask devnullvoid/pvetui/pvetui
scoop bucket add pvetui https://github.com/devnullvoid/scoop-pvetui
scoop install pvetui

# либо из исходников
git clone https://github.com/devnullvoid/pvetui.git
cd pvetui
make install
При первом запуске утилита попросит сконфигурировать её. Жмем пару раз Enter, открывается редактор конфига, заполняем необходимые поля. Я заполнил URL, логин и пароль от панели Proxmox. Чтобы оно не орало, нужно стереть данные в полях API, тогда оно даст сохранить конфигурационный файл.
Но опять же если у тебя API ключ, делаешь под своё конфигурацию.
Инициализация, закончена, видим сообщение:
✅ Configuration is ready!
🔄 Please re-run 'pvetui' to start the application with your new configuration.
🚪 Exiting.
Запускаем морду и смотрим что получилось.
/home/user/go/bin/pvetui
Эту штуку можно повесить на alias либо прописать в PATH, чтобы полные пути до бинарника каждый раз не писать. А получилось у нас прям заебись. Теперь я нажимаю ALT+2 и попадаю в список всех своих виртуальных машин. Стрелочками выбираю нужную мне машину и нажимаю букву «m», открывается менюшка. В менюшке можно сразу провалиться в машину по SSH, что мне и нужно. Но это еще не всё, там и ребуты и миграции, даже VNC есть (нужен xdg). Короче базовый минимум поадминить присутствует. Да, если нажать «ESC» то откроется еще одна глобальная менюшка для конфигурации самой утилиты, выбор профилей, управление плагинами и т.п. Короче явки-ссылки я тебе дал, дальше сам смотри, всё там гибко конфигурируется и настраивается. И тем более TUI интерфейсы сейчас прям в трендах. Хорошей тебе рабочей недели! Не болей! 🛠 #selfhosting #linux #devops 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Недавно я обмолвился про Karpenter в Selectel, ну так вот, теперь этот инструмент можно потыкать в реальных условиях.
Если запамятовал, то Karpenter это штука, разработанная AWS, которая позволяет масштабировать инфраструктуру и снижать затраты.
Работает это так — сервис обладает информацией о доступных ресурсах и ценах, а далее автоматически подбирает конфиги в зависимости от твоих хотелок. Киллер-фича — создание оптимальных узлов под фактическую нагрузку, а не предварительное масштабирование определенных node groups. По итогу автоскейлинг становится быстрее, дешевле и умнее. Karpenter создает идеальные ноды под конкретные поды «на лету», а не выбирает из заранее заданных node groups. Мир меняется, технологии меняются. Установи Karpenter в Managed Kubernetes и оптимизируй расходы на инфраструктуру → https://slc.tl/hr1d3
Если Karpenter молчит — это не значит, что он завис. Это значит, что он думает, как сделать ещё дешевле. 🥳
Реклама, АО «Селектел», erid: 2VtzqvvWPbP

Надоел и приелся VirtualBox/VMWare? Хочется новенького? Да легко, опять же эта новая херабора как-то мимо многих прошла, вклю
+3
Надоел и приелся VirtualBox/VMWare? Хочется новенького? Да легко, опять же эта новая херабора как-то мимо многих прошла, включая меня. Нет это не LXC, vagrant и даже не docker.
Дело пахнет писюнами…
Короче, это — Multipass от Canonical. И да, полностью бесплатная и с мордой. Выдумать ничего не буду, лови нативку с сайта:
Получите по ебалу мгновенную виртуальную машину Ubuntu с помощью одной команды. Multipass может запускать виртуальные машины и настраивать их с помощью cloud-init, как в общедоступном облаке. Прототип вашего облака запускается локально и бесплатно.
Работает под Linux, Wiundows, Mac Что же это за зверь? Multipass использует доступный гипервизор в зависимости от платформы: - Linux — KVM - macOS — HyperKit или QEMU - Windows — Hyper-V или VirtualBox (в новых версиях QEMU) Можно управлять как через морду, так и через командную строку. Это развязывает руки. Например, можно накодить себе bash скрипт и через него поднимать виртуалки под лабы. Чё прикольно, для него есть Terraform провайдер, ну прям не инструмент, а золото.
terraform {
  required_providers {
    multipass = {
      source  = "larstobi/multipass"
      version = "~> 1.4.2"
    }
  }
}
Работает элементарно, если через морду — выбираешь дистрибутив, накручиваешь ползунки и жмешь Launch, через 40 секунд у тебя готовая виртуалка. Ну либо headless (через командную): Основные команды:
multipass launch --name foo
multipass exec foo -- lsb_release -a
multipass list
multipass stop foo bar
multipass start foo
multipass delete bar
multipass purge
multipass find
multipass launch -n bar --cloud-init cloud-config.yaml
multipass help
Из дистрибутивов только Ubuntu, но этого достаточно чтобы что-то протестировать либо погонять. Ребята в LF активно этим инструментом пользуются и создают тестовые кубер-кластера, ну и ансибл оттачивают. Настроек там жопой ешь, так что можно и статические айпишники мутить, выбирать сетевые режимы и многое другое. В общем рекомендую, инструмент зачетный, никакой ёбли как VBox и VMWare. 🛠 #devops #vm #linux 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

K2 Cloud собирает сетевых инженеров на митап 🌐 28 ноября эксперты из K2 Cloud, Positive Technologies, Avitotech, Wildberries
K2 Cloud собирает сетевых инженеров на митап 🌐 28 ноября эксперты из K2 Cloud, Positive Technologies, Avitotech, Wildberries & Russ и Точка Банка встретятся на митапе «Поговорим про сети» Что будем делать: — разберем метрики, которые спасают продукт; — научимся «гадать» по сетевым пакетам; — сыграем в сетевую версию игры «100 к 1». Опыт из очень разных инфраструктур и LinkMeUp в роли ведущего — регистрация по ссылке

Разбираемся с options и inputs в gitlab ㅤ Частенько ребята с LF стали приходить с такой проблемой: stages: - deploy variables
+3
Разбираемся с options и inputs в gitlab Частенько ребята с LF стали приходить с такой проблемой:
stages:
  - deploy
variables:
  ENVIRONMENT:
    description: "Deployment environment"
    value: "N/A"
    options:
      - "N/A"
      - "STAGE"
      - "PRODUCTION"
deploy:
  stage: deploy
  script:
    - echo "Выбрано окружение:" "${ENVIRONMENT}"
  rules:
    - when: manual
Это кусок говна пайплайна, который при запуске формирует выпадающий список окружений, выбираешь окружение и деплой проходит в него.
НО — этот список перестал появляться. Причем избрано, у кого-то есть, у кого-то хуй с маслом.
Ошибок синтаксиса в ямликах нет, каких-то разумных сообщений и наводок от гитлаба тоже нет. Чё делать? ➡️ Решение Идем: Settings → CI/CD → Variables и кликаем в радио-батон — Developer. Всё! Теперь выпадающие списки вновь начинают работать. А еще людей смущает новая штука inputs, которая совсем недавно появилась. Работает она с 17й версии.
spec:
  inputs:
    environment:
      description: "Куда деплоим?"
      type: string
      default: "N/A"
      options:
        - "N/A"
        - "STAGE"
        - "PRODUCTION"
---
stages:
  - deploy

deploy:
  stage: deploy
  rules:
    - when: manual
  script:
    - echo "Выбрано окружение: $[[ inputs.environment ]]"
Оно будет пиздеть во внутреннем редакторе - Incorrect type. Expected "string | array".yaml-schema, но будет работать если запустить пайплайн.
Ошибка возникает, потому, что Pipeline Editor использует старый YAML-валидатор. Так что, не обращай внимание на этот пиздёж.
А зачем нам этот input ведь с options и так всё работает? Ну хотя бы из-за типизированных параметров:
type: string | number | boolean | array
То есть: - можно сделать чекбокс (boolean) - можно сделать список (array) - можно сделать ограничение по диапазону (number) - можно сделать строгие варианты (options) - можно сделать regex-валидацию А обычный variables такого не умеют. GitLab постепенно превращает CI в настоящий «Pipeline as Functions». Например, в проекте А:
spec:
  inputs:
    env:
      type: string
      options: [stage, prod]
---
deploy-job:
  script: deploy_to $[[ inputs.env ]]
И проекте B можно вызвать:
deploy:
  trigger:
    project: A
    inputs:
      env: prod
Это как вызов функции с аргументом. Что еще: - Inputs работают даже при trigger-пайплайнах - Inputs могут быть required - Inputs отображаются отдельно и аккуратно в UI - Inputs часть нового стандарта GitLab CI Components Короче одни плюсы. Но есть большое НООООО! Это пиздец усложняет процесс разработки и отладку пайплайна. Да, стало удобнее и гибче, но всё это превращается в безумное ООП, где без базы и документации к проекту — ты хуй разберешься. Пока тебе хватает обычных options используй их. Не лезь в это ООП, оно пока рано и избыточно, особенно если ты новичок. Изучай! Как говорится — и не такие метели в ебало летели! 🛠 #devops #cicd #linuxfactory 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Инсайдер — это не миф, а реальный источник угроз для любой компании. Ошибки сотрудников, скомпрометированные учётные записи и
Инсайдер — это не миф, а реальный источник угроз для любой компании. Ошибки сотрудников, скомпрометированные учётные записи или злонамеренные действия изнутри часто становятся причиной инцидентов, которые не ловит ни один firewall. На открытом уроке вы узнаете, как выявлять уязвимости и закрывать их до того, как ими воспользуются. Разберём реальные сценарии атак: злонамеренные, скомпрометированные и небрежные пользователи. Покажем, как безопасно имитировать инсайдерские атаки в инфраструктуре — от credential dumping и анализа путей в Active Directory до ролевых симуляций red team и grey-box подхода. После урока вы получите готовую структуру сценария для имитации инсайдерских угроз и чек-лист мер по детекции и снижению рисков. Мы обсудим метрики, подходы к анализу инцидентов и способы усилить технические и организационные меры — IAM, UBA/UEBA, DLP и политики доступа. Занятие будет полезно пентестерам, специалистам SOC, инженерам ИБ, архитекторам и тем, кто отвечает за контроль доступа и безопасность инфраструктуры. 24 ноября, 20:00 МСК. Открытый урок проходит в преддверии старта курса «Пентест. Инструменты и методы проникновения в действии». Регистрация открыта: https://vk.cc/cRpLv9 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Всем зрасти. Забирайте спеца на работу. Codename: Андрей Rank: Овер-преисполнившийся Linux-админ
⚪ Последнее время активно занимается мониторингом, особенно Zabbix, хотя может и в пром с графаной
⚪Помогал мне тестировать и писать шаблоны для PVE/PBS и эта штука с небольшими видоизменениями с 6го заббикса стала официальной
⚪Отлично разбирается в Linux, с закрытыми глазами разберет и соберет ядро с учетом нюансов железа и ПО
⚪Кубер не уважает, к ансиблистам относится очень настороженно
⚪Владеет светлой магией Bash, тёмной магией Perl, и немного Python
Контакт: @egoza73 🛠 #кандидаты #кадры 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Даже двухнедельный отпуск не принесёт столько удовольствия, как хорошая партнёрка от Selectel.
Вредный совет: Если тебя спрашивают — где разместить инфраструктуру, предложи случайный и непроверенный хостинг из гугла, пусть страдают!
А если серьёзно — никакой магии. Советуй надёжного провайдера с 17-летним опытом, шестью ЦОДами и инфраструктурой под любые нужды — и получай до 15% на баланс.
На эти 15% арендуешь сервачок и бесплатно хостишь на нём свой личный блог про девопс-потуги и разработку. Ну или гоняешь пайплайны в личном гитлабе.
В партнерской программе Selectel всё честно, прозрачно и самое главное — надежно! Проверял сам. Год назад я ради интереса залетел в программу, и знаешь, зашло! Так что потыкай, за спрос не ударят в нос: Зарегистрироваться: https://slc.tl/mtgzq 😇🙂🙃😉😌😍🥰😘 😗😙😚😋😛😝😜🤪 🤨🧐🤓😎🤩🥳😏😒 😞😔😟😕🙁☹️😣😖 😫😩🥺😢😭😤😠😡 Серверы крутятся — проценты мутятся! в ссылке моей рефки нет, так что не ссы — навариваться на тебе я не стану… Реклама, АО «Селектел», erid: 2VtzqxCY6hn

Load Average на пальцах Все про него знают, но не все понимают. Давай рассмотрим такие цифры:
0.30  1.20  0.80
1. За последнюю 1 минуту средняя очередь = 0.30 2. за 5 минут = 1.20 3. за 15 минут = 0.80 Сразу куча вопросов, а что такое «очередь»? «очередь» == количество задач, которые хотят работать прямо сейчас, но процессоров не хватает, чтобы заняться всеми сразу. ➡️ Главное правило Сравниваем Load Average с количеством ядер. - У тебя 4 ядра → нормальная нагрузка = до 4.0 - У тебя 1 ядро → нормальная нагрузка = до 1.0 - У тебя 8 ядер → нормальная нагрузка = до 8.0
🟢 Всё в порядке: - LA ≤ количество ядер → CPU успевает всё делать, очередей нет. 🟡 Чёт уже не то, подгрузилось: - LA ≈ количество ядер × 1–2 → процессы начинают стоять в очереди, но система пока еще жива. 🔴 Жопа: - LA сильно > количества ядер → процессы стоят в очереди, всё тормозит.
➡️ Теперь на котиках Ты стоишь в магазине: - 1 касса, 1 человек в очереди → заебись - 1 касса, 10 человек в очереди → жопа - 4 кассы, 6 человек → пока норм CPU = кассы, Load Average == очередь. LA это не про загрузку CPU в процентах — это просто «очередь». ➡️ Как задебажить Берем top, htop или подобное и смотрим столбец %CPU, если один процесс жрёт 100% на однопроцессорной системе — он пидарас и забил ядро. Если процесс жрёт 300% на 4-ядерной — он занял 3 ядра. Смотрим самых прожорливых пидарасов:
ps aux --sort=-%cpu | head
Если ничего не нашел, то смотрим в сторону: - I/O wait — медленный диск / много дисковых операций - много процессов, но каждый почти ничего не ест (fork storm) - сеть или блокировки Капля в море, но это базовый чеклист на ситуацию, когда сервер ушел в «полку».
А ты добавляй в комменты, что еще можно вынести в дебаг, будет полезно.
🛠 #linix #devops 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Кто идёт на Kuber Conf by AOT 4 декабря? Первая некоммерческая K8s-конференция в Москве — отличный повод встретиться и обсуди
Кто идёт на Kuber Conf by AOT 4 декабря? Первая некоммерческая K8s-конференция в Москве — отличный повод встретиться и обсудить: 🟣 Как на самом деле работает CNI chaining в продакшене 🟣 Как безопасно развернуть Gatekeeper для k8s-in-k8s 🟣 Поддержку Kubernetes в Vitastor 🟣 Опыт построения Managed Kubernetes На ивенте будут топовые инженеры и архитекторы — будет о чём поговорить. Конференция проходит под эгидой Ассоциации облачно-ориентированных технологий (АОТ), которую создают Флант, VK Cloud и Yandex Cloud. Встречаемся? Программа и билеты: https://aot-kuberconf.ru/?utm_source=telegram&utm_medium=referral_cpc&utm_campaign=bashdays Реклама Садовская.Е.О ИНН:9710066394 Erid:2Vtzqw3fYS4

Продолжаем ковырять angie, на этот раз посмотрим на Status Page, которая отображает всю статистику по веб-серверу. Выглядит п
Продолжаем ковырять angie, на этот раз посмотрим на Status Page, которая отображает всю статистику по веб-серверу. Выглядит прям хорошо. Устанавливаем пакет:
sudo apt install angie-console-light
В папке /usr/share/angie-console-light/html появляется статика. Добавляем локейшен:
location /console/ {
    auto_redirect on;

    alias /usr/share/angie-console-light/html/;
    index index.html;

    location /console/api/ {
        api /status/;
    }
}
Теперь открываем в браузере и видим красивую мордочку. Демо мордочки можешь посмотреть здесь. Да, не забываем включить Basic Auth чтобы хитрожопые не подглядывали.
У меня на паре пет проектов эта морда включена (графана избыточна), чисто посмотреть статусы раз в сутки, которые возвращают 500ку. Если оно горит красным, значит что-то где-то пошло по пизде.
Подробнее читай в официальной документации. 🛠 #angie #devops 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

📘 На Stepik вышел курс — «DevOps-инженер: От основ до продакшена» Хотите автоматизировать деплой, управлять инфраструктурой
📘 На Stepik вышел курс — «DevOps-инженер: От основ до продакшена» Хотите автоматизировать деплой, управлять инфраструктурой как кодом и выстраивать надёжные CI/CD процессы? Этот курс — полный путь DevOps-инженера. • CI/CD: Jenkins, GitLab CI/CD, GitHub Actions, стратегии развёртывания (Blue-Green, Canary), rollback • Контейнеризация: Docker (образы, Compose, networking), Podman, оптимизация и безопасность контейнеров • Kubernetes: архитектура, Pods, Services, Deployments, Helm, RBAC, Service Mesh (Istio/Linkerd) • Infrastructure as Code: Terraform, Ansible (playbooks, vault), Packer, ArgoCD и Flux для GitOps • Облака: AWS (EC2, EKS, Lambda), GCP, Azure, Yandex Cloud, cost optimization • Мониторинг: Prometheus, Grafana, ELK Stack, Jaeger, OpenTelemetry, SLI/SLO/SLA • Безопасность: SAST/DAST, Vault, Zero Trust, Policy as Code, incident response • Продакшен практики: High Availability, Disaster Recovery, Chaos Engineering, on-call management 🎓 Сертификат — добавьте в резюме или LinkedIn 🚀 Скидка 25%, действует 48 часов 👉 Пройти курс на Stepik Реклама. Крупчатников М. С., ИНН: 344412054704, Erid: 2VtzqwTg7CC

Туалетная бумага по cron’у Я короче каждый месяц заказываю на WB туалетную бумагу, сразу беру 32 рулона. В чатике ссылки как-то скидывал на этот товар. И в сентябре меня эта рутина — заебала! Основная проблема — я забываю вовремя пополнять запасы. И после всех туалетных процедур приходится сидеть и ждать несколько часов пока мой бэкенд подсохнет и остатки артефактов сами отвалятся.
Решено было накидать Bash скрипт, который каждый месяц будет заказывать на WB радость для моей жопы.
Открытой API у WB нет, но реверс-инженерию никто не отменял. Открываем в браузере режим разработчика, натыкиваем нужные действия на сайте и потом смотрим вкладку Network. Выбираем нужные запросы и рожаем скрипт. Концепт скрипта: 1. Авторизация. С ней я не стал заморачиваться, авторизовался на сайте, выгрузил кукисы в файл. Полюбому можно и это автоматизировать через curl, но чёт пока лень. 2. Скрипт принимает единственный параметр $1, это ссылка на товар WB, мало ли бумага моя закончится и придется другого поставщика искать. 3. Дальше curl подгружает кукисы из файла, и делает несколько запросов к сайту, добавляет бумагу в корзину и оформляет заказ. Пример добавления в корзину:
RESPONSE=$(curl -s "https://cart-storage-api.wildberries.ru/api/basket/sync?ts=$TS&device_id=$DEVICE_ID" \
  -X POST \
  -H 'content-type: application/json' \
  -H 'origin: https://www.wildberries.ru' \
  -b "$COOKIES_FILE" \
  --data-raw "$JSON_PAYLOAD"
)
Все параметры прилетают из $JSON_PAYLOAD, параметр автоматически заполняются нужными данными на основе переданного урла в $1, да, активно используется jq. Говнокод конечно лютый получился, но работает. А это главное в нашем деле! 4. Ну и всё, в телегу мне приходит уведомление, что заказ оформлен, бабло спишут по факту. Ну и пишут примерное число доставки. 5. Как только товар пришел в пункт выдачи, получаю уведомление в телегу. Аналогично curl запросом проверяется статус в личном кабинете. 6. Закидываем скрипт в крон и забываем про эту рутину.
59 23 25 * * /usr/local/sbin/shit_paper.sh https://wb.ru/296/detail.aspx
Вот и вся наука. Теперь когда я возвращаюсь из гаража, захожу по пути в пункт выдачи и забираю свои 32 рулона. Удобно? Да охуенно!
Думал мож еще курьера прикрутить, но сроки доставки могут увеличиться, да и этот бедолага начнет мне звонить, согласовывать все, тут бы AI прикрутить, да ну его. И так большое дело сделано, жопка рада.
Еще бы научить чтобы чайник сам в себя воду наливал, было бы вообще ништяк. Давай, увидимся! Хороших тебе предстоящих выходных и береги себя! 🛠 #bash #devops 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

🔥 Из DevOps в SRE: следующий уровень инженерного мышления На курсе ты научишься управлять надежностью, доступностью и эффект
🔥 Из DevOps в SRE: следующий уровень инженерного мышления На курсе ты научишься управлять надежностью, доступностью и эффективностью сервисов, улучшать наблюдаемость системы и реагировать на инциденты. 🔍 Пройди короткий тест по SRE, который поможет тебе определить текущий уровень, спланировать развитие и занять место на продвинутом курсе «SRE практики и инструменты» от OTUS. ➡️ ПРОЙТИ ТЕСТ: https://vk.cc/cRiTKY Успей воспользоваться 🏷10% скидкой на курс! Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Вопрос с LF, думаю всем полезно будет. Пишу пайплайн, есть такая конструкция:
platform=$(uname -m)
docker run --platform linux/arm64
Я бы хотел, чтобы параметр --platform linux/arm64 подставлял в том случае, если архитектура платформы == arm64, в других случаях этот параметр подставлять не нужно. Делаю так, но получается какая-то хуйня:
platform=$(uname -m)
docker run ${platform/arm64/--platform linux/arm64}
Короче смотри. Задачку можно решить несколькими способами. Способ 1. Заточен под Bash:
platform=$(uname -m)
docker run $([[ $platform = arm64 ]] && echo "--platform linux/arm64")
Этот способ не сработает, если код запустится в /bin/sh, потому что оно не POSIX. Тут уже смотри под чем все это будет запускаться.
Тут можешь почитать чем отличаются [[ ]] от [] А тут что такое POSIX
Способ 2. Универсальный:
platform=$(uname -m)
docker run $( [ "$platform" = "arm64" ] && echo "--platform linux/arm64" )
На 100 % POSIX-совместим. По функционалу эти способы идентичны. Ну и по итогу имеем: [[ ... ]] — это расширенная bash-версия, безопаснее и гибче (поддержка pattern, безопасность кавычек при пробелах и пустых строках, поддежка логики с &&) [ ... ] — POSIX-совместимая, более строгая и требующая аккуратности с кавычками. Ну и твои варианты приветствуются, поделись в комментах, глядишь что-то маст-хевное у тебя в загашнике есть. 🛠 #bash #pipeline 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Linux под угрозой? Повысьте защищенность конечных устройств с помощью новой технологии Universal Linux Kernel Module от «Лаборатории Касперского»