Bash Days | Linux | DevOps
23.6K subscribers
231 photos
26 videos
780 links
Авторский блог от действующего девопса

Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.

Автор: Роман Шубин
Реклама: @maxgrue

MAX: https://max.ru/bashdays

Курс: @tormozilla_bot
Блог: https://bashdays.ru
Download Telegram
🤖 DevOps в эпоху AI трансформации: что работает уже сейчас!

17 сентября Сбер собирает DevOps-инженеров, SRE и платформенные команды на встречу о том, как AI меняет работу с инфраструктурой, релизами и безопасностью.

Обсудим:
🔘Platform Engineering и IDP: как строить внутренние платформы без лишней сложности
🔘Agentic engineering: каких агентов уже можно доверить пайплайнам
🔘Security на скорости: как закрывать уязвимости, когда счет идет на часы

Своим опытом поделятся практики из Авито, Сбера, Cloud․ru и Т-Банка.

Встречаемся 17 сентября в 17:00 в Сбер.Среде (Москва, Земляной Вал 9А) или онлайн. Мест всего 150 — успей занять своё по ссылке!
Please open Telegram to view this post
VIEW IN TELEGRAM
7
Всем привет, с вами TagdTagd. И это вторая часть. Практическая.

С первой частью можешь ознакомиться здесь


Скрипт писался с привлечением ИИ, но мной отлажен, и точно работает. Требует jq и curl.
В отличие от телеграма, в максе заявлено, что бот может писать сообщения пользователю тольков течение суток, после последнего сообщения пользователя боту.

Поэтому для нормальной работы оповещателя желательно создать группу, добавить туда бота, и от его имени писать.

С определением номеров пользователей и групп разбирался по статье Романа. Там очень хорошо описано.

#!/bin/bash
# Скрипт отправляет текстовое сообщение пользователю или в чат
# $1 "user" для отправки пользователю, "chat" для отправки в чат
# $2 ID пользователя или чата, соответственно
# $3 "Текст сообщения в кавычках"
# $4 "Имя файла в кавычках"
# если файл есть, а текста нет - вместо текста ""
# v 20260812

declare -x PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

set -euo pipefail
exec 1>&2
declare BASE_URL="https://platform-api2.max.ru" # база API + нужны сert минцифры
declare BOT_TOKEN="AAAAAAAAAAAAAAAAAAA_BBBBBBBB_CCCCCCCCCCCCCCCC"

# === Параметры скрипта ===
case "$#" in
0|1|2)
clear
head -6 "$0"
exit 1 ;;
3)
declare FILE="" ;;
*)
declare FILE=$4
if [[ -f "$FILE" ]];then
clear
echo -e "Файл '$FILE' не найден"
exit 1
fi ;;
esac

if [[ -z "$3" && -z "$4" ]]; then
clear
echo -e "Ошибка. Нет текста или файла."
exit 1
fi

declare -l RECEPIENT=$1
declare ID=$2
declare TEXT=$3

case $RECEPIENT in
user | chat )
declare TO_URL="$BASE_URL/messages?${RECEPIENT}_id=$ID" ;;
*)
clear
echo -e "ошибка параметра 1" $RECEPIENT\\n
head -6 "$0"
exit 1 ;;
esac

#declare -p RECEPIENT ID TEXT FILE TO_URL

# === 1. Получить URL для загрузки файла ===
if [[ -n "$FILE" ]]; then
UPLOAD_META=$(curl -s -X POST \
"$BASE_URL/uploads?type=file" \
-H "Authorization: $BOT_TOKEN")

UPLOAD_URL=$(echo "$UPLOAD_META" | jq -r '.url')
if [[ -z "$UPLOAD_URL" || "$UPLOAD_URL" == "null" ]]; then
echo "Не удалось получить URL для загрузки"
echo "Ответ API: $UPLOAD_META"
exit 2
fi

# === 2. Загрузить файл ===
UPLOAD_RESULT=$(curl -s -X POST \
"$UPLOAD_URL" \
-F "data=@$FILE")

# Сохраняем результат загрузки в переменную для вложения
ATTACHMENT_PAYLOAD="$UPLOAD_RESULT"
fi

# === 3. Формируем JSON сообщения ===
# Если есть файл, добавляем attachment
if [[ -n "$FILE" ]]; then
MESSAGE_JSON=$(jq -n \
--arg text "$TEXT" \
--argjson attachment "$ATTACHMENT_PAYLOAD" \
'{
text: $text,
attachments: [
{
type: "file",
payload: $attachment
}
]
}')
else
MESSAGE_JSON=$(jq -n --arg text "$TEXT" '{text: $text}')
fi
sleep 3 # для антифлуда
# === 4. Отправляем сообщение ===

