uz
Feedback
Bash Days | Linux | DevOps

Bash Days | Linux | DevOps

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish

📈 Telegram kanali Bash Days | Linux | DevOps analitikasi

Bash Days | Linux | DevOps (@bashdays) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 23 788 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 5 702-o'rinni va Rossiya mintaqasida 28 099-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 23 788 obunachiga ega bo‘ldi.

19 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -226 ga, so‘nggi 24 soatda esa 1 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 23.40% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 13.11% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 5 567 marta ko‘riladi; birinchi sutkada odatda 3 119 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 22 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent bashdays, linux, bash, docker, скрипт kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.r...

Yuqori yangilanish chastotasi (oxirgi ma’lumot 20 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

23 788
Obunachilar
+124 soatlar
-217 kunlar
-22630 kunlar
Postlar arxiv
✨ Отус приглашает 15 февраля в 20:00 мск на бесплатный вебинар «Роль Apache Kafka в логировании». Вебинар является частью про
Отус приглашает 15 февраля в 20:00 мск на бесплатный вебинар «Роль Apache Kafka в логировании». Вебинар является частью продвинутого онлайн-курса "Observability: мониторинг, логирование, трейсинг". ➡️ Регистрация на вебинар: https://vk.cc/cur6xF 🤝 На вебинаре мы разберём: - роль брокера в Kafka; - как Kafka интегрируется в общую систему сбора данных; - индексы в Kafka; - взаимодействие с общим стеком логирования. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Привет, тут на днях в нашем чатике пролетала софтина которая делает этакий ханипот на 22 порту. И все кто ломится по ssh просто вязнут в этом болоте. Но сегодня не про это. Сегодня про злоумышленников, которые методом тыка пытаются найти и украсть бэкап. Зачастую бэкапы хранятся в папках проекта, либо вообще в корне пылятся годами. Как это бывает: переезжаешь на другой сервер, перетащил проект в zip архиве, распаковал, а сам zip не удалил. И теперь любой кто узнает имя архива, сможет его скачать, со всеми паролями и явками. Ну либо как в распространенных движках, есть всем известная папка, где могут находиться эти бэкапы. Вообще руками имена файлов никто не подбирает, для этого есть специальный софт, который просто брутфорсит по словарю всевозможные локейшены и если получает статус 200, то скачивает всё, что плохо лежит. Как с этим бороться? Ничего не бэкапить в папки проекта, удалять промежуточные файлы если что-то переносил, настраивать политики nginx чтобы 403 отдавал и т.п. Но есть способ сделать простой ханипот. Злоумышленник якобы находит бэкап, получает статус 200 и начинает его скачивать. Естественно это не бэкап, а специально подготовленный файл большого размера. Причем такой файл отдается специально с пониженной скоростью и санкциями. Повторюсь, маловероятно, что злоумышленник это человек. В основном сбором бигдаты занимается автоматизированный софт. Устанавливается на уже скомпрометированные машины, с которых осуществляется сканирование каталогов на наличие плохо лежащих файлов. Давай настроем такой ханипот на примере nginx Добавляем в nginx конфиги:
location ~* "^/(new|old|bkup|tmp|temp|upload|ftp|sql|file|www|drupal|joomla|wordpress|x|user|admin|a|b|r|rezerv|arch|arx|111|archive|auth|backup|clients|com|dat|dump|engine|files|home|html|index|master|media|my|mysql|old|site|sql|website|wordpress)\.tar.gz$" {
    access_log /var/log/nginx/honeypot.log;
    default_type application/zip;
    root /var/www/bashdayz/files/backup;
    rewrite ^(.*)$ /backup break;
    max_ranges 0;
    limit_rate 4k;
    limit_conn addr 1;
}

# а это в секцию http
limit_conn_zone $binary_remote_addr zone=addr:10m;
Указываем список на что будем триггериться. Ограничиваем скорость, ограничиваем число потоков, запрещаем докачку. Создаем файл затычку размером 1гиг, этого вполне хватит. Но можешь конечно сделать и больше.
dd if=/dev/zero of=/var/www/bashdayz/files/backup bs=1G count=1
Вот и всё. Теперь если кто-то попытается вытянуть у тебя бэкап к примеру mysql.tar.gz, то будет страдать. Идея думаю тебе понятна, вокруг нее можно городить вообще сумасшедшие схемы. Но опять же это всего лишь концепт, из которого можно сделать что-то большое и нужное. Я одно время применял этот способ в случае, когда коллеги просят выдать бэкап базы. Обычно я даю прямую ссылку на скачивание. Но бывают ситуации, когда разработчики ведут себя как зажравшиеся ЧСВешные мудаки. И на такой случай у меня для них была специальная ссылка для скачивания бэкапа. Ничего особенного, но с сюрпризом, бэкап никогда не скачается. Тащить 10 гигабайт со скоростью dial-up ну такое себе. А когда те начинали орать как свинья из avp, мой ответ был простой - проблема на твоей стороне. У меня видишь все работает и показываю скриншот с нормальной скоростью. Но таким быть фу, заподлостроением пусть школьники занимаются. Мы с вами взрослые и ответственные ребята. Правда? ) Ладно, рад всех видеть. Всем хорошей рабочей недели! tags: #nginx #networks — 💩 @bashdays

