Service или Systemctl?
Каждый стартует или стопает процессы как привык. Во времена динозавров когда еще не существовало
Сейчас мир изменился, появился
ㅤ
Теперь сервисами рекомендуется управлять через
Но какая в хуй разница как управлять сервисам?
И
На самом деле сейчас команда
Давай убедимся:
По итогу ты получишь:
То есть
А если глянуть исходник
То ты увидишь обычный bash скрипт в котором и происходит вся эта магия.
Если система использует SysVinit или Upstart (например, старые версии Debian, CentOS 6, Ubuntu 14.04), то service будет работать напрямую со скриптами
По бест-практикам старайся использовать
Хотя когда молодые ребята видят как ты вводишь service, у них разрывает жопу и ты автоматически присваиваешь себя к престарелым скуфам.
Как это делаю я? И так и сяк, мне вообще похуй, главное достигнут ожидаемый результат.
Кроме
А чтобы проверить какая система инициализации у тебя, вот тебе пиздатая команда:
Вот и вся наука.
А как ты рулишь сервисами? Как скуф или как современный молодой человек?
tags: #linux #debug #strace
—
🔔 @bashdays➡️ @gitgate
Каждый стартует или стопает процессы как привык. Во времена динозавров когда еще не существовало
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
То ты увидишь обычный bash скрипт в котором и происходит вся эта магия.
Если система использует SysVinit или Upstart (например, старые версии Debian, CentOS 6, Ubuntu 14.04), то service будет работать напрямую со скриптами
/etc/init.d/.
По бест-практикам старайся использовать
systemctl
. Но опять же service
никто не запретит тебе использовать.Хотя когда молодые ребята видят как ты вводишь 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=
Вот и вся наука.
А как ты рулишь сервисами? Как скуф или как современный молодой человек?
tags: #linux #debug #strace
—
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Щас бы яблочко куснуть, выпить пива и уснуть
На повестке сегодня проект PDFLinux.
ㅤ
Если коротко, то вот тебе pdf файл, открой его в браузере (на базе Chromium, Firefox) и у тебя загрузится Linux.
Нихуя се! А как так? В PDF файлах обычно размещаются статические документы, но также у pdf формата есть поддержка javascript. Дада, тот самый, который: 1+1=11.
Вот javascript и позволяет всё это проделать, но конечно же с ограничениями.
Проект основан на эмуляторе RISC-V.
Запуск в браузере осуществляется через движок PDFium. А чтобы потыкать в интерактивном режиме, есть виртуальная клавиатура.
Понятно дело это говнище безбожно тормозит, браузерные ограничения и т.п, но концепт прикольный.
Разработчик кстати и Doom запихал в PDF, можно погонять тут.
Исходники и инструкции по сборке доступны в публичной репе на гитхабе.
Посмотри, мож придумаешь где применить.
tags: #linux #security
—
🔔 @bashdays➡️ @gitgate
На повестке сегодня проект PDFLinux.
ㅤ
Если коротко, то вот тебе pdf файл, открой его в браузере (на базе Chromium, Firefox) и у тебя загрузится Linux.
Нихуя се! А как так? В PDF файлах обычно размещаются статические документы, но также у pdf формата есть поддержка javascript. Дада, тот самый, который: 1+1=11.
Вот javascript и позволяет всё это проделать, но конечно же с ограничениями.
Помню в Adobe Acrobat там вот полная поддержка js была, вот это прям была кладезь для экспериментов.
Проект основан на эмуляторе RISC-V.
Запуск в браузере осуществляется через движок PDFium. А чтобы потыкать в интерактивном режиме, есть виртуальная клавиатура.
Понятно дело это говнище безбожно тормозит, браузерные ограничения и т.п, но концепт прикольный.
Пентестеры, берите на вооружение, возможно замутите свою pdf’ку, но уже с полезной нагрузкой.
Уточнение — с полезной, а не деструктивной, у нас не инкубатор черношляпых.
Разработчик кстати и Doom запихал в PDF, можно погонять тут.
Исходники и инструкции по сборке доступны в публичной репе на гитхабе.
Посмотри, мож придумаешь где применить.
tags: #linux #security
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Порой при копипасте, например конфигов, в mcedit возникает такая ситуёвина как на первом скрине выше.
ㅤ
То есть конфиг вставляется какой-то ебучей лесенкой. Что интересно, на разных дистрибутивах работает по-разному. Где-то все заебись, где-то совсем не заебись.
Но для фанатов mc это боль, сидишь потом эти вонючие пробелы-табы удаляешь, чтобы хоть как-то быть ближе к кодстайлу.
И знаешь — это можно быстренько пофиксить!
Открываешь mcedit, нажимаешь F9, переходишь во вкладку Options → General, а дальше снимаешь галочку с пункта: Return does autoindent.
Всё блядь! Лесенке пришла песда! Теперь любые конфиги залетаю в mcedit как по маслу. Как скопировал, так и вставилось.
Иногда всё проще, чем кажется! Изучай!
tags: #linux #bugfix
—
🔔 @bashdays➡️ @gitgate
ㅤ
То есть конфиг вставляется какой-то ебучей лесенкой. Что интересно, на разных дистрибутивах работает по-разному. Где-то все заебись, где-то совсем не заебись.
Тут выручает конечно же vim, в него такие штуки вставляются без проблем и без ебучих лесенок.
Но для фанатов mc это боль, сидишь потом эти вонючие пробелы-табы удаляешь, чтобы хоть как-то быть ближе к кодстайлу.
И знаешь — это можно быстренько пофиксить!
Открываешь mcedit, нажимаешь F9, переходишь во вкладку Options → General, а дальше снимаешь галочку с пункта: Return does autoindent.
Опция Return does autoindent в mcedit автоматически добавляет отступ на новую строку, основываясь на предыдущей.
Всё блядь! Лесенке пришла песда! Теперь любые конфиги залетаю в mcedit как по маслу. Как скопировал, так и вставилось.
Иногда всё проще, чем кажется! Изучай!
tags: #linux #bugfix
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1 114
Захотелось мне сегодня порядок на внешнем винте навести, который подключен к малине. Естественно там разметка ext4.
Ну дак вот. Цепляю этот диск к 11й винде по USB иии… хуй там плавал!
ㅤ
Ну мыж с тобой не пальцем деланные, если есть wsl значит оно может ext4 теоретически прочитать.
Покопавшись некоторое время в куче говна и применив приёмчики от Чака Норриса мне удалось это победить.
Показываю!
Запускаем powershell, я запускал под суперадмином, хуй знает мож и от юзера прямоходячего сработает.
В павершеле пишем:
В ответ получаем список доступных дисков, в том числе подключенных по usb.
Заебись! Я вижу свой usb диск, зовется он PHYSICALDRIVE2.
Дальше. Если у тебя не стоит wsl, ставим:
Да, это все делаем в повершеле в винде. После установки запусти wsl с убунтой и задай пароль для рута, пусть там все инициализируется.
Если всё сделал правильно, запускаем:
В ответ получишь сообщение об успешном маунте. Ну либо тебя пошлют нахуй. Меня в первый раз послали, пока не добавил ключик bare.
Ага, примонтировали, ну и теперь идем в свою убунту которая в wsl кружится и делаем финальный маунт:
Папку
Всё, usb винт успешно примонтирован в wsl убунты, файлы доступны. Теперь их можно копировать на ntfs и радоваться.
400 гигов с ext4 на ntfs копировалось 3 часа.
Хуй знает на сколько я изобрел велосипед, но поставленную задачку решил без всяких парагонов и прочего внешнего софта. ЗБС!
tags: #linux #windows
—
🔔 @bashdays➡️ @gitgate
Ну дак вот. Цепляю этот диск к 11й винде по USB иии… хуй там плавал!
ㅤ
Эт всё понятно, но я почему-то думал что в 2025 году винда научилась с таким жить. Не научилась.
Ну мыж с тобой не пальцем деланные, если есть wsl значит оно может ext4 теоретически прочитать.
Покопавшись некоторое время в куче говна и применив приёмчики от Чака Норриса мне удалось это победить.
Показываю!
Запускаем powershell, я запускал под суперадмином, хуй знает мож и от юзера прямоходячего сработает.
В павершеле пишем:
wmic diskdrive list brief
В ответ получаем список доступных дисков, в том числе подключенных по usb.
Caption DeviceID Partitions
WDC \\.\PHYSICALDRIVE2 1
ADATA \\.\PHYSICALDRIVE1 3
WD10 \\.\PHYSICALDRIVE0 1
Заебись! Я вижу свой usb диск, зовется он PHYSICALDRIVE2.
Там инфы выводится гораздо больше, так что есть возможность определить где какой диск.
Дальше. Если у тебя не стоит wsl, ставим:
wsl --install
Да, это все делаем в повершеле в винде. После установки запусти wsl с убунтой и задай пароль для рута, пусть там все инициализируется.
Если всё сделал правильно, запускаем:
wsl --mount \\.\PHYSICALDRIVE2 --bare
В ответ получишь сообщение об успешном маунте. Ну либо тебя пошлют нахуй. Меня в первый раз послали, пока не добавил ключик bare.
Ключ bare монтирует диск в "сыром" виде, без автоматического создания файловой системы или попытки её определения. Это полезно, если вы хотите работать с диском на низком уровне, например, для восстановления данных, анализа структуры диска или выполнения других операций, которые требуют прямого доступа к данным на диске.
Ага, примонтировали, ну и теперь идем в свою убунту которая в wsl кружится и делаем финальный маунт:
mount -t ext4 /dev/sdd1 /mnt/sdd
Папку
/mnt/sdd
нужно создать ручками. А раздел диска (sdd1) подсмотреть командой blkid
.Всё, usb винт успешно примонтирован в wsl убунты, файлы доступны. Теперь их можно копировать на ntfs и радоваться.
400 гигов с ext4 на ntfs копировалось 3 часа.
Хуй знает на сколько я изобрел велосипед, но поставленную задачку решил без всяких парагонов и прочего внешнего софта. ЗБС!
tags: #linux #windows
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Вот те еще одна забавная игрушка — про компьютерного мастера, который за установку каждого драйвера берет по 100500к и ёбет всех вжопы!
ㅤ
PC Building Simulator 1-2
Короче очередной симуляторработы среднестатического специалиста по сборке и ремонту писюков.
Любишь ковыряться с железками или хочешь научиться собирать компы? Игруля для тебя!
Что имеем:
1. Ебанутые клиенты
2. Проёбанные/спизженные детали
3. Неправильная диагностика
4. Во время ремонта всё сгорело
5. Поставщик прислал нерабочую хуйню
6. Уронил паяльник на яйца
7. Вендор ебет мозги и не оплачивает ремонт
8. Инженер забил хуй и забухал
9. Перманентный визит пожарников/налоговой
10. Пыль и тараканы
11. Клиент слился
И много другое…
Первая версия в стиме
Поэтому дружно пиздуем на трекеры и качаем себе первую и вторую портабл версию. Проверил, оно там аккуратно лежит.
🅰️ 🅰️
С пятницей друзья, всем хороших предстоящих выходных.
Ну и самое главное — берегите себя!
tags: #hardware #games
—
🔔 @bashdays➡️ @gitgate
ㅤ
PC Building Simulator 1-2
Короче очередной симулятор
Любишь ковыряться с железками или хочешь научиться собирать компы? Игруля для тебя!
Учитесь чинить, собирать и настраивать компьютеры и стройте собственную империю. В игре более глубокая симуляция, улучшенный режим карьеры и новые возможности персонализации. Постройте величайший ПК в своей жизни из реалистичных комплектующих более 40 настоящих марок!
Что имеем:
1. Ебанутые клиенты
2. Проёбанные/спизженные детали
3. Неправильная диагностика
4. Во время ремонта всё сгорело
5. Поставщик прислал нерабочую хуйню
6. Уронил паяльник на яйца
7. Вендор ебет мозги и не оплачивает ремонт
8. Инженер забил хуй и забухал
9. Перманентный визит пожарников/налоговой
10. Пыль и тараканы
11. Клиент слился
И много другое…
Первая версия в стиме
Там как раз скидки под 80%. Но это нам ничего не дает, в РФ эта стимовская залупа не работает.
Поэтому дружно пиздуем на трекеры и качаем себе первую и вторую портабл версию. Проверил, оно там аккуратно лежит.
С пятницей друзья, всем хороших предстоящих выходных.
Ну и самое главное — берегите себя!
tags: #hardware #games
—
Please open Telegram to view this post
VIEW IN TELEGRAM
2 37
Как не волноваться на собесах?
или зачем на самом деле нужны HRы?
ㅤ
Ответ простой — нужно иметь финансовую подушку. Тогда спокойно думаешь «ну не возьмут, так и в рот их ебать, по дороге домой возьму пиваса и потуплю в сериальчик».
Ну а если по делу — прочитал требования в вакухе, подготовься! А самое главное подготовь вопросы, их нужно обязательно задать, даже если тебе и не интересно что-то знать про их компанию.
Банально если пишут — знание кубера. Почитай что такое кубер, что такое поды, что такое helm. Чисто теорию.
Собес идет в формате беседы, значит и ты отвечаешь словами, поэтому если хуйнёшь в них теорией, то заработаешь плюсик.
За прозрачность и честность, оффер в кармане!
Но это было раньше…
В 2025 намного сложнее устроиться, говорят что айти рынок переполнен, но на самом деле с этим дела обстоят иначе.
HRыдалбаёбы зажрались! Они тупо проёбывают деньги компании, показывают видимость работы, жонглируют кандидатами. У них нет цели взять тебя, у них есть цель — подольше поискать, подольше поебать мозги.
В 99% случаев HRы вообще не шарят за айти.
🅰️ 🅰️
Беседовал ща с девочкой HR знакомой из крупного рекрутингово агентства, задал ей вопросы:
1. Я присылаю тебе резюме, что дальше?
2. Какие вопросы ты задаешь на собесе?
3. Как гарантировано устроиться к вам?
Больше вопросов задать не успел, она пиздец занятая, чаю сам себя не выпьет. Извини Лера, ты мне разрешила заинсайдить!
Ответы:
Вот и кризис! Кризис создают некомпетентные HRы, которым это выгодно. За всех HRов естественно не говорю, есть и толковые, но их единицы.
План простой:
1. Выгоняем всех HRовнахуй на улицу
2. Повышаем ЗП девопсу/разработчику/qa или кто там еще
3. Даем им учетку на ХЕХЕ
4. Ставим задачу — найди толкового человека
Профит! Этот план лично испытал несколько раз, работает на 100500%, толковый человек находится за 1-7 дней, без хуйни и без ЗП на HRов.
Каков вывод? Правильно — HRы нахуй не нужны!
Если ты НЕ толковый HR и думаешь по другому, ну чё, ждем тебя в комментах, давай обсудим твой лайв-стайл! Но сразу готовь жопу, не ровен час ребята тебя растерзают и выкинут в шерсть.
tags: #рабочиебудни
—
🔔 @bashdays➡️ @gitgate
или зачем на самом деле нужны HRы?
ㅤ
Ответ простой — нужно иметь финансовую подушку. Тогда спокойно думаешь «ну не возьмут, так и в рот их ебать, по дороге домой возьму пиваса и потуплю в сериальчик».
А лучше просто иметь дохуя денег и никогда не ходить на собеседования!
Ну а если по делу — прочитал требования в вакухе, подготовься! А самое главное подготовь вопросы, их нужно обязательно задать, даже если тебе и не интересно что-то знать про их компанию.
Банально если пишут — знание кубера. Почитай что такое кубер, что такое поды, что такое helm. Чисто теорию.
Собес идет в формате беседы, значит и ты отвечаешь словами, поэтому если хуйнёшь в них теорией, то заработаешь плюсик.
Меня как-то спросили что такое - декоратор в питоне? А я ебу чтоли? Я на девопса иду!
Ответил честно — хуй знает, я к вам не питон писать пришел, а программировать на yaml.
Ямл макаки на острие атаки!
Если вам важен декоратор, то обязательно его изучу и внедрю. Мне похуй, сделаю чёрта, лишь бы ЗП платили!
За прозрачность и честность, оффер в кармане!
Но это было раньше…
В 2025 намного сложнее устроиться, говорят что айти рынок переполнен, но на самом деле с этим дела обстоят иначе.
HRы
В 99% случаев HRы вообще не шарят за айти.
Беседовал ща с девочкой HR знакомой из крупного рекрутингово агентства, задал ей вопросы:
1. Я присылаю тебе резюме, что дальше?
2. Какие вопросы ты задаешь на собесе?
3. Как гарантировано устроиться к вам?
Больше вопросов задать не успел, она пиздец занятая, чаю сам себя не выпьет. Извини Лера, ты мне разрешила заинсайдить!
Ответы:
1. Ничего, когда ты первый присылаешь резюме на почту или делаешь отклик на ХЕХЕ, ты просто очередной лох из списка. Сопоставляем твоё резюме с вакансией. Если в вакансии прописано k8s, а у тебя в резюме нет этого слова — ты идешь нахуй! Хотя в компании нет этого самого k8s, а что это вообще?
А если я пишу первая, то это просто для CRM, начальство это видит, но обычно никто на мои предложения не отвечает. А если отвечают, то быстренько сливаются.
2. Задаю те вопросы, что скинул техдир, они обычно технические. Я просто головой киваю и соглашаюсь со всем с кандидатом. Если кандидат ведет себя не уверенно, я делаю отметку, значит он этого не знает и плавает. Психология!
3. Пока я не захочу, ты не устроишься!
Вот и кризис! Кризис создают некомпетентные HRы, которым это выгодно. За всех HRов естественно не говорю, есть и толковые, но их единицы.
План простой:
1. Выгоняем всех HRов
2. Повышаем ЗП девопсу/разработчику/qa или кто там еще
3. Даем им учетку на ХЕХЕ
4. Ставим задачу — найди толкового человека
Профит! Этот план лично испытал несколько раз, работает на 100500%, толковый человек находится за 1-7 дней, без хуйни и без ЗП на HRов.
Каков вывод? Правильно — HRы нахуй не нужны!
Если ты НЕ толковый HR и думаешь по другому, ну чё, ждем тебя в комментах, давай обсудим твой лайв-стайл! Но сразу готовь жопу, не ровен час ребята тебя растерзают и выкинут в шерсть.
tags: #рабочиебудни
—
Please open Telegram to view this post
VIEW IN TELEGRAM
14 102
Ребята с LF порой интересуются — а нахуя в nginx нужна поддержка lua? Можно какой-то пример, но только не Hello World?
ㅤ
Конечно можно!
Понадобилось мне как-то реализовать продвинутый basic auth, чтобы nginx сходил в mysql базу и сопоставил введенные учетные данные.
А как блядь это сделать?
Тут-то и пригодится Lua!
Для начала создаем базу (nginx_auth) и табличку users. Ну и в ней колонки username и password. В username храним имя пользователя, в password захэшированный пароль:
Эту команду выполняешь в mysql, в ответ он выплюнет тебе хэш, его и нужно будет заебенить в колонку password.
Дальше конфигуряем nginx:
Ну и сам скрипт кидаем в
Всё! Релоадим nginx и получаем прокаченный Basic Auth.
Теперь nginx лезет в базу и при успешном исходе кидает пользователя в локейшен
Да, скрипт работает на mariadb. Для всяких перкон и т.п. возможно нужно будет переделать SELECT.
Вот такие пироги, вот тебе и заебачее применение Lua!
➡️ Кстати, если увидел вектор атаки, поделись в комментах.
tags: #linux #devops #lua #nginx
—
🔔 @bashdays➡️ @gitgate
ㅤ
Конечно можно!
Понадобилось мне как-то реализовать продвинутый basic auth, чтобы nginx сходил в mysql базу и сопоставил введенные учетные данные.
А как блядь это сделать?
Тут-то и пригодится Lua!
Для начала создаем базу (nginx_auth) и табличку users. Ну и в ней колонки username и password. В username храним имя пользователя, в password захэшированный пароль:
SHA1('$UpperPa$$word')
Эту команду выполняешь в mysql, в ответ он выплюнет тебе хэш, его и нужно будет заебенить в колонку password.
Дальше конфигуряем nginx:
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")
Всё! Релоадим nginx и получаем прокаченный Basic Auth.
Сам скрипт не претендует на совершенство и очень простой, объяснять его не вижу смысла. Пробегись глазами и всё сам поймешь.
Теперь nginx лезет в базу и при успешном исходе кидает пользователя в локейшен
@authenticated.
Да, скрипт работает на mariadb. Для всяких перкон и т.п. возможно нужно будет переделать SELECT.
Вот такие пироги, вот тебе и заебачее применение Lua!
tags: #linux #devops #lua #nginx
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Эпиграф: "А кому-то и Почты России лавры покая не дают."
🔤 🔤 🔥 🔤 🔤 🔤 🔤
Хочу поделиться болью и спросить совета у Народа.
ㅤ
Мы уже много лет нормально работаем с 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
Хочу поделиться болью и спросить совета у Народа.
ㅤ
Мы уже много лет нормально работаем с 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: #вопросвзал
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Вот те очередная пепяка, которую я обнаружил в bash скрипте у коллеги. Сначала не понял, а потом как понял.
Называется —
ㅤ
Короче это консольная мильти-кончалка, поддерживает протоколы HTTP(S), FTP, SFTP, BitTorrent и Metalink. Реализована многопоточность и работает с чанками.
Видал да!
Авторы софтины обещают x10 к скорости скачивания даже если у тебя интернет работает как гавно и теряются пакеты.
Можно алиас сделать типа:
И заменить вегетину на эту вертихвостку c 10тью потоками.
Помимо скачивания, с помощью ключей можно чёрта накрутить, всякое сжатие, проксирование и т.п.
Больше инфы тут:
➡️ Официальный сайт
➡️ Репка на гитхабе
Потыкай, с виду штука годная, почти 40к звезд на гитхабе.
tags: #utilites #linux
—
🔔 @bashdays➡️ @gitgate
Называется —
aria2
.ㅤ
Короче это консольная мильти-кончалка, поддерживает протоколы HTTP(S), FTP, SFTP, BitTorrent и Metalink. Реализована многопоточность и работает с чанками.
Видал да!
Авторы софтины обещают x10 к скорости скачивания даже если у тебя интернет работает как гавно и теряются пакеты.
Ну хуй знает, у меня и так интернет быстрый, попробую потом на 3g потестить.
Можно алиас сделать типа:
alias wget="aria2 -x 10 $1"
И заменить вегетину на эту вертихвостку c 10тью потоками.
Помимо скачивания, с помощью ключей можно чёрта накрутить, всякое сжатие, проксирование и т.п.
Больше инфы тут:
Потыкай, с виду штука годная, почти 40к звезд на гитхабе.
tags: #utilites #linux
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Милых дам, от всего сердца, поздравляю с наступающим праздником Международным женским днем. Желаю Любви, Счастья и Здоровья.
🔤 🔤 🔥 🔤 🔤 🔤 🔤
Открытка к празднику: https://github.com/tagd-tagd/heart
PS: Редакция @bashdays (Рома, Дима, Бухи, Маркетологи и остальные) присоединяемся к поздравлениям!
8е марта это как третий новый год (второй — старый новый год), но в разыкруче важнее для девушек.
Банальностей желать не будем, самое главное тебе — ЛЮБВИ и БАБОК, ну и если можно — не выноси своему мужику мозг и всё у тебя будет хорошо и отлично! Лови виртуальные тюльпаны:
🌷🌷🌷
Меня так с 23м никто не поздравлял🥳
🅰️ 🅰️
Открытка к празднику: https://github.com/tagd-tagd/heart
PS: Редакция @bashdays (Рома, Дима, Бухи, Маркетологи и остальные) присоединяемся к поздравлениям!
8е марта это как третий новый год (второй — старый новый год), но в разы
Банальностей желать не будем, самое главное тебе — ЛЮБВИ и БАБОК, ну и если можно — не выноси своему мужику мозг и всё у тебя будет хорошо и отлично! Лови виртуальные тюльпаны:
🌷🌷🌷
Меня так с 23м никто не поздравлял
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - tagd-tagd/heart
Contribute to tagd-tagd/heart development by creating an account on GitHub.
Еще один распространенный вопрос — а чё ты на proxmox крутишь?
ㅤ
Начнем с того, что я недавно взял Findarling N150 (16Gb) в Озоне. Эт такой мини компьютер, 15 на 15 сантиметров.
Сейчас у меня на нем пашут 11 lxc контейнеров. Сенсоры показывают 47 градусов, по нагрузке RAM 17%, ну и проц там несильно тротлит. Короче ничего ресурсоёмкого.
Чё я на нём кручу:
Qbittorrent - та самая качалка-кончалка, в основном киношки и сериалы на ночь, а больше от нее ничего и не нужно.
Jellyfin - морда для просмотра киношек, подключил нативный DLNA и вообще сказка, смотрим мультики по всей квартире да и для родственников удаленный доступ расшарил (заебался правда с микротиком, не моё железо). Сами добавляют в кончалку свои сериалы и потом спокойно наслаждаются прокрастинацией.
Sonarr - сервис для автоматической загрузки сериалов, дада, сам отслеживает выход новых серий и скармливает их в Qbittorrent. Прям конфета!
Radarr - сервис для автоматической загрузки фильмов, аналогично Sonarr, само там всё шуршит и наполняем медиатеку.
Jacket - индексер/интегратор торрентов для Sonarr и Radarr, хуй знает зачем, прикручивал по мануалам, видимо нужная штука.
И да, чтобы заработал Sonarr и Radarr пришлось пустить lxc контейнеры через определенные трехбуквенные сервисы (сделал через wireguard). Но можно и через проксю, там есть для этого все необходимые настройки.
Чтобы настроить всю эту связку нужно просто погуглить, мануалов дохуя.
Syncthing - сервис синхронизации файлов, делаю бекапы с виндовых машин (документы, фотки и т.п.) на те самые USB жесткие диски которые подключены к коробочке с Озона.
Pi-Hole - рекламорезка, поставил, потыкал, хуй с ним, пусть болтается. В основном использую как локальный DNS сервер. Сделал домены вида:
Nginx manager - точка входа на все сервисы, забил локальные домены из Pi-Hole, а дальше все само проксируется куда нужно. Ушел от айпишников, как-то поудобнее стало.
Samba - подключены шары с USB винтов, раздаю на винду, хуй знает зачем, видимо остатки легаси с малины переехали.
Runners - это просто lxc контейнер с раннерами, гитлаб, гитеа и т.п. Ничего лишнего, само что-то там делает и в ус не дует.
Dev - контейнер для разработки, пишу в нем скрипты, гоняюлысого ансибл. Подключаюсь к нему через VSCode как RemoteSSH.
Вот и всё, никаких плексов, nextcloud и т.п. хуйни не ставил, избыточно.
Аа, еще кластер кубера поднял для написания уроков для Linux Factory. Но кластер включаю только по необходимости, большую часть времени оно выключено.
Планирую еще поднять Proxmox Backup Manager, чтобы lxc контейнеры не проебались, хотя там особо ничего такого и нет если всё пиздой навернется. Но потыкать надо, визуально хоть посмотреть с чем это гавно едят.
Вообще я не фанат proxmox, был печальный опыт в проде. Перезагрузили сервак с proxmox, а он в кернел паник ушел и хуй знает чо с ним делать. А там 2 больших интернет магазина было у ребят развернуто, разом всё наебнулось. Ну и недавно на малине у меня такой-же факап произошел, даж разбираться не стал, оно того не стоит.
Отлично подходит поговорка — про яйца и корзину
Такие дела… А что у тебя на proxmox крутится? Пиши уже в комменты!
tags: #рабочиебудни #proxmox
—
🔔 @bashdays➡️ @gitgate
ㅤ
Начнем с того, что я недавно взял Findarling N150 (16Gb) в Озоне. Эт такой мини компьютер, 15 на 15 сантиметров.
Сейчас у меня на нем пашут 11 lxc контейнеров. Сенсоры показывают 47 градусов, по нагрузке RAM 17%, ну и проц там несильно тротлит. Короче ничего ресурсоёмкого.
В общем пепякой доволен, подкинул на него еще 4 терабайта винтов по USB и вообще сказка.
Чё я на нём кручу:
Qbittorrent - та самая качалка-кончалка, в основном киношки и сериалы на ночь, а больше от нее ничего и не нужно.
Jellyfin - морда для просмотра киношек, подключил нативный DLNA и вообще сказка, смотрим мультики по всей квартире да и для родственников удаленный доступ расшарил (заебался правда с микротиком, не моё железо). Сами добавляют в кончалку свои сериалы и потом спокойно наслаждаются прокрастинацией.
Sonarr - сервис для автоматической загрузки сериалов, дада, сам отслеживает выход новых серий и скармливает их в Qbittorrent. Прям конфета!
Radarr - сервис для автоматической загрузки фильмов, аналогично Sonarr, само там всё шуршит и наполняем медиатеку.
Jacket - индексер/интегратор торрентов для Sonarr и Radarr, хуй знает зачем, прикручивал по мануалам, видимо нужная штука.
Существует еще Lidarr для музыки, но мне подписки яндекса хватает с головой. Ну и еще куча всяких типа Animarr'ов, Hahuyar'ов.
И да, чтобы заработал Sonarr и Radarr пришлось пустить lxc контейнеры через определенные трехбуквенные сервисы (сделал через wireguard). Но можно и через проксю, там есть для этого все необходимые настройки.
Чтобы настроить всю эту связку нужно просто погуглить, мануалов дохуя.
Syncthing - сервис синхронизации файлов, делаю бекапы с виндовых машин (документы, фотки и т.п.) на те самые USB жесткие диски которые подключены к коробочке с Озона.
Но чет при синке 400 гигов оно раком встает (на винде ребутится падла), буду позже с этим разбираться. Ебучий оупенсорц!
Pi-Hole - рекламорезка, поставил, потыкал, хуй с ним, пусть болтается. В основном использую как локальный DNS сервер. Сделал домены вида:
torrents.local
, sonnar.local
и т.п.Nginx manager - точка входа на все сервисы, забил локальные домены из Pi-Hole, а дальше все само проксируется куда нужно. Ушел от айпишников, как-то поудобнее стало.
Samba - подключены шары с USB винтов, раздаю на винду, хуй знает зачем, видимо остатки легаси с малины переехали.
Runners - это просто lxc контейнер с раннерами, гитлаб, гитеа и т.п. Ничего лишнего, само что-то там делает и в ус не дует.
Dev - контейнер для разработки, пишу в нем скрипты, гоняю
Вот и всё, никаких плексов, nextcloud и т.п. хуйни не ставил, избыточно.
Аа, еще кластер кубера поднял для написания уроков для Linux Factory. Но кластер включаю только по необходимости, большую часть времени оно выключено.
Планирую еще поднять Proxmox Backup Manager, чтобы lxc контейнеры не проебались, хотя там особо ничего такого и нет если всё пиздой навернется. Но потыкать надо, визуально хоть посмотреть с чем это гавно едят.
Вообще я не фанат proxmox, был печальный опыт в проде. Перезагрузили сервак с proxmox, а он в кернел паник ушел и хуй знает чо с ним делать. А там 2 больших интернет магазина было у ребят развернуто, разом всё наебнулось. Ну и недавно на малине у меня такой-же факап произошел, даж разбираться не стал, оно того не стоит.
Отлично подходит поговорка — про яйца и корзину
Большая часть контейнеров поднята одной командой с сайта Helper Scripts
Такие дела… А что у тебя на proxmox крутится? Пиши уже в комменты!
tags: #рабочиебудни #proxmox
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Тренажёр для технических собеседований!
ㅤ
Довольно часто сталкиваюсь с вопросом от ребят — вот бы с кем-нибудь пройти интервью/собес...
Раньше бы я ответил так — ну дак пройди, накидай откликов, согласуй интервью да и сходи. Делов то.
Но сейчас скажу так — пройди интервью с GPT!
Мы живем в современном мире, надо использовать такие возможности. Код конечно лучше писать самому, но замутить технический собес вполне допустимо. Тем более это все можно сделать бесплатно, без камер и без вспотевших подмышек.
Тут даждикпик deepseek с этим заебись справляется, вот прям лично потыкал. Тут еще плюс, что ты можешь запросить ответ который от тебя ожидали. Либо попросить машину, чтобы она дала оценку твоему корявому ответу.
Как это работает
Короче, пиздуешь на ХеХеру, находишь вкусную вакансию, копируешь требования и скармливаешь это нейронке.
Предварительно пишешь вводные типа:
Ну и копипастишь требования с ХеХеру.
Всё блядь! В ответ получаешь вопросы, отвечаешь на них, получаешь оценку, при необходимости запрашиваешь правильные ответы и ссылки на литературу и источники.
Примеры вопросов из вакансии на девопс-джуна:
- Какие типы плейбуков вы создавали?
- В чем разница между
- Какие лучшие практики по оптимизации Docker-образов?
- Чем отличается контейнер от виртуальной машины?
- Что такое GitLab Runner и как он работает?
Можешь сразу в нескольких нейронках это замутить либо запросить дополнительные вопросы. + Можешь запросить тестовые задания и спокойно их порешать.
Ну и самое главное в конце не забудь запросить у него — рекомендации, по тому как сделать это лучше.
После таких тренировок, можно кидать отклик и получать 100500 офферов в секунду. Но при условии если ты реально проникся.
В общем еби эти нейронки в хвост и гриву, хоть что-то полезное они для тебя сделают.
С пятницей, береги себя, ну и хороших тебе предстоящих выходных!
tags: #рабочиебудни
—
🔔 @bashdays➡️ @gitgate
ㅤ
Довольно часто сталкиваюсь с вопросом от ребят — вот бы с кем-нибудь пройти интервью/собес...
Раньше бы я ответил так — ну дак пройди, накидай откликов, согласуй интервью да и сходи. Делов то.
Но сейчас скажу так — пройди интервью с GPT!
Мы живем в современном мире, надо использовать такие возможности. Код конечно лучше писать самому, но замутить технический собес вполне допустимо. Тем более это все можно сделать бесплатно, без камер и без вспотевших подмышек.
Тут даж
Как это работает
Короче, пиздуешь на ХеХеру, находишь вкусную вакансию, копируешь требования и скармливаешь это нейронке.
Предварительно пишешь вводные типа:
Привет, меня зовут Олег, мне 22 года, представь что ты технический директор, я пришел к тебе на собеседование на вакансию «переворачиватель пингвинов», проведи мне техническое собеседование по этим требованиям. Ты будешь задавать мне вопросы, а я буду на них отвечать.
Ну и копипастишь требования с ХеХеру.
Всё блядь! В ответ получаешь вопросы, отвечаешь на них, получаешь оценку, при необходимости запрашиваешь правильные ответы и ссылки на литературу и источники.
Примеры вопросов из вакансии на девопс-джуна:
- Какие типы плейбуков вы создавали?
- В чем разница между
git rebase
и git merge
- Какие лучшие практики по оптимизации Docker-образов?
- Чем отличается контейнер от виртуальной машины?
- Что такое GitLab Runner и как он работает?
Можешь сразу в нескольких нейронках это замутить либо запросить дополнительные вопросы. + Можешь запросить тестовые задания и спокойно их порешать.
Ну и самое главное в конце не забудь запросить у него — рекомендации, по тому как сделать это лучше.
После таких тренировок, можно кидать отклик и получать 100500 офферов в секунду. Но при условии если ты реально проникся.
В общем еби эти нейронки в хвост и гриву, хоть что-то полезное они для тебя сделают.
С пятницей, береги себя, ну и хороших тебе предстоящих выходных!
tags: #рабочиебудни
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Краткий экскурс для чего нужен влан (vlan).
🔤 🔤 🔥🔤 🔤 🔤 🔤 🔤
ㅤ
Недавно у меня возник вопрос как проектировать сеть. Почему делается разбиение сети именно так, а не иначе. Какие цели преследуются при разбиении сетей.
Статья исключительно моё мнение, которое может не совпадать с мнением профессиональных сетевиков, и может быть не совсем верна.
Сеть строится на основе vlan.
Задача: Создать сеть для дома.
Необходимые требования:
- Коммутатор 2 уровня сети
- Компьютеры с умением работы с vlan
Все ОС windows, кроме серверного исполнения не умеют работать с Trunk.
Сначала определяем какие сети не нужны для пересечения:
1) DMZ (внешняя сеть на сервере) (vlan 5) (
2) LAN (Внутренняя сеть на сервере) (vlan 100) (
3) Mgmt (сеть управления + сеть передачи служебной информации для серверов) (vlan 200) (
4) Сеть внутренняя недоверенная (wifi, printer, умные колонки, современные TV и другие недоверенные устройства) (vlan 300)(
5) Телефония (если есть) (
На каждую сеть создается свой пул ip-адресов.
Теперь можно приступать написанию схемы сети.
Примерную схему сети смотри на Картинке 1 👆
➡️ Теперь остановимся поподробнее на проектировании сети на гипервизорах:
Смотрим Картинку 2 👆
При настройке делаем бриджи на всех сетевых картах.
Но только на 1 интерфейсе создаем ip адрес (тот интерфейс, который будет находиться в vlan 200 (mgmt vlan).
Соответственно при создании виртуальных машин на самих серверах создаем интерфейсы и на этих вм добавляем ip.
При работе между серверами для работы используется mgmt интерфейсы.
Доступ к серверам будет осуществляться только с компьютера jump-client.
Все остальные сервера будут размещаться в соответствующих сетях.
В результате создается меньше коллизий на сети и сеть становится более защищенной.
Я бы эту статью бы не написал, если бы были нормальные статьи про разделения сетей и для чего это надо.
tags: #networks
—
🔔 @bashdays➡️ @gitgate
ㅤ
Недавно у меня возник вопрос как проектировать сеть. Почему делается разбиение сети именно так, а не иначе. Какие цели преследуются при разбиении сетей.
Статья исключительно моё мнение, которое может не совпадать с мнением профессиональных сетевиков, и может быть не совсем верна.
Сеть строится на основе 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
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
И на старуху бывает проруха...
ㅤ
🔤 🔤 🔥 🔤 🔤 🔤 🔤
Сегодня решил поделиться отрицательным опытом. Код, приведенный в статье лучше не использовать.
У меня возникла необходимость распарсить файл типа:
Видно, что однословные поля разделены пробелом, а многословные заключены в кавычки. Распарсить такой файл на awk можно, но не быстро. Нужно писать код.
А на bash - вроде просто:
Проверил — вроде работает. Классно, пишу цикл, проверяю на файле — не работает. Упрощаю код до минимума.
Очевидно, разбились по пробелам. Перепробовал кавычки — не выходит. Не придумал ничего лучшего, как использовать конструкцию:
Все работает как надо.
После этого я решил распарсить реальный лог apache.
Все работало прекрасно, но на определенной строчке все зависало на несколько секунд, а потом продолжалось. Начал разбираться, и когда понял, что происходит — чуть не поседел.
Там была инъекция:
Переменная
Ничего страшного. Просто пинг 6 раз на адрес. И этот пинг ИСПОЛНЯЕТСЯ, вызывая задержку. Но команда могла быть и другой. Спасибо дядям за доброту.
Проблема возникла из-за того, что оператор
В общем, если я раньше считал оператор
Вот такой опыт.
tags: #bash #рабочиебудни
—
🔔 @bashdays➡️ @gitgate
ㅤ
Сегодня решил поделиться отрицательным опытом. Код, приведенный в статье лучше не использовать.
У меня возникла необходимость распарсить файл типа:
xxx yy "zz zz zz zz"
Видно, что однословные поля разделены пробелом, а многословные заключены в кавычки. Распарсить такой файл на awk можно, но не быстро. Нужно писать код.
А на bash - вроде просто:
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
Все работает как надо.
После этого я решил распарсить реальный лог apache.
Все работало прекрасно, но на определенной строчке все зависало на несколько секунд, а потом продолжалось. Начал разбираться, и когда понял, что происходит — чуть не поседел.
Там была инъекция:
$(ping${IFS}-c${IFS}6${IFS}aa.bb.cc.dd)
Переменная
IFS
использовалась вместо пробела. Короче, команда выглядела так:ping -c 6 aa.bb.cc.dd
Ничего страшного. Просто пинг 6 раз на адрес. И этот пинг ИСПОЛНЯЕТСЯ, вызывая задержку. Но команда могла быть и другой. Спасибо дядям за доброту.
Проблема возникла из-за того, что оператор
eval
разворачивал не только мою переменную, а все переменные, в том числе и из лога, попутно выполняя команды.В общем, если я раньше считал оператор
eval
— бесполезным, то теперь я считаю его вредным.Вот такой опыт.
tags: #bash #рабочиебудни
—
Please open Telegram to view this post
VIEW IN TELEGRAM
1 63
Вот всё трём мы с тобой за бест-практики, но практически ничего не разбираем по бэд-практикам.
ㅤ
Давай это исправлять в контексте Bash скриптов.
Временами будет много, временами мало и банально, но постараюсь всё разжевать и сделать интересную выжимку из наблюдений.
Ну чё, готов? Тогда поехали!
Почему при копировании файлов, необходимо использовать кавычки?
Допустим, у тебя есть переменная
Если мы пишем:
То возникает проблема, Если имя файла содержит пробелы, то Bash ясен хуй разобьет эту строку на пробелы:
Команда превращается в такое:
И это воспримется интерпретатором как копирование нескольких файлов:
Дальше. Если в имени файла (
Ага. Теперь если в имени файла содержится символ
Как правильно?
Вот так:
Кавычки в данном контексте предотвратят разделение на пробелы и ошибочное расширение подстановок.
Но если сделать так:
Чтобы не быть «инвалидом и бараном» нужно после
Эти два тире напомнят
Каков итог?
Думаю ты и сам выводы сделал. Всегда пиздярь кавычки вокруг переменных в Bash.
Даже если работает без кавычек это ничего не значит, не ровен час получишь по ебалу.
В общем сразу мотай на ус эту тему, подстели соломку и пиши скрипты как профи.
tags: #bash #badpractices #bestpractices
—
🔔 @bashdays➡️ @gitgate
ㅤ
Давай это исправлять в контексте Bash скриптов.
Временами будет много, временами мало и банально, но постараюсь всё разжевать и сделать интересную выжимку из наблюдений.
Естественно будет серебряная пуля — как сделать правильно.
Ну чё, готов? Тогда поехали!
Почему при копировании файлов, необходимо использовать кавычки?
Допустим, у тебя есть переменная
$file
, в которой как ни странно хранится имя файла. И есть $target
, в ней мы указываем путь куда скопировать файл. Если мы пишем:
cp $file $target
То возникает проблема, Если имя файла содержит пробелы, то Bash ясен хуй разобьет эту строку на пробелы:
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
что дальше идут только файлы, а никакие-то флаги.Каков итог?
Думаю ты и сам выводы сделал. Всегда пиздярь кавычки вокруг переменных в Bash.
Даже если работает без кавычек это ничего не значит, не ровен час получишь по ебалу.
Например твой скрипт будет выполняться в другом окружении, где $IFS (разделитель слов) изменён или файлы содержат пробелы и спецсимволы.
В общем сразу мотай на ус эту тему, подстели соломку и пиши скрипты как профи.
tags: #bash #badpractices #bestpractices
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Продолжаем погружаться в Бэд-Практики!
ㅤ
В прошлом посте мы рассмотрели файлы, которые начинаются с дефиса и то, что команда
Как это победить мы с тобой уже знаем, завернуть в кавычки и кинуть два дефиса:
Ок. Минус этого метода — его нужно сука запомнить и не забывать использовать каждый раз при передачах файлов. Вообще не интуитивно.
Второй способ разруливания этой ситуации — указать путь к файлу.
Смотри. Если перед именем файла добавить
В этом случае
Ну и еще вариант на закуску.
Можно просто ебануть
Этот варик немного сэкономит ресурсы, тут не требуется дополнительных вычислений для обработки имен файлов. Но при условии, что у тебя немного файлов. Если их будет дохуя, то увы, будет тормозить.
Выводы
Лучший вариант — всегда указывать путь к файлу (относительный
tags: #bash #badpractices #bestpractices
—
🔔 @bashdays➡️ @gitgate
ㅤ
предыдущие посты о том, что это такое ищи по тегу #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/...
). Это избавит тебя от большинства проблем с файлами которые начинаются с дефиса.tags: #bash #badpractices #bestpractices
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет друзья, наш товарищ
ㅤ
Сюда она естественно не влезла, да и с форматированием тут беда, поэтому пришлось поднять сопроводительный блог для таких целей.
Так что запасаемся кофеём/пивком и камон 👇
➡️ Всё что нужно знать про CrowdSec
tags: #security
—
🔔 @bashdays➡️ @gitgate
Sf1nk5
подготовил внушительную статью про CrowdSec. За что ему объявлена благодарность.CrowdSec — это система защиты от кибератак, которая использует анализ поведения и коллективную защиту. Она похожа на Fail2Ban, но более мощная и современная.
ㅤ
Сюда она естественно не влезла, да и с форматированием тут беда, поэтому пришлось поднять сопроводительный блог для таких целей.
Так что запасаемся кофеём/пивком и камон 👇
tags: #security
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Вчера после статьи про CrowdSec много ребят обратились с вопросом — мужик, а чё за движок такой у твоего блога?
Отвечу сразу всем. Это не движок, это статика. И сделана она при помощи фреймворка MKDocs + Material.
ㅤ
Суть там простая, верстаешь статейки в
Скорость работы по сравнению с
Порог вхождения прям минимальный.
А самое главное — отлично написанная документация. Можно чёрта закостомить, реврайтить базовые вещи, js писать, полностью менять верстку. Но обычно коробочных приколюх уже достаточно.
Плюс к этому полно роликов на ютубе, как эту чачу заводить и размещать на серверах.
Базовый файл
В моём случае я просто подключил нативный плагин блога в
Больше боли мне доставило написать пайплайн для
Настоятельно рекомендую потыкать этот
И да, это отличный способ развернуть свою личную wiki и не ебстись со всякими конфлюенсами и т.п. Ну либо документацию к проектам к своим описывать тоже маст-хевная штукенция.
Кстати в GitGate оно как-то от Димы уже прилетало, но там про material не упоминалось.
Ладно, не смею тебя больше отвлекать, вечерком еще увидимся.
tags: #рабочиебудни #frameworks
—
🔔 @bashdays➡️ @gitgate
Отвечу сразу всем. Это не движок, это статика. И сделана она при помощи фреймворка MKDocs + Material.
ㅤ
Суть там простая, верстаешь статейки в
markdown
, пушишь в гит репу, оно собирается в статику и автоматом выкатывается в прод.Скорость работы по сравнению с
wordpress
просто ебейшая (статика хули). Сейчас занимаюсь SEO оптимизацией, роботсы, сайтмепы и т.п.Порог вхождения прям минимальный.
А самое главное — отлично написанная документация. Можно чёрта закостомить, реврайтить базовые вещи, js писать, полностью менять верстку. Но обычно коробочных приколюх уже достаточно.
Плюс к этому полно роликов на ютубе, как эту чачу заводить и размещать на серверах.
Базовый файл
requirements.txt
выглядит так:mkdocs
mkdocs-material
mkdocs-material-extensions
В моём случае я просто подключил нативный плагин блога в
mkdocs.yml
и немного его сконфигурял.plugins:
- search
- tags
- blog:
blog_dir: .
blog_toc: false
archive_name: Архив
archive_toc: false
archive_date_format: yyyy
archive_url_date_format: yyyy
authors_file: "{blog}/.authors.yml"
post_url_format: "{slug}"
post_date_format: short
pagination: true
pagination_per_page: 5
draft: true
draft_on_serve: true
post_readtime_words_per_minute: 300
Больше боли мне доставило написать пайплайн для
gitea
, но я поборол этого босса и вечерком скину наработки. Глядишь под гитхаб адаптируешь, там синтаксис почти один в один.Gitea использую для личных проектов, без всяких наворотов, встроенного CI/CD и раннера вполне хватает.
Настоятельно рекомендую потыкать этот
Mkdocs
с полезной нагрузкой Material
, я прям в восторге прибываю.И да, это отличный способ развернуть свою личную wiki и не ебстись со всякими конфлюенсами и т.п. Ну либо документацию к проектам к своим описывать тоже маст-хевная штукенция.
Кстати в GitGate оно как-то от Димы уже прилетало, но там про material не упоминалось.
Ладно, не смею тебя больше отвлекать, вечерком еще увидимся.
tags: #рабочиебудни #frameworks
—
Please open Telegram to view this post
VIEW IN TELEGRAM