ch
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 806 名订阅者,在 技术与应用 类别中位列第 5 710,并在 俄罗斯 地区排名第 28 118

📊 受众指标与增长动态

невідомо 创建以来,项目保持高速增长,吸引了 23 806 名订阅者。

根据 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 806
订阅者
-1024 小时
-337
-19530
帖子存档
SpaceWeb стал полноценным облачным провайдером Петербургская IT-компания SpaceWeb разворачивает облачную платформу. Теперь дл
SpaceWeb стал полноценным облачным провайдером Петербургская IT-компания SpaceWeb разворачивает облачную платформу. Теперь для вас и ваших проектов — облачные серверы, DBaaS, балансировщик нагрузки, мониторинг, объектное хранилище S3 и кластеры Kubernetes. Бонус — бесплатная защита от DDoS, два дата-центра уровня Tier III в Питере и Москве и канал 300 Мбит/сек. Подробности и цены — вот здесь.

Ремонтировал внешний диск, в моменте отвалился от малины и я получил RAW вместо ext3. Печалька. Бекапы естественно я никакие не делал, хотя 5 лет собирался этим заняться.
Как говорится - пока гром не грянет мужик не перекрестится.
Велосипед я изобретать не стал, а так же не стал брать сразу какие-то продвинутые инструменты для восстановления. Решил воспользоваться нативным fsck, чем чёрт не шутит. Пошел погуглил синтаксис, не каждый же день этой хернёй пользуешься. А там блядь:
fsck -y /dev/sdb
fsck.ext3 -y /dev/sdb
Хмм... помимо fsck.ext3 есть еще и fsck.ext4 и еще несколько штук. Ёбтвою мать. Отправляемся ресерчить, чем эта поебота отличается от обычного fsck. TL:DR: НИЧЕМ! Ща, расскажу. Короче в чистом виде fsck это обёртка, универсальная оболочка, которая автоматом определяет тип файловой системы и затем уже запускает условно fsck.ext3, ну или какая там у тебя на дисках. Автоопределение это заебись, но порой fsck не хочет ничего проверять. Поэтому самостоятельно определяем тип своей файловой системы и в зависимости от результата запускаем fsck.ext3 и т.п. Чтобы узнать, что запустит fsck делаем так:
fsck -N /dev/sda1
В результате получишь:
[/usr/sbin/fsck.ext4 (1) -- fsck.ext4 /dev/sda1
А еще у fsck нет ключа - [-E extended-options]. В нее можно передать: -E discard - Включает TRIM (удаление неиспользуемых блоков на SSD) во время проверки. Аналог fstrim, но в процессе fsck. -E journal_only - Проверяет только журнал ext3/ext4, не сканируя всю ФС. Быстро, но полезно только в определённых сценариях. -E frag - Проводит анализ фрагментации. Полезно, если интересует дефрагментация ext4. -E bmap2extent - Преобразует старые "indirect" блоки в extent-формат (для старых ext4). -E test_fs - Включает особое поведение для тестирования (не используется в продакшене). Пример:
fsck.ext4 -f -E discard /dev/sda1
Принудительная проверка + удаление "мусорных" блоков на SSD. # Как fsck определяет тип файловой системы Порядок определения: 1. Смотрит в /etc/fstab и выгребает третий столбец. 2. Если в fstab хуй, то оно запускает blkid /dev/sda1 3. Если определить не получилось, пиздует в /etc/filesystems, но в большинстве случаев такого файла в современных дистрибутивах нет. Этот файл опционален. Вот и вся наука. В кишки лезть уже не будет, этой информации вполне достаточно. Ну и чтобы на каждую ошибку не вводить y, пропиши автофикс:
fsck -y /dev/sda1
Оно там само пошуршит, все исправит и будет тебе счастье. Изучай. 🛠 #linux @bashdays @linuxfactory @blog

Знаете ли вы, что логические ошибки в веб-приложениях могут привести к утечкам данных и финансовым потерям? 💻На открытом уро
Знаете ли вы, что логические ошибки в веб-приложениях могут привести к утечкам данных и финансовым потерям? 💻На открытом уроке 14 августа в 20:00 МСК мы разберем, чем логические уязвимости отличаются от традиционных (SQLi, XSS) и почему они не видны обычным сканерам. Мы изучим реальные кейсы, где ошибки в бизнес-логике приводили к серьёзным последствиям, и расскажем о методах их выявления. ❗️Урок будет полезен разработчикам, security-аналитикам и pentest-инженерам, которые хотят научиться эффективно тестировать и защищать веб-приложения. 👉Посетите вебинар и получите скидку на полный курс «Пентест. Инструменты и методы проникновения в действии»: https://vk.cc/cOfGEJ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Хочешь устроить себе челлендж на знание командной строки? Да пожалуйста, лови тренажер по Linux-терминалу. Правда он на англи
Хочешь устроить себе челлендж на знание командной строки? Да пожалуйста, лови тренажер по Linux-терминалу. Правда он на английском, но мы с тобой тоже не пальцем деланные.
Тренажер содержит 77 вопросов. Вполне достаточно чтобы заебаться.
Я даж успешно прошел первую задачку, правда по-олдскульному и затронул все бед-практики, которые только существуют. Установка простая:
cd /tmp
python3 -m venv textual_apps
cd textual_apps
source bin/activate
pip install cliexercises
cliexercises
Здесь я использовал tmp папку и venv, чтобы систему всяким гавно не засорять, а чисто поиграться. Что прикольно, если совсем тупой, то можно получить подсказку, будет показано несколько решений. Подсказка открывается по CTRL+S. Сможешь выбить все 77 вопросов без подсказок? Исходники этого тренажера лежат тут, а видосик с работой можешь посмотреть тут. 🛠 #linux #bash @bashdays @linuxfactory @blog

Как уязвимости в COM-объектах могут быть использованы в атаке на инфраструктуру? На открытом уроке «COM-объекты в контексте б
Как уязвимости в COM-объектах могут быть использованы в атаке на инфраструктуру? На открытом уроке «COM-объекты в контексте безопасности Windows» мы разберём архитектуру COM-объектов, их роль в системе Windows и как они могут стать точкой входа для вредоносных программ. Углубимся в реальные примеры атак и изучим, как можно защититься от подобных угроз. Поняв механизмы работы COM-объектов, вы сможете повысить уровень своей защиты и эффективно расследовать инциденты в Windows-средах. Встречаемся 7 августа в 20:00 МСК! Присоединяйтесь и получите скидку на курс «Пентест. Инструменты и методы проникновения в действии»: https://vk.cc/cObXA2 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

GIT для девопс-инженера Многих git пугает разнообразием команд, но 99% его функционала тебе никогда не пригодится. Это как MS Word или Excel, где ты используешь ну от силы 0000.1% всего задуманного в нём. Да, разработчикам посложнее, надо разруливать мердж-конфликты, делать какие-то ебаные черепики и ребейзы. Но для программистов на yml, достаточно основной базы.
Стянул-закомитил-запушил. Не пушится? Похуй — push force!
Теорию по git опустим, ты и сам знаешь для чего оно всё нужно — для удобства.
Я к примеру в гите храню базу obsidian и совсем недавно это спасло все мои заметки. Я установил плагин для синка с seafile и оно мне нахуй всё стерло. У меня сука глаз выпал, овер 3к заметок проебало за секунду. Но в гите у меня все это осталось, склонировал, восстановил. Бекап который однажды пригодился. Удобно.
К сути. Как я сказал выше, тебе достаточно базы:
git pull
git commit -m "ебал я вашу буравую, несите книжку трудовую"
git push
К этому можно еще добавить clone, checkout и init, но этим ты будешь пользоваться очень редко. Как все работает в реальности У тебя есть корпоративная учетка в гитлабе/гитхабе, там уже сто пудово созданы репы. Копируешь мышкой строку для клона, вставляешь себе в терминале.
git clone git@git.bashdays.ru:shubin/obsidian.git
ВСЁ! Репа у тебя на руках. Создаешь новую ветку от мастера:
git checkout -b 010825
И уже в нее говнокодишь. Когда говна достаточно, комитишь, делаешь пулл-реквест (мердж-реквест). После того как тимлид заапрувит твой реквест, правки вольются в мастер. А ветку 010825 можно закрывать. Пункт с реквестами опять-же маловероятен, если компания не большая и ты там царь и бог девопса. Сразу хуяришь в мастер и никого не слушаешь. Отпадает необходимость создавать ветки и т.п. Ведь ты же всегда все делаешь идеально. Я порой прям в гитлабе правлю через внутренний редактор, ебал я локально себе что-то клонировать. Быстрее через морду зайти и пайп подправить. На этом можно и заканчивать, все элементарно. Не бойся гита, это хуйня не страшная. Если что-то пошло по пизде, удали, склонируй мастер и начни с чистого листа. А как настроить ключи и т.п. я писал много постов, поищи по тегу #linuxfactory А тут разбирали почему порой главная ветка называется main а не master. 🛠 #git #devops @bashdays @linuxfactory @blog

❓ Когда инфраструктура IT-отдела опирается на Windows, вы чувствуете себя ограниченным в возможностях? Linux уже давно стал с
❓ Когда инфраструктура IT-отдела опирается на Windows, вы чувствуете себя ограниченным в возможностях? Linux уже давно стал стандартом для серверных решений, контейнеров и облаков. 💪 Курс «Administrator Linux. Basic» погрузит вас в мир администрирования «с нуля»: от работы в терминале и Bash-скриптов до настройки веб- и MySQL-серверов, Docker-контейнеров, мониторинга через Grafana, Prometheus и ELK. На живых вебинарах вы посмотрите реальные сценарии — от установки Ubuntu в VirtualBox до развертывания микросервисов. 🚀 После курса вы сможете: – уверенно работать в Bash и управлять пользователями, правами и пакетами; – настраивать и оптимизировать Nginx/Apache, MySQL, создавать Docker-контейнеры и CI/CD-потоки через Git; – подключать системы мониторинга: Grafana, Prometheus, ELK и настраивать тревоги; – анализировать сетевой трафик и фильтровать пакеты через iptables. 👉 Пройдите бесплатное вступительное тестирование и получите персональную скидку на обучение: https://vk.cc/cOaqw6 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Вайб-кодинг Долгое время для приема обратной связи я пользовался внешним сервисом (бот в телеге), он удобно раскладывал новые входящие по топикам и давал всю необходимую инфу по айдишникам и т.п. Но сервис приказал долго жить, на рынке что-то вменяемого я не нашел, какие-то ебаные огрызки. Пару дней пытался реализовать это на конструкторе но получил такой же ебаный огрызок.
Программировать естественно я ничего не хотел, я уже стар для этого дерьма.
И тут я вспомнил про «Вайб-кодинг», сука! ЧатГПТ аналогично приказал долго жить (лень оплачивать), поэтому выбор пал на «дикпик». Накидал промтов с хотелками и идеальной картиной мира. Прям прочувствовал себя заказчиком продукта. Ну а хули. Ну и через несколько минут получил готовый кусок говна. Но нет! Пробежавшись по коду, хм, вполне вменяемо, даж базу данных прикрутил, систему банов, антифлуд и т.п. Реализовало оно мне на python + aiogram. И это не спиздеть заняло 2-3 минуты с моими дополнительными промтами с правками. Работает? Охуенно работает! И даже с первого раза, «дикпик» прям удивил. Запросил у него еще Dockerfile и пайплайн для gitea, запушил, раздеплоил. Потыкал, да, всплыли некоторые баги, но они не критичные, они больше от моего кривого ТЗ. Потом пофикшу, хотя вряд ли, ебал я. Короче без лишнего гемора получил личного бота для приема обратной связи. Он так же раскидывает входящие по топикам + делает еще кучу всего. Быстро и бесплатно. Ни в коем образе не призываю так делать, но если пиздец лень и нужно срочно, почему бы и нет?
За такого бота с меня вчера запросили 150к и месяц на реализацию. Хуйня какая-то. Потом бы я еще месяц бегал чтобы баги поправили.
Хочешь сделать хорошо, сделай это своими руками, ну и роботов припрягай по необходимости. Только перепроверяй за ними, а то не ровен час, выебут в жопы. Подтверждаю, «Вайб-кодинг» работает и весьма неплохо, но в рамках разумного! 🛠 #develop @bashdays @linuxfactory @blog

Топ-5 уязвимостей в Kubernetes И как их устранить 🤔 Облачный провайдер Cloud․ru приглашает на вебинар, где разберет, как обе
Топ-5 уязвимостей в Kubernetes И как их устранить 🤔 Облачный провайдер Cloud․ru приглашает на вебинар, где разберет, как обезопасить кластерную жизнь. Вера Орлова, эксперт по безопасности контейнеров, расскажет про:
➡️пять самых уязвимых компонентов Kubernetes; ➡️как на практике устроена защита контейнерных сред; ➡️принципы, которые помогут поддерживать безопасность контейнеров.
Будет полезно всем, кто отвечает за стабильность и безопасность: DevOps-инженерам, техлидам, специалистам по кибербезопасности и тем, кто хочет больше знать о Kubernetes. Вебинар пройдет 7 августа в 11:00. Зарегистрироваться🖱 Информация о рекламодателе

Модель OSI Статья для большинства покажется очень легкой и что это все знают, но я все-таки решил ее написать. 🔤🔤🔥🔤🔤🔤🔤
Модель OSI Статья для большинства покажется очень легкой и что это все знают, но я все-таки решил ее написать. 🔤🔤🔥🔤🔤🔤🔤 Модель OSI выглядит как показано на фото к посту. Описывать то делают на каждом уровне я не хочу, так как этого описания в интернете и так навалом. Поговорим на самом деле о другом: А зачем это учат если это не видно? Вот тут мы подходим к самому важному вопросу, зачем все это сделано. А сделано это для того чтоы четко определять стандарт работы. То есть каждый уровень может строится на разных технологиях, НО эти уровни не должны затрагивать другие. То есть когда ты что-то хочешь сделать ты определяешь на каком уровне это работает и пишешь протокол взаимодействия только для этого уровня. Если ты разрабатываешь новый протокол физический — то что после него тебя не волнует, твоя задача передать биты, а что там дальше и как будет собираться — это не твоя проблема. Поэтому все сетевое взаимодействие фактически разбирается на кубики и ты оперируешь этими кубиками. При этом кубики фактически являются инкапсулироваными (подал на вход подал на выход — получил на выходе информацию, что внутри тебя в чаще всего не волнует). Все проблемы благодаря модели OSI можно четко отслеживать по уровням снизу вверх. Первое — горит ли лампочка на сетевушке, arpping — видимость мак адресов вокруг, ping любого адреса в 127 сетке — проверка стека, просмотр таблицы маршрутизации, пинг ближайшего шлюза, трасерт нужного адреса, проверка через dig или nslookup dns и потом проверка порта на нужном сервере. Причем если изначально что-то идет не так — на уровень выше уже не имеет смысла подниматься, пока не поймешь что за проблема на уровне пойманной ошибки. Теперь мои небольшие размышления по поводу модели OSI и как это иногда используется. Это мои догадки, почему так сделано переписку разработчиков я не нашел. Изначально когда проектировался графический интерфейс в nix системах не было понятно как его можно будет обрабатывать, и поэтому его решили сделать через сетевой стек как приложение на компьютере. Именно поэтому если запретить хождение через обратную петлю на компьютере графическая система упадет. То есть так как общих драйверов не было для обращения к видеокарте был создан на прикладном уровне прокол прорисовки и через обратную петлю на сервер шлется запрос Xserver его обрабатывает и отрисовывает. То есть этим решили вопрос совместимости по драйверам и сделали возможность модульной архитектуры. Работать с разными видео-картами для отрисовки картинки. Я сильно подозреваю что и wayland работает по тому же принципу, но, честно говоря я пока еще его не смотрел. Из этого можно сделать вывод, если вы не совсем понимаете что будет «под ногами» то есть возможность разработать протокол для своего уровня модели OSI и написать программу, которая будет работать с устройством через сетевой стек. Именно поэтому надо понимать модель OSI и на каком уровне у тебя работает тот или иной протокол. 🛠 #networks @bashdays @linuxfactory @blog

Разверните проекты в гибком и надежном облаке Selectel Виртуальные серверы с гибкой настройкой конфигурации, облачные базы да
Разверните проекты в гибком и надежном облаке Selectel Виртуальные серверы с гибкой настройкой конфигурации, облачные базы данных, Managed Kubernetes и еще 50+ совместимых инфраструктурных сервисов — в одной панели. Облако Selectel: ☁️ Гибкое — его легко настроить под разные запросы по мощности и бюджету, можно быстро масштабировать, а прерываемые ВМ и заморозка позволят не платить за лишние ресурсы. ☁️ Производительное — серверы работают на базе современных процессоров, оснащены производительной оперативной памятью и быстрой сетью от 3 до 10 Гбит/с. ☁️ Отказоустойчивое — позволяет развернуть геораспределенную инфраструктуру на базе нескольких регионов. Бесплатно перенесите IT-инфраструктуру проекта в облако Selectel, а инженеры провайдера поддержат на всех этапах миграции: https://slc.tl/qz2a4 Реклама. АО «Селектел», ИНН 7810962785, ERID: 2VtzqwiY424

Я в телевизоре 👆😜

Repost from Selectel Newsfeed
Какое будущее ждет сисадминов в эпоху AI? Спойлер: великое 🎉 Всю неделю мы готовили тематический контент для профессионально
Какое будущее ждет сисадминов в эпоху AI? Спойлер: великое 🎉 Всю неделю мы готовили тематический контент для профессионального развития сисадминов. Пришло время заглянуть в будущее: что случится, если автоматизировать всю работу с помощью ИИ? Ведь он неплохо справляется с DevOps-задачами… Роман Шубин, CTO и автор канала Bash Days, рассказал, почему без инженеров никак. Читайте его мнение в Академии и ставьте реакции, если согласны! И напоследок поздравляем всех, кто поддерживает работу IT-инфраструктуры в организациях. Не только этот день ваш, но и любой другой, потому что без сисадминов — никуда ❤️

Сопроцессы. Практика. Часть Третья. 🔤🔤🔥🔤🔤🔤🔤 Это уже больше не сопроцессы, а про то, как принять почту в скрипте bash. Соединение с POP3 сервером есть. Аутентификация тоже. Осталось написать что-нибудь полезное.
# возвращает число писем в ящике
function POP3_STAT(){
  declare -a AREC
  declare REC
  SEND_CMD "STAT"
  read -ert 2 -u ${POP3_CONN[0]} REC
  read -ra AREC <<<${REC//$'\r'/}
  if [[ ${AREC[0]} == "+OK" ]];then
    echo ${AREC[1]} # число сообщений
    return 0
  else
    echo 0
    return 1
  fi
}
#Помечает к удалению указанное письмо
function POP3_DELE(){
  declare -i MSG_NUM=${1:-1} # по умолчанию первое
  declare -a AREC
  declare REC
  SEND_CMD "DELE $MSG_NUM" #удаляем указанное сообщение
  read -ert 2 -u ${POP3_CONN[0]} REC
  read -ra AREC <<<${REC//$'\r'/}
  if [[ ${AREC[0]} == "+OK" ]];then
    return 0
  else
    return 1
  fi
}
# читает письмо с заголовками
function POP3_RETR(){
  declare -i MSG_NUM=${1:-1} # по умолчанию первое
  declare -a AREC
  declare  REC
  SEND_CMD "RETR $MSG_NUM" #читаем указанное сообщение
  read -ert 2 -u ${POP3_CONN[0]} REC
  read -ra AREC <<<${REC//$'\r'/}
  if [[ ${AREC[0]} == "+OK" ]];then
    while read -r -t 2 -u ${POP3_CONN[0]} REC ; do
      REC=${REC//$'\r'/}
      echo "$REC"
      if [[ "$REC" == "." ]];then
        return 0 # msg end
      fi
    done
  else
    return 1
  fi
}
# читает указанное число строк письма
function POP3_TOP(){
  declare -i MSG_NUM=${1:-1} # по умолчанию первое
  declare -i STR_NUM=${2:-1} # по умолчанию одна строка
  declare -a AREC
  declare  REC
  #читаем указанное сообщение
  SEND_CMD "TOP $MSG_NUM $STR_NUM"
  read -ert 2 -u ${POP3_CONN[0]} REC
  read -ra AREC <<<${REC//$'\r'/}
  if [[ ${AREC[0]} == "+OK" ]];then
    while read -ert 2 -u ${POP3_CONN[0]} REC ; do
      REC=${REC//$'\r'/}
      echo "$REC"
      if [[ "$REC" == "." ]];then
        return 0
      fi
    done
  else
    return 1
  fi
}
Финальный код
#!/bin/bash

SERVER="server"
PORT=995
USER="user@server"
PASS="StrongPass"

coproc POP3_CONN { openssl s_client -connect "${SERVER}:${PORT}" -quiet 2>/dev/null;}

POP3_LOGIN && echo POP3_LOGIN OK
MSG_NUM=$(POP3_STAT)
#цикл перебора сообщений
while ((MSG_NUM));do
  POP3_TOP $MSG_NUM 1 # Заголовки + 1 строку сообщения
# POP3_RETR $MSG_NUM  # сообщения целиком
# POP3_DELE $MSG_NUM  # помечаем к удалению.
  ((--MSG_NUM))
done

POP3_QUIT
help coproc help read man openssl 🛠 #bash #linux @bashdays @linuxfactory @blog

⚙️GitlabCI + ArgoCD — сборка и доставка приложений, не покидая кластер В этом вебинаре мы покажем, как выстраивать современны
⚙️GitlabCI + ArgoCD — сборка и доставка приложений, не покидая кластер В этом вебинаре мы покажем, как выстраивать современный процесс CI/CD, полностью внутри Kubernetes-кластера — от сборки кода до доставки в продакшн, не выходя за его пределы. Используя связку GitlabCI и ArgoCD, вы научитесь создавать автономную и управляемую платформу, где всё — от пайплайнов до деплоя — происходит под полным контролем и в полной безопасности. На вебинаре вы узнаете: - Как развернуть Gitlab Runners и ArgoCD внутри кластера и настроить их взаимодействие. - Настройка пайплайнов в GitlabCI: сборка, тестирование, упаковка образов. - Как задействовать ArgoCD для GitOps-доставки: автообновления из Git-репозитория. - Как добиться полной автономии CI/CD без выхода за границы инфраструктуры. Вебинар проходит в рамках курса "Инфраструктурная платформа на основе Kubernetes" 👉 Регистрация и подробности о курсе "Инфраструктурная платформа на основе Kubernetes": https://vk.cc/cNVVlm Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Сопроцессы. Практика. Часть Вторая. 🔤🔤🔥🔤🔤🔤🔤 coproc хорошо подходит для общения в клиент-серверном режиме. Для примера попробуем подключиться к POP3 серверу с шифрованием ssl прямо из bash-скрипта. Сам ssl несколько сложноват для bash, поэтому в качестве посредника будем использовать openssl s_client. Протокол и команды PO3 лучше посмотреть на википедии. 1. Cоздим сопроцесс. Для этого запустим openssl в режиме s_client. При этом из дескриптора POP3_CONN[0] можно читать данные от сопроцесса. В дескриптор POP3_CONN[1] можно писать для сопроцесса. При записи используем перенаправление >&${POP3_CONN[1] . При чтении тоже можно использовать перенаправление, но поскольку у команды read есть ключ -u красивее воспользоваться им. 2. Аутентифицируемся 3. Закроем сессию и дескрипторы.
# Функция для отправки команд серверу
function SEND_CMD() {
  sleep 0.3
  echo "$@" >&${POP3_CONN[1]}
  sleep 0.3
}

# аутентификация. Обычный логин
function POP3_LOGIN() {
  declare REC
  declare -a AREC
  # проверка соединения
  read -ert 2 -u ${POP3_CONN[0]} REC
  read -ra AREC <<<${REC//$'\r'/}
  if [[ "${AREC[0]}" == "+OK" ]];then
    # Отправляем логин
    SEND_CMD "USER $USER"
    read -ert 2 -u ${POP3_CONN[0]} REC
    read -ra AREC <<<${REC//$'\r'/}
    if [[ "${AREC[0]}" == "+OK" ]];then
      # Отправляем пароль
      SEND_CMD "PASS $PASS"
      read -ert 2 -u "${POP3_CONN[0]}" REC
      read -ra AREC <<<${REC//$'\r'/}
      if [[ "${AREC[0]}" == "+OK" ]];then
        return 0 # аутентификация успешна
      else
        return 3 # не правильный пароль
      fi
    else
      return 2 #не правильный login
    fi
  else
    return 1 # ошибка соединения с сервером
  fi
}

#Выход и закрытие дескрипторов.
function POP3_QUIT(){
  SEND_CMD "QUIT"
  # Закрываем coproc
  exec ${POP3_CONN[0]}<&-
  exec ${POP3_CONN[1]}>&-
}
Задержки 0.3 секунды при отправке нужны для того, чтобы сервер успел сформировать ответ. Ошибки -ERR не обрабатывал. В случае чего команда read завершится по таймауту в 2 сек. (-t 2) ${REC//$'\r'/} конструкция удаляет cr, потому что POP3 сервер отвечает c lfcr.

#!/bin/bash

SERVER="server"
PORT=995
USER="user@server"
PASS="StrongPass"

# создаем сопроцесс и соединяемся с сервером pop3
coproc POP3_CONN { openssl s_client -connect "${SERVER}:${PORT}" -quiet 2>/dev/null;}
POP3_LOGIN
POP3_QUIT
help coproc help read man openssl вики POP3 🛠 #bash #linux @bashdays @linuxfactory @blog

👉 Хотите начать карьеру в одной из самых востребованных IT-специальностей — сетевой инженерии? Курс «Network Engineer. Basic
👉 Хотите начать карьеру в одной из самых востребованных IT-специальностей — сетевой инженерии? Курс «Network Engineer. Basic» от OTUS даст вам все практические навыки для уверенного старта. Вы научитесь работать с CLI CISCO IOS, настраивать сети VLAN и маршрутизацию, работать с IPv4/IPv6, обеспечивать безопасность и проектировать сети. После курса вы сможете претендовать на позицию Junior сетевого инженера в крупнейших технологических и финтех-компаниях. Программу составили опытные практики, а диплом OTUS ценится на рынке труда. 🎁 Пройдите короткое вступительное тестирование и получите запись вебинара "Что выбрать для маршрутизации VLAN: роутер на палочке или коммутатор третьего уровня?” 👉 Пройти тест: https://vk.cc/cNSGKx Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Сопроцессы. Теория. Часть первая. 🔤🔤🔥🔤🔤🔤🔤 Надеюсь все знают, что в bash можно запустить любую программу в фоновом режиме. Для этого после команды достаточно указать &. Например: sleep & В этом случае программа начинает жить своей жизнью а переменная $! получает PID последнего запущенного процесса, чтобы можно было отследить завершение фонового процесса, а при крайней необходимости сказать знаменитую фразу Тараса Бульбы. Для контроля и управления фоновыми заданиями служат команды jobs bg fg . Если будет интересно - напишите комменты - рассмотрю их подробнее. Сейчас не об этом. В bash, начиная с четвертой версии появились сопроцессы (coproc). Иногда их называют копроцессы, но мне слово не нравится. Чем то оно попахивает. С помощью этой команды можно запустить любой процесс в фоновом режиме, но в отличие от обычного фонового режима, процесс запущенный через coproc связывается через дескрипторы с основной оболочной и с ним можно взаимодействовать. Форма запуска:
coproc [NAME] command [redirections]
NAME - имя индексного массива, в котором содержатся дескрипторы command. Если NAME не задано, по-умолчанию используется COPROC . COPROC[0] связан с stdout command , COPROC[1] - с stdin. И с помощью этих дескрипторов мы сможем взаимодействовать с command, не смотря на то, что программа работает в фоновом режиме. Сразу хочу обратить внимание. Если задано NAME - вместо command необходимо использовать группировку, даже из одной команды:
coproc [NAME] { command [redirections];}
Иначе coproc поймет NAME - как команду, а command как ее параметры. И да, при группировке пробелы и точка с запятой очень важны. Добро пожаловать в bash. :-) Пока все не так просто, как хочется, но практика все расставит по местам, а заодно научимся принимать почту от POP3 сервера с ssl. 🛠 #bash @bashdays @linuxfactory @blog

🚀 Шерлок прокачивает управление ИБ-дефектами! 24 июля в 11:00 мск приглашаем на вебинар по новому релизу «Шерлока» — AppSec-
🚀 Шерлок прокачивает управление ИБ-дефектами! 24 июля в 11:00 мск приглашаем на вебинар по новому релизу «Шерлока» — AppSec-платформы, которая оптимизирует процессы безопасной разработки. На вебинаре расскажем: 🐾 О возможностях Шерлока для автоматизации 🐾 О новом функционале платформы 🐾 Проведем живое демо и ответим на все ваши вопросы 📌 Успейте зарегистрироваться! 👇 👉 РЕГИСТРАЦИЯ НА ВЕБИНАР Реклама. ООО «Аксель Про», ИНН: 9715441867, Erid: 2VtzqxUuwPE

Хули делать, пока я в пути к медведям и гнусу, гороскоп тебе ёпта составил на недельку, прислушайся, я старался, смотрел на звезды в поезде и считывал их код. ♈️ Овен Твой код будет работать… но только после пятого ребута. Энергия прет, как процессор без кулера. Береги нервы и жопу, не пуш в прод в эту пятницу. ♉️ Телец Не обновляй стабильную систему — всё сломается и накроется пиздой. И в жизни, и на сервере. Упорство — твоя сила: скрипт на баше доведёт твою поделку до состояния шедевра. ♊️ Близнецы Твоё многозадачное мышление работает как браузер с 32 вкладками. Всё открыто, но ничего не завершено. Сосредоточься на одном проекте — и багов станет меньше. Либо забей хуй, тогда багов совсем не будет. ♋️ Рак Ты чувствительный, как прод без бэкапа. Следи за данными, шифруй переписки и регулярно сохраняйся, ты уже на карандаше, что-то менять — поздно. ♌️ Лев Ты — Тимлид своей жизни. Код красиво не только работает, но и читается. Главное — не выгорай. Логи ошибок всё равно никому не интересны, всем похуй. Расслабься и чиль всю эту неделю. Только у тебя будет всё хорошо. Не выебут. ♍️ Дева А тебя выебут. Рефакторинг — твой стиль жизни. Эта неделя подходит для вылизывания кода, чужих яиц и документации. Остальные будут пиздеть, но через неделю скажут спасибо. ♎️ Весы Конфликты в Git? Хуй с ними! Рузрулишь как и всегда, свалив их на коллегу. Ты — мастер мерджа без слёз. Хорошая неделя для командной работы и пулл-реквестов без ревью-драмы. ♏️ Скорпион Секреты в .env — это про тебя. Мистика и безопасность идут рука об руку. На этой неделе можно раскрыть баг, который скрывался с 2016 года. Но в этом расследовании, ты выйдешь сам на себя. Так что подумай, баш ли это, либо всё-же фича. Не хочешь быть выебан — молчи! ♐️ Стрелец Твоё желание уехать в Digital Nomad — стабильно. Отличная неделя для изучения нового фреймворка, но не начинай десятый пет-проект. Старый тоже хочет внимания. Посвяти эту неделю себе, побухай, поспи, подумай где же твоя жизнь пошла по пизде. ♑️ Козерог План — цель — результат. Ты, как крон-задача, всё делаешь вовремя, но постоянно проёбываешься. Дай себе один выходной — даже CI/CD иногда падает и стоит на пол шестого. Выходной посреди недели маст-хев и бест-практика. ♒️ Водолей Твоя идея автоматизировать сон через API — звучит круто. Не тормози креатив, но держи бекап на случай факапа. Возможно, на этой неделе ты изобретешь что-то новое. Ну а если не изобретешь, то тебя тоже выебут. ♓️ Рыбы Рыб обычно не ебут, ебут пироги. Плыви по потоку коммитов. Главное — не задуши себя и своего вялого своим перфекционизмом. Сложные абстракции — твоё всё, но не забывай о простых радостях — hello world тоже прекрасен. 🛠 #гороскопыотромана @bashdays @linuxfactory @blog