С чего начать изучение работы с RabbitMQ? С бесплатного практического урока «Очереди сообщений и протокол AMQP» от OTUS. На в
С чего начать изучение работы с RabbitMQ? С бесплатного практического урока «Очереди сообщений и протокол AMQP» от OTUS. На вебинаре разберём: - возможности протокола AMQP; - как подключаться к брокеру из вашего языка программирования; - как отправить и принять сообщение; - как организовать простейший RPC-сервис. Встречаемся 6 февраля в 20:00 мск в рамках курса «RabbitMQ для разработчиков и администраторов». Доступна рассрочка на обучение! Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок: https://vk.cc/cunmgT

Привет. Сегодня рассмотрим ситуацию… короче предыстория: Я саппортю ебически большой проект на php, в нем миллион файлов и папок. Есть некий файл с выгрузкой для бухов, который генерится по крону и куда-то складывается. Знаем точно, что он складывается как раз в тот ебический проект с миллионом файлов. Но не знаем как называется сам файл и где конкретно он сохраняется. Задача: найти местоположение файла с выгрузкой, узнать как называется этот файл и убедиться что файл вообще пытается создаться после запуска крона. Естественно нет документации, нет контактов с разработчиками, нет НИЧЕГО у кого можно что-то узнать. Это обычная практика в айти, вот вам проект, ебитесь сами. В общем приступаем к поискам. Лазить по каждой папке я не буду, тем более изучать конфиги и насиловать find. Я стараюсь не делать, то что мне не нравится. А вот накидать bash скрипт, это прям хлебом не корми, дай заговнокодить. Ладно, давай к делу. Отбрасываем все стандартные методы и скрам практики, ставим пакет inotify-tools и накидываем скрипт.
inotifywait -r -m -e create /var/www/bashdays | while read line; do
    echo "Created: $line"
done
inotify-tools - это набор утилит командной строки для мониторинга файловой системы в реальном времени на основе inotify, механизма ядра Linux, который позволяет приложениям реагировать на изменения файлов, каталогов или метаданных в файловой системе.
Да, мысль ты правильно понял, я сделал что-то на подобии снифера, который будет рекурсивно перехватывать события создания файла/папки и выводить нужную мне информацию на экран. Проще говоря, как только в папках с проектом что-то создастся, оно закричит и покажет мне, то что создалось. Что круто, мониторинг осуществляется рекурсивно, достаточно указать одну папку, а все подпапки автоматически попадут под колпак. Запускаем скрипт. В соседней вкладке запускаем команду, которая генерит этот вонючий файл с выгрузкой и ждем. Совсем скоро на экране я получаю такую запись:
Created: /var/www/bashdays/core/modx/var/tmp CREATE 1C_b2b_prices.csv
Опа, задача решена, путь до файла определен, как и его имя. Пишем комментарий к задаче, передвигаем её в Done и трекаем 8 часов потраченного времени. Вообще игрушка inotify-tools достаточно мощная, можно мониторить не только создание файлов, но и кучу еще всего. При должном подходе, можно свой собственный мониторинг собрать, выгружать в prometheus и соплю в grafana рисовать. Про все ее возможности писать не буду, всё прекрасно гуглится, да и man у нее хороший. Я лишь показал, как применил эту штуку на реальной задаче и сэкономил кучу времени. А дальше тебе карты в руки. А еще есть клевая штука incrond, с помощью неё можно запустить какую-нибудь утилитку, если в каком-то каталоге появился новый файл или произойдет другое событие. Например, можно дернуть обработчик этого файла, сделать резервную копию, или тегнуть в телеграм. Вариантов масса.
incrond (inotify cron daemon) - это демон для системы Linux, который обеспечивает возможность запуска задач (команд или скриптов) в ответ на события файловой системы, используя механизм inotify. Он подобен стандартному демону cron, но вместо использования времени он реагирует на изменения файлов и каталогов.
Я однажды видел подобную поделку на каком-то сервере у хостера, где админы сильно упарывались с безопасностью, отслеживали вообще любые изменения в рабочих каталогах и слали алерты на любой чих. С фейками для отнятия почт так боролись. Ну не знаю… по поему совсем уж избыточно. Ладно, не болей, хороших тебе предстоящих выходных и береги себя! tags: #linux #bash #debug — 💩 @bashdays

