Авторский канал от действующего девопса Самобытно про разработку, devops, linux, скрипты, тестирование, сисадминство, техдирство, пиэмство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue Курс: @tormozilla_bot РКН: https://bit.ly/knd2gov
Привет друзья, наш товарищ Sf1nk5
подготовил внушительную статью про CrowdSec. За что ему объявлена благодарность.
CrowdSec — это система защиты от кибератак, которая использует анализ поведения и коллективную защиту. Она похожа на Fail2Ban, но более мощная и современная.
Продолжаем погружаться в Бэд-Практики!
ㅤ
предыдущие посты о том, что это такое ищи по тегу #badpractices
cp
их может воспринимать как флаг. Ну дак вот.cp -- "$file" "$target"
Что означают 2 дефиса опять же смотри предыдущие посты по тэгу #badpractices
./
(означает текущую папку), то даже если файл называется -bashdays.txt
он будет передан в команду правильно.for i in ./*.txt; do
cp "$i" /tmp
done
cp
не затроит и выполнит задуманное../
перед именем файла при передачах в команду:for i in *.txt; do
cp "./$i" /tmp
done
./
или полный /home/user/...
). Это избавит тебя от большинства проблем с файлами которые начинаются с дефиса.Вот всё трём мы с тобой за бест-практики, но практически ничего не разбираем по бэд-практикам.
ㅤ
Давай это исправлять в контексте Bash скриптов.
Временами будет много, временами мало и банально, но постараюсь всё разжевать и сделать интересную выжимку из наблюдений.
Естественно будет серебряная пуля — как сделать правильно.
$file
, в которой как ни странно хранится имя файла. И есть $target
, в ней мы указываем путь куда скопировать файл. cp $file $target
file="You can suck my dick.avi"
cp You can suck my dick.avi /tmp
You
can
suck
my
dick.avi
$file
) будут символы *, ?, [ ]
, то это интерпретируется как шаблон для поиска файла.Так называемое — Pathname Expansion.
-
, к примеру твой файл называется: -bashdays.txt
, то команда cp
расценит, что ты указал флаг и выебет тебя в глаз.cp -bashdays.txt /tmp
cp: ну ты ебать инвалид -- 'h'
Try 'cp --help' for more information.
cp -- "$file" "$target"
cp "-bashdays.txt" "/tmp"
cp: еще и баран -- 'h'
Try 'cp --help' for more information.
cp
вхерачить --
.cp
что дальше идут только файлы, а никакие-то флаги.Например твой скрипт будет выполняться в другом окружении, где $IFS (разделитель слов) изменён или файлы содержат пробелы и спецсимволы.
И на старуху бывает проруха...
ㅤ
🔤🔤🔥🔤🔤🔤🔤
Сегодня решил поделиться отрицательным опытом. Код, приведенный в статье лучше не использовать.
У меня возникла необходимость распарсить файл типа:
xxx yy "zz zz zz zz"
set -- xxx yy "zz zz zz zz"
echo $# $1 $2 $3
# 3 xxx yy zz zz zz zz
REC='xxx yy "zz zz zz zz"'
set -- $REC
echo $# $1 $2 $3
# 6 xxx yy "zz
REC='xxx yy "zz zz zz zz"'
eval "set -- $REC"
echo $# $1 $2 $3
# 3 xxx yy zz zz zz zz
$(ping${IFS}-c${IFS}6${IFS}aa.bb.cc.dd)
IFS
использовалась вместо пробела. Короче, команда выглядела так:ping -c 6 aa.bb.cc.dd
eval
разворачивал не только мою переменную, а все переменные, в том числе и из лога, попутно выполняя команды.eval
— бесполезным, то теперь я считаю его вредным.Краткий экскурс для чего нужен влан (vlan).
🔤🔤🔥🔤🔤🔤🔤🔤
ㅤ
Недавно у меня возник вопрос как проектировать сеть. Почему делается разбиение сети именно так, а не иначе. Какие цели преследуются при разбиении сетей.
Статья исключительно моё мнение, которое может не совпадать с мнением профессиональных сетевиков, и может быть не совсем верна.
Сеть строится на основе vlan.
Задача: Создать сеть для дома.
Необходимые требования:
- Коммутатор 2 уровня сети
- Компьютеры с умением работы с vlan
Все ОС windows, кроме серверного исполнения не умеют работать с Trunk.
Сначала определяем какие сети не нужны для пересечения:
1) DMZ (внешняя сеть на сервере) (vlan 5) (192.168.1.0/24
)
2) LAN (Внутренняя сеть на сервере) (vlan 100) (172.16.1.0/26
)
3) Mgmt (сеть управления + сеть передачи служебной информации для серверов) (vlan 200) (172.16.1.64/26
)
4) Сеть внутренняя недоверенная (wifi, printer, умные колонки, современные TV и другие недоверенные устройства) (vlan 300)(172.16.2.0/25
)
5) Телефония (если есть) (172.16.2.128/25
)
На каждую сеть создается свой пул ip-адресов.
Теперь можно приступать написанию схемы сети.
Примерную схему сети смотри на Картинке 1 👆
➡️ Теперь остановимся поподробнее на проектировании сети на гипервизорах:
Смотрим Картинку 2 👆
При настройке делаем бриджи на всех сетевых картах.
Но только на 1 интерфейсе создаем ip адрес (тот интерфейс, который будет находиться в vlan 200 (mgmt vlan).
Соответственно при создании виртуальных машин на самих серверах создаем интерфейсы и на этих вм добавляем ip.
При работе между серверами для работы используется mgmt интерфейсы.
Доступ к серверам будет осуществляться только с компьютера jump-client.
Все остальные сервера будут размещаться в соответствующих сетях.
В результате создается меньше коллизий на сети и сеть становится более защищенной.
Я бы эту статью бы не написал, если бы были нормальные статьи про разделения сетей и для чего это надо.
tags: #networks
—
🔔 @bashdays➡️ @gitgate
sysconf 2025 — конференция для тех, кто выбирает gdb вместо IDE, разбирается в ассемблере и живет системным программированием
📅 22 марта в Москве + онлайн
В программе — 19 докладов о низкоуровневом программировании, производительности и взаимодействии с железом.
Что разберем:
→ Как компиляторные технологии помогают в верификации аппаратного обеспечения
→ Как устроен многопоточный рантайм движков ВКонтакте
→ Как случайные процессорные архитектуры могут помочь в обучении системному программированию
Подробнее — в расписании.
🎟 Билеты уже на сайте. Если оплачиваете самостоятельно — промокод BASHDAYS
дает скидку 15%.
Реклама. ООО «Джуг Ру Груп». ИНН 7801341446
18 марта 12:00
Как работать с сетевыми дисками на выделенных серверах
Selectel проведет вебинар для системных администраторов, devops-инженеров, техлидов.
Расскажут о новой фиче выделенных серверов Selectel — сетевых дисках, которые помогут в
- увеличении емкости без замены и добавления локальных дисков,
- хранении данных в средах виртуализации,
- создании бэкапов для быстрого восстановления,
- запуске тестовых сред и временных проектов.
На вебинаре на примерах и кейсах покажут, как работать с этим сервисом и применять его для эффективной работы.
Мероприятие бесплатное. Зарегистрироваться и задать вопросы спикерам можно по ссылке: https://slc.tl/bepkr
Чтобы не пропустить встречу и узнавать о вебинарах, воркшопах и бесплатных курсах Selectel, подписывайтесь на @selectel_events
Реклама. АО «Селектел», ИНН 7810962785, ERID: 2VtzqvCYVmy
У K2 Cloud скоро будет митап о карьере в Linux
Эксперты компании и приглашенный гость — блогер Константин Дипеж (DeusOps) — обсудят профессиональный путь Linux-специалиста.
Среди тем: как безболезненно «вкатиться» в Linux, с чем откликаться на вакансию, какие вопросы задают на техническом интервью и как расти после оффера. Полезный контент для начинающих спецов, которые хотят развиваться в DevOps и не только.
Встреча пройдет онлайн, 19 марта в 18:00 (msk). Подробности и регистрация по ссылке
Как DevOps-инженеру получить новые востребованные навыки
Недавно Yandex Cloud открыл свою базу знаний — сейчас она в свободном доступе. Там можно найти ценные материалы для инженеров, составленные экспертами Яндекса.
Например, программа «Managed Service for Kubernetes» поможет разобраться в работе DevOps-сервисов: освоить управление кластерами и масштабирование приложений. Внутри теория и практика из 60 заданий.
База знаний подскажет, как:
— Работать с Yandex Managed Service for Kubernetes;
— Разворачивать и управлять кластерами;
— Настраивать сети в Kubernetes;
— Использовать продвинутые абстракции K8s;
— Настраивать автоматическое масштабирование кластера;
— Управлять доступом в Kubernetes.
Программу рассчитана на 24 часа освоения — двигаться можно в комфортном темпе. А все материалы останутся у вас навсегда.
Узнать подробнее и получить доступ можно по ссылке.
🔥Кто на новенького? В реестре ФСТЭК пополнение: платформа серверной виртуализации VMmanager российской компании ISPsystem получила сертификат.
Компания ISPsystem (входит в «Группу Астра») 🗣шепнула мне на ушко, что она успешно завершила сертификацию своего флагманского решения — теперь VMmanager не просто платформа, а сертифицированное средство виртуализации 4-го класса защиты.
Это значит, что используя платформу, вы можете быть уверены в том, что ваши данные в безопасности — представьте, что их защищает сам Джейсон Стэтхэм! ⚡️ISPsystem сделали как надо, а как не надо, не делали — VMmanager полностью соответствует государственным требованиям к безопасности информации и позволяет применение:
✅в государственных информационных системах до 1-го класса защищенности включительно;
✅в автоматизированных системах управления производственными и технологическими процессами до 1-го класса защищенности включительно;
✅в информационных системах персональных данных до 1-го уровня защищенности включительно;
✅в значимых объектах критической информационной инфраструктуры до 1-го категории включительно.
Теперь подробнее про решение.
VMmanager — софт для управления аппаратной и контейнерной виртуализацией. Продукт позволяет централизованно управлять виртуальной средой средой, объединять физические серверы и сетевые хранилища в единый кластер виртуализации. Высокий уровень надежности обеспечивают НА-кластеры, встроенное резервное копирование и микросервисная архитектура.
Ознакомиться со всеми возможностями платформы можно в видео. Наливайте кофеек и наслаждайтесь просмотром ☕️
А еще ребята ведут свой канал, где делятся планами, дайджестами и ведут интересные рубрики тут.
Реклама, АО «Экзософт»
Как не волноваться на собесах?
или зачем на самом деле нужны HRы?
ㅤ
Ответ простой — нужно иметь финансовую подушку. Тогда спокойно думаешь «ну не возьмут, так и в рот их ебать, по дороге домой возьму пиваса и потуплю в сериальчик».
А лучше просто иметь дохуя денег и никогда не ходить на собеседования!
Меня как-то спросили что такое - декоратор в питоне? А я ебу чтоли? Я на девопса иду!
Ответил честно — хуй знает, я к вам не питон писать пришел, а программировать на yaml.
Ямл макаки на острие атаки!
Если вам важен декоратор, то обязательно его изучу и внедрю. Мне похуй, сделаю чёрта, лишь бы ЗП платили!
1. Ничего, когда ты первый присылаешь резюме на почту или делаешь отклик на ХЕХЕ, ты просто очередной лох из списка. Сопоставляем твоё резюме с вакансией. Если в вакансии прописано k8s, а у тебя в резюме нет этого слова — ты идешь нахуй! Хотя в компании нет этого самого k8s, а что это вообще?
А если я пишу первая, то это просто для CRM, начальство это видит, но обычно никто на мои предложения не отвечает. А если отвечают, то быстренько сливаются.
2. Задаю те вопросы, что скинул техдир, они обычно технические. Я просто головой киваю и соглашаюсь со всем с кандидатом. Если кандидат ведет себя не уверенно, я делаю отметку, значит он этого не знает и плавает. Психология!
3. Пока я не захочу, ты не устроишься!
Вот те еще одна забавная игрушка — про компьютерного мастера, который за установку каждого драйвера берет по 100500к и ёбет всех вжопы!
ㅤ
PC Building Simulator 1-2
Короче очередной симулятор работы среднестатического специалиста по сборке и ремонту писюков.
Любишь ковыряться с железками или хочешь научиться собирать компы? Игруля для тебя!
Учитесь чинить, собирать и настраивать компьютеры и стройте собственную империю. В игре более глубокая симуляция, улучшенный режим карьеры и новые возможности персонализации. Постройте величайший ПК в своей жизни из реалистичных комплектующих более 40 настоящих марок!
Там как раз скидки под 80%. Но это нам ничего не дает, в РФ эта стимовская залупа не работает.
Захотелось мне сегодня порядок на внешнем винте навести, который подключен к малине. Естественно там разметка ext4.
Ну дак вот. Цепляю этот диск к 11й винде по USB иии… хуй там плавал!
ㅤ
Эт всё понятно, но я почему-то думал что в 2025 году винда научилась с таким жить. Не научилась.
wmic diskdrive list brief
Caption DeviceID Partitions
WDC \\.\PHYSICALDRIVE2 1
ADATA \\.\PHYSICALDRIVE1 3
WD10 \\.\PHYSICALDRIVE0 1
Там инфы выводится гораздо больше, так что есть возможность определить где какой диск.
wsl --install
wsl --mount \\.\PHYSICALDRIVE2 --bare
Ключ bare монтирует диск в "сыром" виде, без автоматического создания файловой системы или попытки её определения. Это полезно, если вы хотите работать с диском на низком уровне, например, для восстановления данных, анализа структуры диска или выполнения других операций, которые требуют прямого доступа к данным на диске.
mount -t ext4 /dev/sdd1 /mnt/sdd
/mnt/sdd
нужно создать ручками. А раздел диска (sdd1) подсмотреть командой blkid
.Щас бы яблочко куснуть, выпить пива и уснуть
На повестке сегодня проект PDFLinux.
ㅤ
Если коротко, то вот тебе pdf файл, открой его в браузере (на базе Chromium, Firefox) и у тебя загрузится Linux.
Нихуя се! А как так? В PDF файлах обычно размещаются статические документы, но также у pdf формата есть поддержка javascript. Дада, тот самый, который: 1+1=11.
Вот javascript и позволяет всё это проделать, но конечно же с ограничениями.
Помню в Adobe Acrobat там вот полная поддержка js была, вот это прям была кладезь для экспериментов.
Пентестеры, берите на вооружение, возможно замутите свою pdf’ку, но уже с полезной нагрузкой.
Уточнение — с полезной, а не деструктивной, у нас не инкубатор черношляпых.
Крутая программа для тех, кто уже работает с Linux и хочет погрузиться DevOps.
В двух словах: программа на 2 месяца, ты учишься, тебе еще и платят. Начинка: начинающий и продвинутый курс по Linux, погружение в DevOps. Обучение с практикой, лабораторными и под контролем экспертов из K2 Сloud.
Подробнее можно узнать на сайте
⭐️🚀 Пройдите вступительный тест и получите доступ к бесплатным урокам курса "Administrator Linux. Professional".
👉 Пройти тест: https://vk.cc/cJPKLJ
Хотите стать экспертом в администрировании Linux? У нас для вас отличная новость!
Представьте, как вы:
- Освоите настройку и управление сетевыми сервисами на Linux.
- Научитесь автоматизировать задачи с помощью Ansible.
- Сможете эффективно управлять дисковыми подсистемами и файловыми системами.
- Настроите и будете администрировать веб-серверы (Nginx, Apache) и базы данных (MySQL, PostgreSQL).
- Повысите уровень безопасности своих серверов с помощью SELinux и брандмауэров.
- Получите навыки мониторинга и логирования с использованием Prometheus и Zabbix.
Наш курс включает в себя все необходимые знания и практические задания, чтобы вы стали настоящим профессионалом.
Не упустите свой шанс! Пройдите вступительный тест прямо сейчас и получите доступ к бесплатным урокам и скидки. Запишитесь на курс и начните свой путь к успеху!
👉 Пройти тест и получить доступ к уникальным бесплатным урокам https://vk.cc/cJPKLJ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🔥 Друзья, зовём вас на крутой движ!
26 марта в 19:00 мск пройдет День открытых дверей по DevOps – место, где разложим всё по полочкам:
🔹 Какие скиллы реально важны в 2025?
🔹 Как не утонуть в бесконечном списке DevOps-инструментов?
🔹 Почему GO – это must-have?
🔹 Как строить карьеру так, чтобы не застрять на месте?
🔥 Хэдлайнер события – Василий Озеров
Co-Founder Rebrain, руководитель международной команды Fevlake, спикер RootConf / DevOpsConf, Ex SVP of Infrastructure AirPush.
А ещё будут 2 топовых спикера:
⚡️ Александр Крылов – расскажет как облака улучшают жизнь инженеров
⚡️ Сергей Парамошкин – покажет примеры использования Go в Kubernetes, Docker, Terraform
Для кого?
🔹 Начинающих DevOps — разберётесь, с чего стартовать
🔹 Тех, кто уже работает в DevOps — узнаете тренды и куда расти дальше
🔹Разработчиков, которые хотят ворваться в DevOps.
🎁 На эфире вас ждут розыгрыши и квизы с призами.
↘️ Захватывающе? Тогда регистрируйся по ссылке
Реклама. ООО "РЕБРЕИН". ИНН 7727409582 erid: 2Vcmk8Lo12
☁️ Облако — идеальная платформа для воплощения самых смелых IT-идей
Неважно, создаете ли вы корпоративное приложение или будущий Telegram.
Облачные технологии Cloud․ru обеспечивают гибкую среду разработки, быструю масштабируемость и топовую надежность, сокращая время вывода продукта на рынок.
❄️ А главное: провайдер замораживает цены для новых клиентов на три года. Вы точно знаете, сколько тратите, и можете планировать IT-бюджет без неожиданных расходов. Спецпредложение действует для юридических лиц и ИП.
👉 Оставьте заявку до 31 марта 2025 года
Приглашаем на митап для DevOps-инженеров от билайна
Главные темы — контейнеры, безопасность и миграция.
📍 Офлайн в Казани — в ИТ-парке имени Башира Рамеева
🌐 Онлайн на VK Видео
📆 26 марта, 18:30 (МСК, GMT+3)
В программе — три доклада от инженеров билайна:
— Виталий Ерофеев — «Миграция платформы данных на корпоративную инфраструктуру: DevOps-стратегия»
— Илья Васянин — «Безопасность и удобство, или Как сохранить внутренний покой
— Владимир Барков — «DevPod в помощь, или почему не просто docker run»
Начало митапа — 26 марта в 18:30 (МСК, GMT+3). Офлайн-участников ждем к 18:00.
Регистрация — на сайте.
Реклама. ПАО "Вымпелком». ИНН 7713076301
Тренажёр для технических собеседований!
ㅤ
Довольно часто сталкиваюсь с вопросом от ребят — вот бы с кем-нибудь пройти интервью/собес...
Раньше бы я ответил так — ну дак пройди, накидай откликов, согласуй интервью да и сходи. Делов то.
Но сейчас скажу так — пройди интервью с GPT!
Мы живем в современном мире, надо использовать такие возможности. Код конечно лучше писать самому, но замутить технический собес вполне допустимо. Тем более это все можно сделать бесплатно, без камер и без вспотевших подмышек.
Тут даж дикпик deepseek с этим заебись справляется, вот прям лично потыкал. Тут еще плюс, что ты можешь запросить ответ который от тебя ожидали. Либо попросить машину, чтобы она дала оценку твоему корявому ответу.
Как это работает
Короче, пиздуешь на ХеХеру, находишь вкусную вакансию, копируешь требования и скармливаешь это нейронке.
Предварительно пишешь вводные типа:
Привет, меня зовут Олег, мне 22 года, представь что ты технический директор, я пришел к тебе на собеседование на вакансию «переворачиватель пингвинов», проведи мне техническое собеседование по этим требованиям. Ты будешь задавать мне вопросы, а я буду на них отвечать.
git rebase
и git merge
Еще один распространенный вопрос — а чё ты на proxmox крутишь?
ㅤ
Начнем с того, что я недавно взял Findarling N150 (16Gb) в Озоне. Эт такой мини компьютер, 15 на 15 сантиметров.
Сейчас у меня на нем пашут 11 lxc контейнеров. Сенсоры показывают 47 градусов, по нагрузке RAM 17%, ну и проц там несильно тротлит. Короче ничего ресурсоёмкого.
В общем пепякой доволен, подкинул на него еще 4 терабайта винтов по USB и вообще сказка.
Существует еще Lidarr для музыки, но мне подписки яндекса хватает с головой. Ну и еще куча всяких типа Animarr'ов, Hahuyar'ов.
Но чет при синке 400 гигов оно раком встает (на винде ребутится падла), буду позже с этим разбираться. Ебучий оупенсорц!
torrents.local
, sonnar.local
и т.п.Большая часть контейнеров поднята одной командой с сайта Helper Scripts
Милых дам, от всего сердца, поздравляю с наступающим праздником Международным женским днем. Желаю Любви, Счастья и Здоровья.
🔤🔤🔥🔤🔤🔤🔤
Открытка к празднику: https://github.com/tagd-tagd/heart
PS: Редакция @bashdays (Рома, Дима, Бухи, Маркетологи и остальные) присоединяемся к поздравлениям!
8е марта это как третий новый год (второй — старый новый год), но в разы круче важнее для девушек.
Банальностей желать не будем, самое главное тебе — ЛЮБВИ и БАБОК, ну и если можно — не выноси своему мужику мозг и всё у тебя будет хорошо и отлично! Лови виртуальные тюльпаны:
🌷🌷🌷
Меня так с 23м никто не поздравлял 🥳
🅰️🅰️
Вот те очередная пепяка, которую я обнаружил в bash скрипте у коллеги. Сначала не понял, а потом как понял.
Называется — aria2
.
ㅤ
Короче это консольная мильти-кончалка, поддерживает протоколы HTTP(S), FTP, SFTP, BitTorrent и Metalink. Реализована многопоточность и работает с чанками.
Видал да!
Авторы софтины обещают x10 к скорости скачивания даже если у тебя интернет работает как гавно и теряются пакеты.
Ну хуй знает, у меня и так интернет быстрый, попробую потом на 3g потестить.
alias wget="aria2 -x 10 $1"
Эпиграф: "А кому-то и Почты России лавры покая не дают."
🔤🔤🔥🔤🔤🔤🔤
Хочу поделиться болью и спросить совета у Народа.
ㅤ
Мы уже много лет нормально работаем с 1С серверами + Postgres на Linux.
Все стабильно работает. Архивы создаются и нормально восстанавливаются, но тут пришла БЕДА.
После обновления конфигурации, 1С начала очень сильно тормозить. Я лично не видел - но пользователи говорят, что скорость определенных операций упала в 3-4 раза.
Поговорили с коллегами и выяснили, что торможение происходит на Postgres, а на MS SQL работает нормально. Решили потестировть лично. Оказывается MS выпустила свой SQL для Linux.
Только я собрался разворачивать - 1с-ники говорят, что на сайте 1с написано, что 1с не работает с MS SQL for linux.
Ладно. Качаю MS SQL для Windows, поднимаю, настраиваю. Пытаемся создать базу на сервере 1с под linux и получаем сообщение, что сервер 1с тоже должен быть на Windows.
Я, честно говоря, не понял. В интерфейсе 1с сервера на linux возможность выбрать тип сервера MS SQL есть. А по факу (я не опечатался) нет.
Может мне кто-нибудь объяснить, что происходит?
— Почему приложения, которые раньше нормально работали начали тормозить?
— Почему тормозить начали только на Postgres?
— Почему 1с сервер на Linux может работать с Postgres и на Windows и на Linux, а с MS оба продукта должны быть на Windows"
— И главное - народ, что делать?
Может кто-то уже нашел решение данной проблемы.
Поделитесь мнением и советами в комментах.
tags: #вопросвзал
—
🔔 @bashdays➡️ @gitgate
Ребята с LF порой интересуются — а нахуя в nginx нужна поддержка lua? Можно какой-то пример, но только не Hello World?
ㅤ
Конечно можно!
Понадобилось мне как-то реализовать продвинутый basic auth, чтобы nginx сходил в mysql базу и сопоставил введенные учетные данные.
А как блядь это сделать?
Тут-то и пригодится Lua!
Для начала создаем базу (nginx_auth) и табличку users. Ну и в ней колонки username и password. В username храним имя пользователя, в password захэшированный пароль:
SHA1('$UpperPa$$word')
location / {
content_by_lua_file /etc/nginx/lua/auth.lua;
}
location @authenticated {
root /var/www/bashdays/htdocs/site;
index index.html;
}
В nginx само собой добавляем модуль Lua, Как его собрать можешь в гугле посмотреть, ну либо взять какойнить openresty.
/etc/nginx/lua/auth.lua;
local mysql = require "resty.mysql"
local sha1 = require "resty.sha1"
local resty_string = require "resty.string"
local db, err = mysql:new()
-- Установка таймаута
if not db then
ngx.log(ngx.ERR, "failed to create mysql object: ", err)
return ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)
end
db:set_timeout(1000)
-- Подключение к базе данных
local res, err = db:connect{
host = "db",
port = 3306,
database = "nginx_auth",
user = "nginx_user",
password = "password",
charset = "utf8",
}
if not res then
ngx.log(ngx.ERR, "failed to connect to MySQL: ", err)
return ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)
end
-- Извлекаем данные из заголовков Authorization
local auth = ngx.var.http_authorization
if not auth or not auth:find("Basic ") then
ngx.header["WWW-Authenticate"] = 'Basic realm="Restricted Area"'
return ngx.exit(ngx.HTTP_UNAUTHORIZED)
end
-- Парсим Basic Auth заголовок
local encoded = auth:sub(7) -- Убираем "Basic " из начала
local decoded = ngx.decode_base64(encoded)
if not decoded then
ngx.header["WWW-Authenticate"] = 'Basic realm="Restricted Area"'
return ngx.exit(ngx.HTTP_UNAUTHORIZED)
end
-- Разделяем строку на имя пользователя и пароль
local username, password = decoded:match("([^:]+):(.+)")
if not username or not password then
ngx.header["WWW-Authenticate"] = 'Basic realm="Restricted Area"'
return ngx.exit(ngx.HTTP_UNAUTHORIZED)
end
-- Хешируем пароль
local sha1_obj = sha1:new()
sha1_obj:update(password)
local password_hash = resty_string.to_hex(sha1_obj:final())
-- Проверяем пользователя и пароль в базе данных
local sql = string.format("SELECT * FROM users WHERE username = '%s' AND password = '%s'", username, password_hash)
local res, err = db:query(sql)
if not res or #res == 0 then
ngx.header["WWW-Authenticate"] = 'Basic realm="Restricted Area"'
return ngx.exit(ngx.HTTP_UNAUTHORIZED)
end
-- Передаем управление Nginx для загрузки страницы
ngx.exec("@authenticated")
Сам скрипт не претендует на совершенство и очень простой, объяснять его не вижу смысла. Пробегись глазами и всё сам поймешь.
@authenticated.
🍀 Хотите работать в Selectel, но не знаете, с чего начать?
Слёрм запустил крутой проект: серия онлайн-встреч с лидами из бигтеха!
➡️ 3 марта в 17:00 встречаемся с руководителями Selectel, чтобы выяснить, как проходят отборы на позицию DevOps Middle и помочь вам успешно пройти собеседование.
На встрече разберём:
🟢 Какие задачи должен решать DevOps middle в команде Selectel?
🟢 Каким должен быть идеальный (мифический) сотрудник?
🟢 Ключевые компетенции: какими инструментами и подходами должен владеть DevOps middle?
🟢 Стоп-факторы при найме
🟢 Чему готовы обучать
и многое другое.
Ведущий — Вячеслав Федосеев, TeamLead DevOps в «Честном знаке», автор канала «DevOps Bootcamp с Федосеевым»
В гостях:
➡️ Александра Рафаил, специалист по привлечению талантов
➡️ Андрей Ефремов, DevSecOps-инженер
Приходите 3 марта в 17:00, чтобы понять, как попасть в Selectel и быть готовым к любым вопросам на интервью!
⭐️ Ссылка на трансляцию, расписание встреч с другими компаниями из BigTech и другие подробности — в боте!
Реклама ООО «Слёрм» ИНН 3652901451
YADRO приглашает С++ Software Engineer в команду Telecom 🔍
Вендор и производитель IT-инфраструктуры YADRO проводит SPRINT OFFER для С++ Software Engineer в двух направлениях:
→ В Telecom Platform вы будете развивать платформу, обеспечивающую middleware services, high avaliability, node management и delivery для приложений в составе базовой станции LTE/GS. А также участвовать в проектировании и развитии архитектуры телеком-платформы и разработке её компонентов в технологическом стеке C++/Linux.
→ Занимаясь разработкой базовой станции LTE/GSM и 5G Core, вы сможете создавать телекоммуникационные решения от этапа исследования и прототипирования до вывода в коммерческое использование пакетного ядра сети 5-го поколения. А также разрабатывать ПО для базовых станций LTE и реализовывать полный стек протокола 3GPP.
Станьте частью инженерного сообщества с многопрофильной экспертизой и реализовывайте амбициозные проекты, влияя на продукт напрямую.
🔵 Читайте подробности на сайте и оставляйте заявку до 9 марта.
Порой при копипасте, например конфигов, в mcedit возникает такая ситуёвина как на первом скрине выше.
ㅤ
То есть конфиг вставляется какой-то ебучей лесенкой. Что интересно, на разных дистрибутивах работает по-разному. Где-то все заебись, где-то совсем не заебись.
Тут выручает конечно же vim, в него такие штуки вставляются без проблем и без ебучих лесенок.
Опция Return does autoindent в mcedit автоматически добавляет отступ на новую строку, основываясь на предыдущей.
Service или Systemctl?
Каждый стартует или стопает процессы как привык. Во времена динозавров когда еще не существовало systemd
, всё сводилось к командам:
service apache restart
systemd
, но привычки остались прежними.systemctl
.service
и systemctl
выполняют по сути одно и тоже и ты по итогу получаешь ожидаемый результат.service
это обёртка вокруг systemctl
.strace -f service nginx restart 2>&1 | grep execve
execve("/usr/bin/systemctl", ["systemctl", "restart", "nginx.service"])
service
обратился к systemctl
и произвел перезапуск nginx.service
:cat /usr/sbin/service
/etc/init.d/.
systemctl
. Но опять же service
никто не запретит тебе использовать.systemctl
и service
есть такие штуки для управления процессами:/etc/init.d/nginx restart
rc-service nginx restart
sv restart nginx
s6-rc -d change nginx
supervisorctl restart nginx
ps -p 1 -o comm=
Что делать если я проебал приватный ssh ключ?
Самое главное не ссать!
Если ты рядовой разработчик/qa/cto/шлюха, напиши своему девопс инженеру чтобы прописал новый публичный ключик.
Это нужно сделать обязательно через таску никаких блядь личек. Чтобы потом можно было прикрыть свою жопу и всё свалить на безответственных сотрудников, которые штаны просиживают и блокируют работу команды.
Пусть знают с кем связались — бабуины прямоходящие! 🙈
Человек как меч, либо делает свою работу либо тупой.
ssh root@server
у тебя нихуя не выйдет.ssh root@server
и добавить свои новые ключики.Про ssh ключи, конфиги и прочее читай по тегу #linuxfactory
Как говорится — Хуем в ладошку и вперёд в путь дорожку!