curl -s -X POST \
"$TO_URL" \
-H "Authorization: $BOT_TOKEN" \
-H "Content-Type: application/json" \
-d "$MESSAGE_JSON" | jq .


Сохраняем send_max.sh

chmod +x ./send_max.sh  
/send_max.sh "chat" 123456 "text" "/path/to/file"


🛠 #devops
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
24
Всем привет, с вами TagdTagd. Сегодня опять поднимем тему архивов, но немного с другой стороны. Поговорим о сохранности данных.

Вот здесь https://t.me/bashdays/1402 уже немного касался этой проблемы, теперь немного расширим. Часть 1/4.


Итак - архивы растут. Диски растут. А надежность при этом падает. Этож и ёжику резиновому понятно, что чем больше файл, тем больше вероятность получить дырочку в правом боку.

Конечно, сейчас этим уже озаботились и понавыдумывали всяких правильных файловых систем типа btrfs и zfs. Но они любят новое железо, и особенно память. А как быть, если фирма маленькая, и для хранения бэкапов приходится использовать машины, выведенные из эксплуатации из-за морального устаревания?

Они себе вполне могут справляться с задачами архивирования. Но как обеспечить надежность хранения на старом оборудовании?

Не нужно ничего придумывать. Все уже украдено придумано до нас.

По крайней мере в мире Linux. Есть такая прога - par2. Она создает par2-файлы с кодами Рида-Соломона, для файлов или каталогов. Это позволяет восстановить файл в случае повреждения, а если par2 создавался для каталога, то и в случае полного уничтожения файла.

Фактически с помощью этой программы можно создавать снапшоты ФС. Но конечно, чудес в жизни не бывает. Если размер файлов четности (par2) 10% от файлов данных, то и восстановить данные можно будет при повреждении не более 10%. Короче, par2 - это такой RAID для бедных, который защищает от небольшой потери данных.

Я не буду здесь описывать конкретные примеры использования, сейчас уже все освоили ИИ, а он подскажет решения для Вашей задачи лучше, скажу только, что можно на старенькой машине выделить два диска, например один на 2Тб, а другой на 240Гб.

На большом можно размещать архивы, а на маленьком контрольные суммы к ним. Да, такая схема не защитит от выхода из строя диска или контроллера, но вполне может защитить от битового гниения (bit rot), плохих секторов (bad block), или ошибок при передаче файла по сети.

Конечно, не стоит складывать все яйца в одну корзину. Нужно взять две такие машины в разных местах. Это будет гораздо надежнее, чем одна машина с RAID-Z2. Ну, и контроль дисков с помощью smartctl из пакета smarmontools никто не отменял.

man par2
man smartctl
wiki Код Рида — Соломона


Продолжение следует...

🛠 #devops
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
24
Здрасти приехали, решил я в кой-то веке воспользоваться услугами Codex, создал аккаунт, пополнил баланс через хуй-пизда-копыто и вот они финальные метры до финиша… Хуй там плавал.

Эта залупа требует верификацию по номеру телефона, естественно РФ номера не подходят. Почесал я репу, поплакал, но нюни не стал распускать. Мыж инженеры, надо искать способы решить этот внезапный квест.

Покупка одноразового номера не подходила, велика вероятность что эта шляпа через день запросит новое подтверждение. А покупать уже активированный аккаунт я тоже в рот ебал, не люблю я такое. Мне нужно чтобы это было мое и очень желательно — бесплатно.

Всякие eSIM я тоже ебал, сегодня она работает, а завтра превращается в тыкву.

Ну и остался самый очевидный вариант — сгонять заграницу на выходные и разжиться симкой загнивающего запада.

Но зачем мне всё это? Я не стал выбирать жизнь, я выбрал кое-что другое. Почему? Да ни почему. Какие могут быть «почему», когда есть hero_in.


^^^ цитата из книги Ирвина Уэлша (Trainspotting), специальные средства осуждаю, чисто для словца…

Заграницу я не поехал, а сделал более очевидный шаг, забил в поисковик — купить иностранную симкарту с доставкой. И прихуел, как говорится — спрос, рождает предложения.