⚡️Тест на Observability: Мониторинг, Логирование, Трейсинг Проверь себя – пройди тест на знание навыков в отношении построени
⚡️Тест на Observability: Мониторинг, Логирование, Трейсинг Проверь себя – пройди тест на знание навыков в отношении построения систем оповещений, мониторинга и логирования, таких как Prometheus, Grafana, ELK, Apache kafka, etc. Тест приурочен к онлайн-курсу "Observability: мониторинг, логирование, трейсинг". Курс доступен в рассрочку. Научитесь строить эффективные системы мониторинга и логирования. Курс идеально подойдет администраторам Linux, DevOps-инженерам и разработчикам, которые хотят повысить квалификацию и увеличить доход. ➡️ ПРОЙТИ ТЕСТ: https://vk.cc/cujOim 🤝 Бонусом за успешно пройденный тест, получишь доступ к записям лучших вебинаров курса. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Важный опрос. А есть тут 1С разработчики?
Anonymous voting

Вечерок вчера весёлый получился, в плане отвала RU зоны. Ну да ладно, само все починилось, меня даже ночью не дернули, удалось поспать 5 часов. Сегодня продолжим тему с нулями, но на этот раз обсудим такое понятие как — Разрежённый файл. Или как их звать-величать «Дырявые файлы». Ты всяко в курсе, когда в виртуалке создаешь жесткий диск размером 500 гигабайт, то физический размер этого диска на хостовой машине будет около 1-2х гигабайта, само собой с установленной Linux системой. Ты суслика видишь? Нет. И я не вижу, а он есть. А где же все остальное место? А нигде, есть только информация, которая хранится об этом размере в метаданных файловой системы. И по мере необходимости это физическое место на диске выделяется и используется. Сам же файл представляет собой последовательность тех самых нулевых байт (magic zero).
Короче сохраняется только местоположение и количество последовательности нулевых байт. А при чтении такого файла, файловая система генерирует нужное количество нулевых байт.
Если уж совсем просто: Дырявые файлы - это файлы, которые выделяют пространство на диске только для хранения реально используемых данных. Чтобы стало понятнее, давай тыкать палкой. Создаем дырявый файл:
dd if=/dev/zero of=./bashdays bs=1 count=0 seek=100M
Создался файл bashdays размером 4 мегабайта. Да, не 100, а именно 4ре. Открываем в режиме просмотра и видим в нём нули. По факту его можно растянуть как гандон до 100 мегабайт. Размер будет увеличиваться, по мере заполнения этого файла данными, но не сможет превысить 100 мегабайт. Как альтернатива, ты можешь создать такой файл так:
truncate -s100M ./bashdays
Окей, файл есть и что дальше? А дальше этот файл нужно чем-то заполнить. Дырявые файлы обычно применяются для: - экономии места на диске - виртуализации - резервных копий - баз данных - файловых систем Очевидно это связанно с оптимизацией, ну и чтобы твой любимый жесткий диск не насиловать физическими записанными нулями. Из всего перечисленного, я использую такие разрежённые файлы как файловую систему для экспериментов. Создаю файл, а затем просто монтирую ее как файловую систему, провожу опыты, издеваюсь, растягиваю, а затем удаляю. Чтобы примонтировать такой файл как ФС, делаешь так:
mkfs.ext4 ./bashdays
mount ./bashdays /mnt
Первая накатит туда ext4, а вторая смонтирует в /mnt. А еще в такой дырявый файл можно установить операционную систему и даже загрузится в неё. Короче тут кейсов много всяких, все зависит от твоих задач и предпочтений. Но тема да, прикольная. Всякие virtualbox и т.п. это активно используют. Теперь про хостеров Хостеры и не только, часто используют данную фичу, чтобы раскатывать тебе VPS за несколько секунд, единицы ставят ОС с нуля и выдают «честные» гигабайты на жестком диске. Логично, что хостеры НЕ будут резервировать тебе 100 гигабайт места на диске. Возможно ты ими пользоваться вообще не будешь. Чо оно будет просто так болтаться? А денежку конечно же будут брать именно за 100 гигабайт. По факту ты платишь за дырявый файл, который возможно никогда и не заполнится до конца. Например, если в яндекс облаке выключить все виртуалки, денежка все равно будет капать за дисковое пространство. Улавливаешь? Как это работает: есть эталонные образы дырявого файла, разного размера. Ты выбираешь у хостера тариф например 2/2/30, затем берется заранее подготовленный дырявый файл с нужным размером диска и отдается тебе. Ты видишь (через df -h) что на винте 30 гигабайт, радуешься, но на самом деле это место еще никак не распределено. Используется только 4-5 гигабайта. По мере заполнения данными, заполняется и твой дырявый файл, который тебе продали за 10$ в месяц. Получается так, что в большинстве случаев у тебя в запасе всегда болтается процентов 20 от объема диска, которые ты не используешь, но исправно оплачиваешь. Такая вот замечательная бизнес модель, такие вот замечательные разрежённые файлы. Казино всегда в плюсе и ставит на /dev/zero. Делайте ваши ставки, дамы и господа! tags: #linux — 💩 @bashdays

