cookie

Utilizamos cookies para mejorar tu experiencia de navegación. Al hacer clic en "Aceptar todo", aceptas el uso de cookies.

avatar

Bash Days | Linux | DevOps

Авторский канал от действующего девопса Самобытно про разработку, devops, linux, скрипты, тестирование, сисадминство, техдирство, пиэмство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue Полезняшки: @gitgate Чат: @bashday Инбокс: @onotollebot

Mostrar más
Publicaciones publicitarias
18 978
Suscriptores
+324 horas
+367 días
+75730 días

Carga de datos en curso...

Tasa de crecimiento de suscriptores

Carga de datos en curso...

Photo unavailableShow in Telegram
Так, пора закончить с этими картами. Короче, представляем ситуацию, что тебя нахуй уволили или не заплатили, а ты еще тот злой гений. Задача — нужно применить все свои навыки заподлостроения в инфраструктуре и знатно усложнить жизнь этим гадам. У тебя есть root доступ ко всему и ты отрабатываешь две недели. Условия — на тебя не должны подумать и взять за жопу. Пиши в комментарии свой гениальный план. Чей коммент наберет больше реакций, тому и карты в руки. Писать нужно не в чатик! А нажав кнопку под постом, это важно. Ну и условия розыгрыша я кидал ранее. Итоги подведем в следующую пятницу. Доставка по РФ и Беларусь. Пару колод отдадим вторым и третьим местам, но нужно будет подождать, на руках у меня их щас нет. Там ченить придумаем. Но если прям чешется, можешь заказать у Кати через Авито. Погнали сочинять! Может в будущем кто-то и воспользуется твоим гениальным планом 🥳
Mostrar todo...
27
Photo unavailableShow in Telegram
🚜 Синий трактор едет к нам Этот пост изобилует грубыми выражениями и, в силу своего содержания, вообще не предназначен для просмотра лицам с хрупким душевным миром. Про Gitlab! Заебали блядь, мне чо каждый день это гавно обновлять? Ладно бы там нажал кнопку как в wordpress и забыл. А нет, надо хуеву гору телодвижений сделать. И в 100% эта залупа с первого раза никогда не заводится, то миграции ручками надо запускать, то еще 10 версий предыдущих накатить и молиться. В прошлый раз вообще пришлось пайплайны переписывать, поломали совместимость.
Либо хуй пополам, либо пизда в дребезги, другого не дано.
А еще соль, что при обновлении мне приходится параллельно поднимать клон сервера, на случай если обновка сделает мозги, можно будет на старую версию переключиться. Удобство через край… И на закуску фаталити — обновку накатывать нужно поздно ночью, либо в выходные, когда разработчики в режиме AFK. Хуита какая-то! Можно и в будни, но заебут вопросами — а когда заработает?
Короче я такие апдейты на хую Лунтика вертел.
Хоть отдельного человека нанимай, чтобы каждый день обновки катил в три часа ночи. Что я буду с этим делать? НИЧЕГО! Пусть нахуй всё взламываеют и пиздят, заебали! Пардон. Накипело! ps: так, мне еще вам конкурс придумывать сегодня, так что чуть позже увидимся, пойду успокоительное пить да Зельду на свиче задрачивать. tags: #рабочиебудни — 🔔 @bashdays
Mostrar todo...
99
Photo unavailableShow in Telegram
ЕНОТ ищет таланты Одна из самых масштабных серверных инфраструктур в России ЕНОТ от VK ищет талантливых разработчиков и SRE, готовых работать с облачными хранилищами и базами данных, облачным решением one-cloud, а также системами метрик и мониторинга. Присоединяйтесь!
Mostrar todo...
10
🔥 Кишочки. Короче познавательное. В документации для команды eval довольно пространное описание. Давай сегодня с ней поковыряемся. Прежде чем выполнить какой-то код, интерпретатору требуется обработать его. Нужно найти команду, аргументы, различные перенаправления. Расширить параметры, фигурные скобки, тильда, переменные подстановка результатов выполнения команд, математика, арифметика, география, литература, подстановка имен файлов и т.п. Короче дохера всего. Полный список можешь найти в разделах SIMPLE COMMAND EXPANSION и EXPANSION выполнив:
man 1 bash
Ну дак вот, команда eval запускает эту обработку кода. Но прежде чем команда eval будет запущена, код должен быть обработан. На вход eval попадает код, который уже обработан и прошел проверку. Поэтому получается, что код обрабатывается два раза и только после этого выполняется. Очевидно? Совсем нет. Но вот оно так работает, чо с него взять. Эта возможность используется по-разному, например для генерации и последующего исполнения кода. Также если знать некоторые последовательности обработки кода, можно сгладить некоторые особенности самой обработки. Ниже примеры. При присваивании значения переменной, приведенная конструкция с фигурными скобками не расширяется. Расширение переменной в строке с командой echo происходит гораздо позже, чем расширение фигурных скобок. Поэтому используем eval. Первая обработка развернет переменную. Вторая, которая запустит eval, развернет конструкцию с фигурными скобками.
str={1..10}   
echo $str
eval echo $str
В результате получим:
{1..10}
1 2 3 4 5 6 7 8 9 10
Другой пример. Здесь из-за использования одинарных кавычек, переменной присваивается указанная строка, а не значение переменной. И обработка строки делает расширение переменной один раз. Получаем значение переменной s0. Количество обработок строки равно количеству eval плюс один.
(s0=100 ; s1='$s0' ; s2='$s1' ; echo "$s2")
(s0=100 ; s1='$s0' ; s2='$s1' ; eval echo "$s2")  
(s0=100 ; s1='$s0' ; s2='$s1' ; eval eval echo "$s2")
На экране ты увидишь:
$s1
$s0
100
А теперь более сложный пример. Если слева от оператора перенаправления указана не корректная строка, в этом случае для перенаправления будет использована только часть строки, всё что находится слева не будет учитываться. Это значит, что если ты откроешь файл на чтение и слева укажешь переменную содержащую нужный дескриптор, эта переменная не будет участвовать в перенаправлении. И раз не указан дескриптор, файл будет ассоциирован со стандартным потоком ввода. Решение. Делаем так, чтобы при первой обработке перенаправление было распознано как обычная строка и была расширена переменная. Тогда на второй обработке слева от оператора перенаправления будет стоять номер дескриптора из переменной.
(fd=6 ; exec "$fd"</dev/null) 
(fd=6 ; eval exec "$fd</dev/null")  
(fd=6 ; eval exec "$fd"\</dev/null)  
(fd=6 ; eval exec "$fd"'</dev/null')
В первой строке: /dev/null на stdin и пытается запустить 6. Круглые скобки использовались, чтобы не засорять текущую оболочку. И чтобы она не завершилась на первом примере. Из-за того что на её стандартный ввод повесили /dev/null. Проверяем какой дескриптор ассоциирован с устройством /dev/null.
bash -c 'shopt -s execfail ; fd=6 ; exec $fd</dev/null ; ls -l /proc/$$/fd'  
bash -c 'shopt -s execfail ; fd=6 ; eval exec $fd\</dev/null ; ls -l /proc/$$/fd'  
bash -c 'shopt -s execfail ; fd=6 ; eval exec "$fd</dev/null" ; ls -l /proc/$$/fd'
Этот «хак» с перенаправлением можно использовать для исследований. Когда требуется определённый диапазон дескрипторов. Почитать: man 1 bash, разделы:
# REDIRECTION  
# SHELL BUILTIN COMMANDS -> eval  
# SHELL BUILTIN COMMANDS -> exec  
# SHELL BUILTIN COMMANDS -> shopt
А завтра запускаем конкурс с картами. Моя ленивая жопа соизволила добраться до почты. Хороших выходных! tags: #bash — 🔔 @bashdays
Mostrar todo...
35
Photo unavailableShow in Telegram
🔥 Открытые консультации по Kubernetes от архитекторов Southbridge Лекций по кубу в интернете много, а желающих потратить время и разобрать ваши вопросы — мало. Мы решили это исправить! Southbridge — DevOps-аутсорсер, специализирующийся на k8s. Cреди экспертов — Сергей Бондарев, один из создателей флагманских курсов по Kubernetes учебного центра Слёрм. Первая консультация пройдёт 4 июля в 17:00. Сергей и его коллеги в прямом эфире будут отвечать на все ваши вопросы и делиться best practices по эксплуатации кубов. Для участия в консультациях мы собрали бота-помощника. В нём есть кнопка «Задать вопрос» — спросите у нас что-нибудь нужное! Без ваших вопросов ничего не случится. Так что спрашивайте и занимайте место на нашей встрече. Это бесплатно. 🙃 Ждём вас 4 июля! 🔗 ЗАДАТЬ ВОПРОС И ПРИЙТИ НА КОНСУЛЬТАЦИЮ Реклама ООО «Слёрм» ИНН 3652901451 erid: 2VtzqwQCwAg
Mostrar todo...
5
Отличный способ запихать все свои crontab джобы в git репозиторий и раскатывать по желанию на сервера. Подойдет для хейтеров всяких ансамблей, паппетов и других бродячих цирков абсурда.
По мотивам этого поста про факап с кронами и его восстановление через grep.
Короче создаешь репу в гите, создаешь текстовый файл supercron. И в этот файл переносишь все свои действующие джобы. Коммит && Пуш --форцед инда мастер оф паппетс. Ну а дальше элементарно. Накидываем чото подобное:
#!bin/bash