Иностранными симками банчат прям на озоне, прикинув хрен к заднице я заказал себе KZ Activ (артикул не даю, сам легко найдешь), за 500-600 рублей, доставка 2 дня. Перед заказом я прекрасно понимал, что покупаю кота мешке. Негативные отзывы все же пишут криворукие обезьяны.

Но кот в мешке оказался живым, единственный нюанс это нужен загранник, все регается на него. Да, регистрация займет 2 дня, после того как вставил симку в телефон, нужно выждать сутки и после первой реги еще сутки. Потом симка успешно заводится и работает в роуминге без абонентской платы.

Красота, хули. После всех этих телодвижений можно регать нужные сервисы, смс приходят отовсюду и успешно проходят любые верификации.

Теперь со мной часть KZ, ну ты понял, заебал!

🛠 #рабочиебудни
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
163
Please open Telegram to view this post
VIEW IN TELEGRAM
9
✨ Как настроить PostgreSQL для продакшен-нагрузок

При переходе к продакшен-нагрузкам важно заранее продумать отказоустойчивость, сценарии переключения между узлами и поведение кластера при плановых работах и сбоях.


29 сентября эксперт Cloud․ru проведет вебинар о том, как обеспечить высокую доступность PostgreSQL в облаке.

В программе:
▶️как устроен отказоустойчивый кластер в Evolution Managed PostgreSQL

▶️где проходит граница между высокой доступностью и аварийным восстановлением

▶️какую роль играет Multi-AZ-архитектура

▶️для каких задач используются реплики PostgreSQL

▶️как работают ручное и автоматическое переключение

▶️что важно учитывать при эксплуатации PostgreSQL в продакшене


Будет интересно всем, кто работает с PostgreSQL и отвечает за доступность баз данных и надежность инфраструктуры.

Зарегистрироваться
Please open Telegram to view this post
VIEW IN TELEGRAM
4
🚀 Zabbix 8.0 на подходе. Запланируйте обучение команды уже сейчас

В ближайшее время ожидается новая версия Zabbix, поэтому мы открываем набор на Zabbix Certified Specialist 8.0 и Zabbix Certified Professional 8.0.

🔥 До 15 октября включительно на оба тренинга действуют специальные условия участия. Оставьте заявку — расскажем подробности и поможем выбрать подходящий курс.

📅 25–27 ноября 2026 — Zabbix Certified Specialist 8.0

Научитесь собирать метрики, настраивать обнаружение проблем и оповещения, управлять шаблонами и создавать понятные дашборды. В программе: Zabbix agent, SNMP, веб-мониторинг, работа с логами, триггеры и предобработка данных.
Для тех, кто хочет увереннее решать повседневные задачи мониторинга и систематизировать знания.

👉 Программа Specialist 8.0

📅 16–18 декабря 2026 — Zabbix Certified Professional 8.0

Следующая ступень после Specialist 8.0: развертывание компонентов Zabbix, распределённый мониторинг через proxy, высокая доступность, балансировка нагрузки, автоматическое обнаружение ресурсов и корреляция событий.

Для тех, кому нужно масштабировать мониторинг и сокращать объём ручной настройки.

👉 Программа Professional 8.0

Оба тренинга — онлайн, на русском языке, по три дня. Практика на лабораторных стендах, обучение у сертифицированных тренеров и официальный сертификат после успешной сдачи экзамена.

Можно пройти Specialist в ноябре и продолжить обучение на Professional в декабре. Для допуска к экзамену Professional нужен успешно сданный экзамен Specialist 8.0.

Оставьте заявку через форму обратной связи или напишите @gals_software либо на hello@gals.software, чтобы узнать про специальные условия и запланировать обучение для себя или команды.

➡ P.S. Подписывайтесь на наш канал @zabbix_ru, где мы делимся опытом и публикуем много полезностей по Zabbix.

Реклама. ООО "ГАЛС СОФТВЭР", ИНН 5047195298, erid 2VtzquYEhkG.
Please open Telegram to view this post
VIEW IN TELEGRAM
7
ИИ-агент может быть у каждого: создать персонального помощника можно без настройки серверов, моделей и фреймворков

Недавно Cloud.ru запустил Agents Space — пространство, где вы легко можете запустить ИИ-агента. Вся работа с агентом идет в удобном чате, и вы можете подключить к нему сервисы для разработки, электронную почту, календарь, облачное хранилище.

Внутри сервиса уже есть готовые агенты — среди них OpenClaw, NemoClaw и ГигаАгент. А еще вы можете создать собственного под конкретные задачи.

Создаем личного ИИ-агента тут
4