Ждём вас 10 февраля на One Day Offer для инженеров Linux 💻 Всего за один день вы можете узнать больше о работе команды SberO
Ждём вас 10 февраля на One Day Offer для инженеров Linux 💻 Всего за один день вы можете узнать больше о работе команды SberOS и даже получить оффер! SberOS — собственная разработка Сбера — операционная система для рабочих мест на базе репозитория Debian. В ней используются самые свежие пакеты из Debian и последнее стабильное ядро. Операционная система гибкая и не зависит от вендоров. В работе мы используем: coreutils, systemd, buildroot, bash скрипты, git, jira и confluence. Регистрируйтесь на One Day Offer, проходите все этапы отбора, и вместе с командой вы будете: • создавать и собирать Debian-пакеты (source-deb) • писать bash-скрипты • собирать образы ОС в контейнерах Переходите по ссылке и станьте частью масштабного IT-сообщества Сбера! 👌

Всем добрый. Сегодня замусолим про zero bytes. Скорее всего тут единицы про это знают и слышали, значит самое время. Будет интересно и познавательно, рекомендую почитать. Термин Zero bytes / Magic zero bytes / Нулевые байты в Linux обычно относят к специальному значению байт 0x00, которое может использоваться для различных целей в контексте файловой системы и прочего. Так, стоп, ничо не понятно и даже не интересно. Давай сразу на котиках, погнали в нашу лабораторию. Запускаем:
read < /dev/zero
Этой командой я читаю нулевые байты с помощью read. По дефолту read читает стандартный ввод. Передаем на стандартный ввод магические нули из устройства /dev/zero и генерим нулевые байты. Прекратить это безобразие можно комбинацией: CTRL+C Вообще /dev/zero это фиктивный файл, который используется для создания файлов, заполненных нулями. А зачем он нужен? Ну например, чтобы отформатировать диск и забить его нулями, чтобы потом никто не смог восстановить данные которые ты удалил. Ну и для экспериментов всяких. Так, теперь по нашей команде. Запустили, ничего не происходит. Но на самом деле происходит следующее: Оболочка с помощью системного вызова read читает в свой буфер нулевые байты из /dev/zero. Затем буфер обрабатывается по одному символу, а затем символы помещаются в массив. Содержимое этого массива будет присвоено переменной заданной при запуске read. По умолчанию эта переменная называется REPLY. То есть если в read не передать название переменной, то все что ты введешь в нее, очутится в переменной REPLY.
read
echo "Ты ввел: $REPLY"
Вернемся к нашей бесконечной команде, которую запустили в начале поста. Команда так и будет выполняться, так как хочет встретить разделитель строк NL-ASCII или New Line ASCII. Новая строка или «\n». А новой строки, то нет. Одни нулевые байты, а эти байты пропускаются. Ну и так, как оболочка не может найти конец строки, получается бесконечный цикл. Есть такая штука, называется C-string C-string - последовательность символов в языке Cи, завершающаяся нулевым символом `\0`. В языке Cи строки представлены массивами символов, где последний символ должен быть нулевым символом, чтобы указать конец строки. Ну дак вот, для Си нулевой байт это конец строки. Например, функция печати строки выведет символы с начала массива до нулевого байта. Нулевой байт является неким стопером. Если вставить нулевой байт в середину строки, то все что после нулевого байта никогда не выведется на экран. Ща покажу как это работает
cd /tmp
cp $(which true) .
Копируем утилиту true в папку /tmp, будем ее патчить нулевыми байтами. Смотрим что она нам выводит:
./true --version
Выводит дофига всего, меня интересует строка Jim Meyering. Теперь нужно узнать смещение этой строки в бинарном файле.
strings -dtx -n3 true | grep 'Jim Meyering'
Команда strings используется для извлечения читаемых строк из бинарных файлов.
d = не дублируем повторяющиеся строки t = разделитель по умолчанию x = выводим смещение строки n = минимальная длина строки Так, я получил смещение 4176
4176 Jim Meyering
Теперь патчим бинарник true:
dd if=/dev/zero of=./true seek=$((0x**4176**+3)) conv=notrunc count=1 bs=1
Тут я заменяю символ пробела на нулевой байт. Seek в данном контексте количество блоков, которое нужно пропустить перед началом записи. Берем смещение 4176 и добавляем к нему еще 3 (Jim), после него начинаем запись. Команда dd скопирует один байт из /dev/zero и запишет его в файл по смещению 4176+3, не обрезая файл. Теперь снова запускаем:
./true --version
И видим, что часть строки обрезалась нулевым байтом, на экран вывелось:
Written by Jim.
А в оригинале выводилось:
Written by Jim Meyering.
Вот такие вот магические нули и байты. Я хз зачем тебе это, но момент с патчингом и работай с strings можешь взять на вооружение, штука интересная, возможно где-нибудь применишь. Всем еще раз привет, если есть мысли, пишите в комментарии. Пост получился упоротый, но может быть ты его давно ждал. Увидимся! tags: #linux #bash — 💩 @bashdays