REPO_DIR=/tmp
CRON_FILE=/tmp/supercron
cd $REPO_DIR
git pull origin master
crontab $CRON_FILE
Суть — забрать из репы файл supercron и импортировать жопы джобы. Импорт осуществляется последней строкой crontab /tmp/supercron. Сразу предупрежу, твой /var/spool/cron/crontab/root перетрется без предупреждения содержимым файла supercron. Можешь этот скрипт повесить на крон и сервер «даст ёбу». Крон, который импортирует крон. 💃 Идеальная рекурсия. Ну и соответственно, если кто-то кроме тебя работает с сервером, все правки в кроне — теперь только через гит репу. А это уже мастхев, всегда будешь видеть, кто нахуевертил. Короче ништяк костыль. Инфраструктура как кот! Не благодари ) tags: #devops #bash — 🔔 @bashdays
Mostrar todo...
76
Photo unavailableShow in Telegram
🔆 Приглашаем вас на вебинар "Знакомство с MySQL InnoDB Cluster"! 🚀 🧠 Мы разберём все отличия кластерного решения InnoDB Cluster от обычной репликации. Вы узнаете, как настроить и запустить рабочий кластер, получите полное представление о возможностях и ограничениях этого решения. 👍 Наш вебинар станет находкой для системных администраторов Linux, администраторов баз данных (DBA) и всех, кто хочет познакомиться с InnoDB Cluster. Вебинар откроет новые горизонты в администрировании баз данных, позволив понять основные различия архитектуры кластера и традиционной репликации. 🏆 Спикер Николай Лавлинский — технический директор в Метод Лаб, PhD Economic Science, опытный руководитель разработки и преподаватель. ⏰ Занятие пройдёт 04 июля 2024 года в 19:00 по мск в рамках курса «Инфраструктура высоконагруженных систем». Доступна рассрочка на обучение! 👉 Зарегистрируйтесь для участия https://vk.cc/cxYXWx Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Mostrar todo...
5
Сегодня будем искать самое длинное слово в текстовом файле. На pure bash. Зачем? Джаст фор фан, чтоб мозги подразмять. А вообще эта задачка из методички для собесов. Создаем текстовый файл bashdays.txt с таким содержимым:
hello world хуйпиздаджигурда bashdays комутохеровато бидон
Пишем скрипт:
#!/bin/bash

longest=0
for word in $(<bashdays.txt)
do
    len=${#word}
    if (( len > longest ))
    then
        longest=$len
        longword=$word
    fi
done
printf 'Самое длинное слово %s и его длина %d.\n' "$longword" "$longest"
В результате получаем: Самое длинное слово «хуйпиздаджигурда» и его длина 16. Алгоритм таков: цикл проходит по каждому слову в файле, вычисляет длину текущего слова len=${#word} и сохраняет результат в переменную len. Ну и логика больше-меньше. Если знаешь способ короче, без использования внешних утилит, кидай в комменты, полайкаем. Вечером еще чтиво подъедет. На связи! tags: #bash — 🔔 @bashdays
Mostrar todo...
77
Разыгрывать будем 👆 только среди подписчиков могзотрах, чатика и полезняшек, королевство кривые ебал — мимо
Mostrar todo...
39
Сегодня подъехал экземпляр «Релиз», Лемитед блядь эдищен. Если моя ленивая жопа завтра соизволит сходить на почту, то завтра и разыграем эту колоду среди подписчиков нашего Пантеона.
Mostrar todo...
112
Elige un Plan Diferente

Tu plan actual sólo permite el análisis de 5 canales. Para obtener más, elige otro plan.