Пост для всех, кто хочет совершить профессиональный рывок и получить актуальные уникальные знания от экспертов в разработке highload-проектов 👇 🔑Стремитесь расширить свои навыки программирования и проектирования? Обратите внимание на онлайн-буткэмп «Производительность и масштабируемость», который позволит вам погрузиться в мир highload за максимально короткий срок, даже не обладая опытом работы в хайлоад-проектах. 🔑 Интересно, что под капотом любой инфраструктуры? Приглашаем на курс «Управление собственным Linux-сервером», где вы научитесь профессиональному настройке, мониторингу и управлению Linux-сервером. Вас ждут «живые» онлайн-сессии (лекции, брейнштормы и презентации домашних проектов) + практика на собственной инфраструктуры с первого дня. Автор курса – Алексей Рыбак (@rybakalexey), ex-CTO Badoo и Vezet, член программного комитета Highload с многолетним опытом разработки программного обеспечения и управления технологическими организациями. Ждём вас! Реклама. Рыбак А.А. ИНН: 771407709607, erid: 2Vtzqvk99GB

В гугол картинках было найдено такое изображение 👆 на которой запечатлена занимательная закономерность. Если сложить все эти числа, то получится обычное число 42. Ну число и число…
echo $((7 + 14 + 21))
Ну дак вот, со времен появления проекта GNU (GNU's Not Unix) это число имело для них какой-то потаённый смысл. К примеру, если в редакторе vi/vim ввести:
:help 42
То на мы увидим нечто странное:
Вelection, the selection will be used unmodified. When there is a selection but you click outside of it, the selection is removed. There is a separate popup menu for each mode. Thus there are never grey items like in the normal menus. What is the meaning of life, the universe and everything? 42 Douglas Adams, the only person who knew what this question really was about is now dead, unfortunately. So now you might wonder what the meaning of death is... Next chapter: usr_43.txt Using filetypes Copyright: see manual-copyright vim:tw=78:ts=8:noet:ft=help:norl:
Но это всего лишь цитата из книги английского писателя Дугласа Адамса «Автостопом по галактике». Где супер компьютер Deep Thought дал ответ на главный вопрос жизни, вселенной и всего остального. И этот ответ был 42. В документации к редактору emacs также встречается это число, вот пару примеров:
This situation is best understood in the context of converting text properties during `write-region`. For example, the character at position 42 in a buffer is ‘X’ with a text property `foo`. If the conversion for `foo` is done by inserting into the buffer, say, ‘FOO:’, then that changes the character at position 42 from ‘X’ to ‘F’. The next conversion will start with the wrong data straight away.
`ssh` can also take extra parameters as port numbers. For example, a host on port 42 is specified as host#42 (the real host name, a hash sign, then a port number). It is the same as passing ‘-p 42’ to the `ssh` command.
Кроличья нора? Не думаю, книга «Автостопом по галактике» вышла в 1979 году, а ГНУтые появились в 1983 году. Все логично, число 42 стало символом для сообщества фанатов научной фантастики и часто упоминается в шутках и широко используется в поп-культуре. Существует теория заговора, называемая «42-ой теорией заговора», которая исходит из идеи, что число 42 имеет глубокий смысл или тайное значение, скрытое правительствами или другими могущественными организациями. Хотя такие теории заговора могут быть увлекательными, важно отметить, что число 42 не обладает никаким таинственным или сверхъестественным значением в реальном мире. Оно просто является элементом фольклора, шуток и культурных отсылок, и не имеет каких-либо серьезных конспирологических подоплек. Так что, так… дело закрыто... А ты читал/смотрел «Автостопом по галактике»? tags: #linux — 💩 @bashdays

photo content

👉 С чего начать обучение на сетевого инженера? С бесплатного практического урока «HSRP. Избыточность шлюза по умолчанию» от
👉 С чего начать обучение на сетевого инженера? С бесплатного практического урока «HSRP. Избыточность шлюза по умолчанию» от OTUS. ⏰ Встречаемся 29 января в 20:00 мск в рамках курса «Специализация Network Engineer». Доступна рассрочка на обучение! 💪 На вебинаре вы вместе с опытным экспертом: 1. Разберетесь, зачем нужны протоколы резервирования первого перехода и какие они бывают. 2. Рассмотрите один из них – HSRP. 3. Реализуете протокол HSRP на практике. 👉 Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://otus.pw/L3mI/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Привет и с пятницей господа и дамы! Отсматривал сегодня очередные домашние Bash задания своих студентов ну и собрал для вас самые распространенные велосипеды, которые в 99% повторяются. Оно конечно работает правильно. Но бывалый глаз сразу ощутит жопный дискомфорт глядя на такие конструкции. Кстати я всегда придерживаюсь правила — одну задачу можно решить разными способами. Работает, да и пёс с ним. Но учить такому других, увы непозволительно, пусть лучше сразу правильно делают. Нормально делай, нормально будет. Поехали!
cat bashdays.txt | cut -f 2 -d ';'
В текстовом файле bashdays.txt у меня забита строка: hello;world. Далее команда cat читает этот файл и перенаправляет данные на утилиту cut с помощью pipe «|». А cut уже режет строку по символу «;» и отдает мне второй элемент. То есть на выходе я получу: «world». Но. Утилита cut сама умеет читать файлы. Проще говоря так:
cut -f 2 -d ';' bashdays.txt
Сюда можно приплести и grep, с которым обычно делают так:
cat bashdays.txt | grep "world"
Это прям любимый паттерн всех, забит в днк, даже я этим порой грешу. Это как на велосипеде, один раз научился, больше не разучишься. А по хорошему надо делать так:
grep "world" bashdays.txt
Ну и к примеру еще такое встречается часто:
cat bashdays.txt | tr 'a-z' 'A-Z'
Суть одна, cat передает данные в tr, а дальше они конвертятся в верхний регистр и выводятся на экран. По хорошему это было бы так:
tr 'a-z' 'A-Z' < bashdays.txt
Но опять же для кого по-хорошему? Мне привычнее вариант с cat, хз, переучиваться я уж точно не буду. А еще из любимого, это циклы, ща покажу:
for s in $(ls)  
do  
    echo "$s"  
done
Это цикл, который перебирает файлы. Тут вообще зачем-то используется вызов внешней утилиты ls, хотя она тут вообще не упёрлась. Да и если такое использовать в скриптах, вылезут баги. Например, создай такой файл:
touch "*"
И заново запусти этот цикл. ООйой… заметил прикол? Вывод продублировал все имена файлов. Вот тебе и баг, а потом сиди полдня, думай, что же оно не работает. Этот костыль можно и перекостылисть, указав утилите ls параметр -Q. Тогда утилита ls тепло обнимет кавычками все имена файлов. Но это лишние кавычки, потом их чо? Снова обрезать? Правильнее было бы так:
for s in ./*; do echo "$s"; done
Не вызывается никакая внешняя утилита, да и безопаснее в разы, в плане наличия багов если у файла будет какое-то корявое имя. Перлов конечно много встречается, но это прям основные. Если что-то еще экстренно вспомню, закину в комментарии. Ну либо ты закидывай, мы всегда рады твоей активности! Обещал на выходные тебя не беспокоить, но видимо не получится. Так, что увидимся совсем скоро. Хороших тебе предстоящих выходных и береги себя! tags: #bash #кодревью — 💩 @bashdays

One Day Offer для DevOps ⚡️ Всего за один день вы сможете пройти все этапы отбора, познакомиться с будущей командой и получит
One Day Offer для DevOps ⚡️ Всего за один день вы сможете пройти все этапы отбора, познакомиться с будущей командой и получить оффер. На какой проект мы приглашаем? Платформа ГосТех — экосистема для разработки всех государственных сервисов. Мы разрабатываем технологические и прикладные сервисы для минимизации трудозатрат при создании бизнес-решений. В работе мы используем DevOps-инструменты (Jenkins, Ansible, Terraform, Nexus, Gitlab и др.), облачные технологии, системы виртуализации, скриптовые языки (Bash, Python), Linux, k8s, брокеры сообщений, СУБД, системы журналирования, мониторинга и аудита. Какие задачи будут в вашем планере: ● внедрять компоненты платформы; ● решать инциденты; ● мониторить доступность, работоспособность и нагрузку на компоненты платформы; ● устанавливать и обновлять компоненты платформы; ● проводить работы по подготовке компонентов к аварийным ситуациям. Масштабные проекты и работа в крупнейшем IT-сообществе ждут вас. Регистрируйтесь на One Day Offer 👈 Реклама. Рекламодатель ПАО Сбербанк

Сегодня вынужденно весь день работал инженером электроником. Три компьютера собрал, винду накатил, дату перенес, господи, как это выматывает. Я лучше ELK лишний раз настрою, чем всё это железо разгребать, стар я для этого дерьма стал. Ну и тут одно событие как-то вскользь прошло и связано оно с нативным файловым менеджером «FAR» который теперь можно без лишнего геморроя поставить на новые линуксы прям из официального репозитория. Да, когда я начинал свой путь в айти, FAR был как правая рука для окошечников. Все активно призывали пересесть на total commander, но сколько я не делал попыток, так и не смог себя пересилить. Ну люблю я все эти консольные штуки и минимализм. У меня знакомый большую часть жизни вообще в FAR фронтенд делал, плагинами обвешал и получилась неплохая IDE. А вот когда я начал знакомство с linux, то второе, что я запустил (после vi), это был как раз midnight commander. Ну и все. FAR и mc стали маст-хэв штуками. Вот даже сейчас сидя на винде у меня вкорячен FAR и я даже раза два в месяц им пользуюсь. Мой роадмеп был такой - Norton commander → Dos navigator → FAR → Midnight commander. Короче в новых убунтах ставится так:
sudo apt install far2l
Кому подойдет FAR? Все просто, тому, кому не нравится midnight commander. Я попробовал ради прикола воткнуть его на 23ю убунту (в wsl), взлетело, выглядит как FAR, даже alt+f1 работает для выбора дисков. Ну и по ssh запускается, в смысле подключаешься к серверу по ssh и запускаешь там FAR, работает. Не знаю, но я уже точно ни на что не променяю Midnight commander. Даже в винде его использую. Мы связаны одной цепью. А какой у тебя был путь с файловыми менеджерами? Чем нынче пользуешь? tags: #рабочиебудни #utils #linux — 💩 @bashdays

Старт бонусного потока "Kubernetes для разработчиков» Последние дни, чтобы успеть зайти в 7 поток курса. Прием студентов до 2
Старт бонусного потока "Kubernetes для разработчиков» Последние дни, чтобы успеть зайти в 7 поток курса. Прием студентов до 28 января. ➡️ Программа курса по модулям + промокод на скидку 17% ➡️ Демо-доступ к обучению на сутки На 7 поток нашего курса мы подготовили для вас бонусную тему "Как связаны 12-factor app и Kubernetes": 📎 Современные приложения строятся на принципах 12-факторного приложения. Сам Kubernetes тоже построен на этом принципе и для наиболее бесшовной и продуктивной работы приложения в кластере оно должно следовать этим же принципам. 📎 В рамках урока мы посмотрим как связаны 12-factor app и Kubernetes. Какие абстракции и их настройки помогают реализовывать принципы 12-factor. И как принципы 12-factor должны быть реализованы в реальной жизни для получения наибольшей пользы от Kubernetes. Программа обучения составлена с учетом потребностей разработчиков: нет лишней информации, которая не пригодилась бы в реальных проектах, добавлены важные нюансы разработки приложения под k8s. Подробную презентацию программы можете скачать по ссылке ⬅️ До встречи на курсе! Реклама. ООО «Слёрм» г. Лиски, ОГРН 1193668020545 Erid:2Vtzqwe6qcS

Я тут чет плотно подсел на игрушку Metroid, вроде обычная бродилка, но прям какая-то атмосферная. Прохожу сейчас по вечерам Zero Mission на GBA, ну как прохожу, брожу по карте и в дырки тыкаюсь. Хоть немного отвлекает от рутины. Давай по теме. Ща будет интересно. Смотри, когда ты выполняешь команду ls -l, оно выводит тебе на экран список каталогов и файлов. Все это цветное и красивое. Но если сделать так:
ls -l | cat
То по итогу получим просто список каталогов и файлов, без навешанных стилей и красок. Серое и унылое. Куда делись управляющие символы (последовательности), которые всё это раскрашивают? Да, есть такое. Когда применяешь перенаправленный вывод, управляющие символы куда-то исчезают. Давай разберемся что происходит. Все предельно просто. В утилитах содержится проверка своего стандартного вывода (stdout), которая не использует некоторые управляющие символы, если stdout не связан с терминалом. И это вполне логично. Если бы эти управляющие символы передавались следующей команде, в моем случае в cat. То cat бы получил на вход помимо данных, кучу мусора, типа такого:
\e[31mBashdays\e[0m
Теперь полезем в кишки, чтобы лучше понять происходящее. Запускаем strace:
strace -o output.txt -yf ls -l --color=auto | cat
Тут я указал утилите ls опцию color с аргументом auto. В большинстве случаев из коробки идет alias в котором уже прописана эта опция. Но так, как мы запускаем ls через strace, то существующие алиасы не будут использоваться. Вот лишь по этому и запихиваем все это в одну строку. -y = отслеживать открытие файлов. -f = отслеживать все процессы и форки. -o = пишем выхлоп strace в файл. Открываем файл output.txt и смотрим в него пустым взглядом. Но лучше грепаем вызов ioctl:
grep -i "ioctl" output.txt
Получаем несколько строк, в которых видим ошибку:
-1 ENOTTY (Inappropriate ioctl for device)
Это говорит о том, что процесс попытался выполнить операцию ввода-вывода (I/O), которая не поддерживается устройством. Канал просто не поддерживает эту возможность. Ну и напоследок сделаем инъекцию. В этом посте можешь еще один пример с инъекцией глянуть. Запускаем:
strace -o /dev/null -fe inject=ioctl:retval=0 ls -l --color=auto | cat -v
Суть такая, если возникает ошибка, то ничего не делаем, а продолжаем работу. Эмулируем ситуацию, когда ioctl вернул статус успеха, а не -1 ENOTTY. Опция retval=значение, это своего рода фильтр, в моем контексте он будет трассировать только системные вызовы ioctl у которых статус = не успех. Запустили. Команда отработала, на экране видим список каталогов и файлов с управляющими символами (последовательностями).
drwxr-xr-x ^[[0m^[[01;34m1^[[0m
-rwxr-xr-x ^[[01;32mbash^[[0m
drwxr-xr-x ^[[01;34mbin^[[0m
drwxr-xr-x ^[[01;34mnginx^[[0m
Что и следовало доказать. Ну а если просто хочется протестировать управляющие символы без всяких strace, можно воспользоваться аргументом always и ключом -v для cat.
ls --color=always | cat -v
-v, --show-nonprinting Вот так вот и живем. Теперь и ты это знаешь. На выходные обещаю уйти в режим тишины, чтобы вам не надоедать своими сумасшедшими исследованиями. Хорошего всем дня, увидимся! tags: #linux #debug #bash — 💩 @bashdays

В образовательном проекте avito.code вышли ролики по Kubernetes. В первом видео — база по деплою, во втором — более сложные к
В образовательном проекте avito.code вышли ролики по Kubernetes. В первом видео — база по деплою, во втором — более сложные команды с kubectl и гайд по работе с интерфейсом k9s. Смотрите, чтобы научиться эффективно управлять приложением, быстро проверять и управлять его ресурсами.

Ладно, хорош про винду, ловите еще чтива. Выше в посте когда ставил docker, вылез алерт «WSL DETECTED: We recommend using Docker Desktop for Windows.» Меня заинтересовал таймер обратного отсчета, который выводился на экране, мол через 20 секунд всё будет ок. Цифры менялись затирая предыдущие, но с нюансом, оставался ведущий ноль. Ну и чот захотелось на Bash’е такое запилить, ну и запилил:
#!/bin/bash

msg="deadline in: "
row=2
col=2

clear
tput cup $row $col
echo -n "$msg"
tput civis

l=${#msg}
l=$(( l + col ))

for i in {10..01}
do
    tput cup $row $l
    echo -n "$i"
    sleep 1
done

tput cnorm
Запускаем, еее! Пошел отсчет от 10 до 01 с ведущим нулем. Прекрасно! Из непонятного, рассказываю: 1. tput cup $row $col = ставим курсор в нужную позицию 2. tput civis - скрываем курсор 3. l=${#msg} - вычисляем длину сроки msg 4. l=$(( l + col )) - позиция вывода таймера 5. tput cup $row $l - кидаем курсор в позицию таймера 6. tput cnorm - включаем курсор обратно Вариант без ведущего нуля:
#!/bin/bash

seconds=10

for ((i=seconds; i>=1; i--))
do
    echo -ne "deadline in: $i \033[0K\r"
    sleep 1
done

echo -e "\nFuck up!"
Но этот вариант мне не нравится, нет в нем искры, если жать Enter, то таймер перескакивает на новую строку, ну и ведущего нуля нет, фу. Вот такая игрушка у меня получилась. Возможно где-нибудь и воткну потом эту поделку, попугать коллег на продакшене. Пусть не расслабляются, запуская бездумно Bash скрипты. Надо еще клавиатуру блокировать. Чем бы дитя не тешилось. Ладно, кидай в комментарии свои варианты, заценим! tags: #bash — 💩 @bashdays

Bash Days | Linux | DevOps - Telegram kanali @bashdays statistikasi va tahlili