Линукс и DevOps Дни
2.03K subscribers
108 photos
8 videos
194 links
Самобытно про разработку, devops, linux, скрипты, тестирование, сисадминство, техдирство, пиэмство и за айтишную жизу.
Download Telegram
Здравия желаю! Сегодня расскажу про прикол с bash массивами.

А именно — в качестве индекса можно использовать арифметическое выражение.

Чо? Ну смотри, как здоровые люди работают с массивами:

arr=('huy' 'pizdec')

echo "${arr[@]}"
echo "${arr[0]}"
echo "${arr[1]}"


Всё здесь правильно, прям как в книжках! Прочитал и понял, что выведется на экран.

Кто не знает, символ «собакена» выведет все элементы массива.


✔️ А вот массив курильщика:

arr=('huy' 'pizdec')

echo "${arr[6%2]}"


Что думаешь эта херабора выплюнет? А тут «брат»... И выплюнет оно первое слово huy. Но почему?

Потому что гладиолус. Логично делим 6 на 2, получаем 3. Но у нас нет третьего элемента в массиве. WTF!!??

А мы тут как бы не делим! Не путай деление с «%».

Символ «%» означает — взять остаток от деления.


После деления 6 на 2 у нас получился остаток 0. То есть это как бы нулевой индекс массива, получаем huy.

Соответственно если сделать 7%2, то выведется слово - pizdec. Потому что после деления получился остаток 1.

Ну а чтобы получить 3 элемент массива, надо подобрать циферки. Ну например 5%3, получим остаток 2. И так далее. Ну ты понял.

Вот я вся математика. Хочешь запутать свои Bash скрипты и порадовать коллег? Нативная обфускация. Дерзай!

tags: #bash

🔔
Хуйня! Зато разомнёмся!
Грустно признавать, но сегодня под вечер будем ковыряться в кишочках и дебажить аномалию. Но оно того стоит!

Выполняем команду:

echo Shs | base64 -d  
Jase64: invalid input


И наблюдаем аномалию в названии утилиты: Jase64.

Из команды понятно, что утилита base64 при декодировании обнаружила ошибку в данных. Ошибка — не корректная длина закодированного текста (invalid input).

Но чо за херня с Jase64? Новая попа-группа Юры Шильникова-Томатного? Должно же быть Base64?

Если что-то пошло попесде, нам поможет «страус». Расчехляем strace.


Давай посмотрим что и куда пишет base64. Перенаправляем стандартные потоки вывода и ошибки в устройство /dev/null. Дополнительно говорим «страусу», чтобы выводил системные вызовы write.

Запускаем кишку:

с запущенной кишкой, обычно к практологу

LC_ALL=C strace -Yqqqyfe write -P /dev/null --signal=none bash -c 'echo Shs | base64 -d &>/dev/null'


Кратенько по ключам:

LC_ALL = страхуемся
Y = чекаем вызовы ввода-вывода
qqq = меньше мусора
y = показываем пути к файлам
f = чекаем дочерние процессы
e = выбираем вызовы write
P = ограничение трассировки
signals = не следим за сигналами

После запуска получаем:

[<base64>] write(1</dev/null>, "J\33", 2) = 2
[<base64>] write(2</dev/null>, "base64: ", 8) = 8
[<base64>] write(2</dev/null>, "invalid input", 13) = 13
[<base64>] write(2</dev/null>, "\n", 1) = 1


Уже поинтереснее. Разбираем.

- В первой строке происходит запись части декодированного текста в стандартный вывод (дескриптор 1).

- В следующих двух строках, в стандартный поток ошибок пишется имя утилиты и ошибка (дескриптор 2).

- Ну и последняя строка, запись новой строки.

Теперь снова смотрим первую строку и видим что системный вызов write пишет букву «J» и какой-то магический символ 33.

✔️ «Страус» по умолчанию выводит числовые значения непечатных символов в восьмеричной системе счисления. То есть 033 будет соответствовать символу ESC в кодировке ASCII.

И чо? А то, что для драйвера терминала, этот символ означает начало управляемой последовательности. Вот это поворот!

Скучная теория

Драйвер терминала это код, который распознает управляющие последовательности и интерпретирует их в действия. Например, перемещает курсор.

В моем случае, драйвер это эмулятор терминала (Terminal). А еще есть код в пространстве ядра, который реализует специальные устройства. И этот код может модифицировать данные проходящие через эту линию связи.

Схема терминала:

Bash write stdout -> /dev/pts/number Kernel_Space <- /dev/ptmx Terminal read

Terminal write -> /dev/ptmx Kernel_Space <- /dev/pts/number Bash read


Bash read это чтение команды, или сочетания клавиш например для редактирования строки.

Возвращаемся к Jase64

Для начала исключаем пространство ядра (Kernel_Space) и проводим проверку данных, которые поступили на устройство читаемое эмулятором терминала.

Видим что на устройстве эмулятора Terminal, данные пришли без искажений. Подозреваемым остается драйвер терминала.

write(30</dev/ptmx>, "\33[200~echo Shs | base64 -d \33[201"..., 33) = 33


Как это 👆 получить, я рассказал утром в этом посте.


И происходит следующее. Эмулятор терминала получив символ «J» отображает его, но потом натыкается на специальный символ ESC начало управляющей последовательности и слово base64.

Символ «b» распознаётся как часть управляющей последовательности и этот символ не отображается.

Многие терминалы не имеют никаких действий связанных с данной последовательностью «ESCb» и она просто отбрасывается.

Ниже пару примеров, когда часть последующего ввода распознаётся как завершение управляющей последовательности.

echo -ne 'J\033' ; sleep 3 ; echo base64 >&2  
echo -ne 'J\033[64' ; sleep 3 ; echo bashdays >&2


Вот такие вот приколы, вот такие вот кишочки. Нельзя просто так взять и насыпать в терминал всё что тебе захочется.

Если после каких-то действий, ты начал замечать аномалии, выполни команду reset и всё встанет на свои места.

Хорошая ст...
One Day Offer для DevOps

Всего за один день вы сможете пройти все этапы отбора, познакомиться с будущей командой и получить оффер. На какой проект мы приглашаем?

Облачная платформа SberInfra.Cloud — фундамент для всех сервисов Группы Сбер. Команда разрабатывает самый ответственный и масштабный слой облака — эластичный сервис виртуальных и физических серверов.

В работе мы используем Linux, Kubernetes, Ansible, PostgreSQL, MySQL, Redis.

Какие задачи будут в вашем планере:
✔️ Администрировать внутрибанковские системы: обеспечивать отказоустойчивость и высокую доступность сервисов.
✔️ Описывать «инфраструктуру как код» с помощью Ansible и Terraform.
✔️ Настраивать процессы CI/CD.
✔️ Настраивать мониторинг.

Масштабные проекты и работа в крупнейшем IT-сообществе ждут вас.

Регистрируйтесь на One Day Offer 8 июня 👌
Вендор и производитель IT-инфраструктуры, пользовательского и телеком - оборудования YADRO в поиске опытных DevOps-специалистов:

1️⃣ Senior DevOps engineer/Старший DevOps инженер
2️⃣ DevOps engineer (telecom)

Ты сможешь раскрыть свой творческий и инженерный потенциал в команде профессионалов, которые создают инновационные решения мирового уровня.

А ещё у тебя будут:

– Гибридный или удалённый формат работы;
– Возможность гибкого начала и окончания рабочего дня;
– Конкурентный уровень заработной платы и премирование по результатам работы;
– Возможность горизонтального и вертикального роста;
– Обучение за счёт компании: учебный портал с курсами и лекциями от экспертов, дополнительное профессиональное обучение, изучение английского, участие в конференциях;
– Личное участие в становлении процессов и продуктов, возможность увидеть результат своей работы;
– Большое инженерное сообщество, которое постоянно развивается;
– ДМС со стоматологией с первого дня, консультации юристов, психологов, экспертов по ЗОЖ и...
Привет. В пятницу пришел клиент с вопросом — а как вы нам пайплайны со сломанным докером починили после блокировки в РФ?

Вопрос был с явным «подъебом». Почему я так решил? Сейчас объясню.

Как большинство решило проблему? Правильно, прочитали хайповую тему с хуёкером и проксяки ну и в моменте пофиксили, включая продакшены.

Я тоже хотел провернуть нечто подобное, сделать за 5 минут, затрекать 8 часов, получить денежку. Гениальный план! НО, за годы появилось «чутьё».

Поэтому решено было сделать всё правильно — перенести официальные образы в инфраструктуру клиента и поправить пайплайны. По итогу накидал bash скрипт, забрал 200 образов, залил. Делов на полчаса.

Ты спросишь, а как обновлять образы? А никак, все образы зафиксированы на определенные версии, глупо использовать latest. На моей практике, ни раз новая версия образа ломала совместимости.

✔️ Вернемся к вопросу клиента.

На вопрос я честно и прозрачно ответил. Клиент одобрительно покивал головой и сказал:

Респект и уважуха. Я думал вы как и все, воспользовались инструкцией с хабра, а это категорически недопустимо по нашим политикам безопасности. Спасибо за работу, я никогда не сомневался в ваших компетенциях. Оплатим по двойному тарифу. Сделано быстро и профессионально.


Собственно в этом и скрывался «подъебон». Если бы я сделал как ВСЕ, получается, мне плевать на клиента, на его проекты и бизнес. Хотя отчасти так и есть, чо лукавить 😲

Естественно мне пришлось бы всё переделывать, не говоря уже про доверие и дальнейшее сотрудничество.

Всегда думай своей кабиной. Пофиксишь быстро, все обрадуются, получишь денежку, но через неделю будут яростно ебать в жопу. Когда инфраструктура встанет раком из-за какого-нибудь встроенного майнера в образ или MITM атаки.

В крайнем случае можешь поднять свою доверенную, личную проксюшку и через неё забирать образы.


Дело конечно твоё, с советами не лезу. Личные наблюдения.

Есть такая прекрасная поговорка — мой ишак, хочу еду, хочу ебу!

Так, что если ты CTO, задай вопрос своим девопсам и админам, как они решили эту проблему с образами. Будет прекрасный повод распилить их премию и устроить оргию на ретроспективе.

Короче нормально делай, нормально будет! Хорошей рабочий недели и береги себя!

tags: #рабочиебудни

🔔
Онлайн-запуск MaxPatrol VM 2.5
13 июня в 14:00 (мск)

Веб-приложения стали неотъемлемой частью ИТ-инфраструктуры и популярной точкой проникновения в периметр компании. По статистике, эксплуатация их уязвимостей входит в топ-3 методов реализации кибератак. CRM-системы, интернет-магазины, веб-порталы — все это находится под угрозой.

13 июня Positive Technologies представят новую версию системы MaxPatrol VM, которая выявляет уязвимости веб-приложений раньше, чем их обнаружат хакеры.

Подключайтесь, чтобы узнать, почему нужно включать веб-уязвимости в процесс vulnerability management, как правильно выстроить работу с ними и обеспечить защищенность внешнего периметра компании.
Здрасти. Наш товарищ Tagd Tagd написал для канала еще одну статейку, ловите. Предыдущая была тут. В остальном оставляйте свой фидбек в комментах.

👇👇👇

spr.sh


Решил написать справочник. Получился консольный гугл для бедных. Консольный справочник для поиска инфы по тегам.

В В ТЭГАХ КОНФИГА ИСПОЛЬЗОВАТЬ СИМВОЛ ПОДЧЕРКИВАНИЯ "_" НЕЖЕЛАТЕЛЬНО.

Вся инфа хранится в конфигурационном файле в виде:

# spb director ivanov ivan petrovich may
Иванов Иван Петрович
tel 123456789 director.ru
ats 12587
loip 10.10.18.07
birth 22.05.1956
https://ya.ru


# bash if then else fi
declare -i $COND=0
if [[ "$COND" -eq 1 ]];then
echo "FALSE"
else
echo "TRUE"
fi


Набираем spr.sh regexp mail и получаем все записи, содержащие эти оба тэга. Порядок не важен.

При поиске можно использовать "_" для уточнения.

spr.sh bcd   = вхождение bcd (найдет bcd, abcd, bcde, abcde)
spr.sh _bcd = начинается на bcd (найдет _bcd, _bcde)
spr.sh bcd_ = заканчивается на bcd (найдет bcd, abcd)
spr.sh _bcd_ = строго bcd (найдет bcd)


Обращаю внимание, поиск только по ВХОЖДЕНИЮ тэгов, но не комментов.

В общем, можно быстро получить список телефонов любого филиала, отдела, именинников в этом месяце... Или забить примеры кода и получить справочник для студентов/админов по конструкциям bash sed awk grep regexp в одном флаконе.

Если нужно что-то поправить: spr.sh edit и конфигурашка открывается в редакторе. Этот режим можно использовать для поиска средствами редактора по всему конфигу, включая комменты.

✔️ Описание скрипта:

EDITOR - в каком редакторе открывать конфиг (vim mcedit)
CONF - имя конфига получаем из текущего имени скрипта.
$# -eq 0 - если нет параметров - выводим help.
${0##*/} - bash-аналог basename
eval "$(which $EDITOR) $CONF" ищем редактор и открываем конфиг


Далее awk.

Передавать $* (параметры скрипта) внутрь через переменную не стал, сразу встроил в однострочник (да-да. это однострочник)

BEGIN{split("'"$*"'",s," ")} до начала чтения файла разбиваем тэги по разделителю " " и записываем в массив s. обработка строк файла: ($0 ~ /^#/)

Для строк, начинающихся с символа # (тэг-строка)

k0=$0 - сохраняем строку тэгов на время поиска.
gsub(/^#/, "# ") - добавляем пробел после #


Теперь поле №1

for(i=2;i<=NF;i++){$i="_" $i "_"} обрамляем тэги "_" для более удобного поиска.

p=1 и проверяем в цикле наличие КАЖДОГО тэга во всей строке.

($0 !~ s[i]) Если искомого тэга в строке нет, p=0 и выход из цикла.

$0=k0 - восстанавливаем строку тэгов.

Если p=1 - (флаг печати) выводим строки.

Обращаю внимание, изменение переменной p только в тэг-строках

Использовать для хранения учетных данных нежелательно. Для этого есть KeePassXC и аналоги.

#/bin/bash
declare -r EDITOR=nano
declare -r CONF=${0%.*}.conf
declare -r SCR=${0##*/}
if [[ $# -eq 0 ]];then
echo "Search by tag1 && tag2 && ... in $CONF"
echo "Usage: $SCR tag1 [tag2 ...[tagN]]"
echo "Example:"
echo "$SCR bcd ~> (seek bcd, abcd, bcde, abcde)"
echo "$SCR _bcd ~> (seek bcd, bcde)"
echo "$SCR bcd_ ~> (seek bcd, abcd)"
echo "$SCR _bcd_ ~> (seek bcd)"
echo
echo "To edit conf: $SCR edit"
exit
fi
if [[ "$1" == "edit" ]];then
eval "$(which $EDITOR) $CONF"
exit
fi
awk 'BEGIN{split("'"$*"'",s," ")}
{if($0 ~ /^#/){
k0=$0
gsub(/^#/, "# ")
for(i=2;i<=NF;i++){
$i="_" $i "_"}
p=1
for(i in s){
if($0 !~ s[i]){
p=0
break}}
$0=k0}
if(p){print}
}' "$CONF"


tags: #bash

🔔
Что делать если хочется поебаться с Bash, но мамка отключила тебе интернет?

Выход есть!

Я обычно всю эту трихомудию с синтаксисами, ключами и т.п. в голове не таскаю. Серой оперативки вроде хватает, но мозг ленивая штука.

Поэтому если что-то нужно подсмотреть, сразу в гугол. А в последнее время в gpt накидываю.

Зачем хранить фильмы на dvd дисках и mp3 скачивать, когда есть стриминговые сервисы.


Когда мы жили в пещерах и подтирались зайцами, таких ништяков у нас не было. А был какой-нибудь blackcat linux и ты. ВСЁ! Ну и фидошка временами.

Ответ на свой вопрос в фидошке иногда приходилось ждать неделями и то не факт.

Книги? Неа, максимум ZX-ревью и прочие нечитабельные клоны. А хотелось Башить!

Оставалось изучать исходники чужих скриптов, которые шли из коробки в дистрибутиве linux.

Ну и естественно man, в который особо никто не въезжал, потому что с английским были небольшие проблемы — заебешься по словарику переводить, а уроки английского успешно прогуляны.

И что самое интересное, это было гораздо эффективнее, чем в нынешние времена. Информация записывалась на подкорку. Как скилл — умение ездить на велосипеде.

А сейчас — прочитал книгу, вроде всё понятно, грейд — крепкий мидл. Прошла неделя, ты отупел и уже ничего не помнишь. Информация записалась в голову, но потом могз — блядь, говнище какое-то, нужно срочно это забыть, есть же интернет!

✔️ Короче, к чему это я.

Если пишешь на каком-то языке и нужны примеры конкретных функций или команд. Далеко ходить не надо, всё нужное хранится на твоём диске.

Давай заглянем на диск и посмотрим на примере Shell скриптов, которые валяются в /usr/bin, /usr/sbin, /bin, /sbin.

file /{,usr/}*bin/* | grep -Po '^.+?(?=:\s+.+?shell script)' | xargs grep -wl -m1 'getopts'


Команда идет по каталогам и ищет нужное слово, в нашем случае ищем пример работы с функцией «getops». По ключам расписывать не буду, интернет у тебя явно пока еще есть.

По итогу отработки этой кишки, получаем пути и имена файлов, где эта функция используется. Открываем и смотрим как оно применяется на практике.

Даже если оказался в глубокой жопе тайге без интернета, один на один с Linux, выход есть! В своё время люди на папирусе код писали. Было бы желание.

Пользуйтесь!

tags: #bash #linux

🔔
🚀 Приглашаем на звонок для начинающих DevOps'ов!

📅 Когда: 15го июня в 10.00 МСК
📍 Где: Онлайн, ссылка для подключения будет в группе DevOps фабрики

Ты узнаешь:
🔹 Что учить, чтобы стать DevOps специалистом
🔹 Какой начальный уровень нужен

На звонке от DevOps фабрики рассмотрим:

Хард скиллы: какие технические знания и навыки необходимы
Софт скиллы: как развивать коммуникативные и управленческие умения

Обсудим, как потренироваться с нужными технологиями и куда расти, чтобы достичь успеха в этой сфере.

🎤 Задай свой вопрос: Что предпринять в твоем конкретном случае? Мы поможем разобраться!

Ссылку опубликую в канале :

Не упусти шанс начать свой путь в DevOps с правильного старта!
Сегодня заумных простыней не будет, тем не менее следующая кишка на bash тебе пригодится.

strace -o "| grep -Eo '/home/[^\"]+' >&2" -zfe '/^open' mc


✔️ Делает она следующее

При запуске программы (в моём случае это mc), в терминал вываливается список всех файлов, которые программа открывает в домашнем каталоге.

Штука очень полезная для дебага. Когда не знаешь к каким файлам программа обращается, а очень хочется.

Эту команду можно усовершенствовать, поменяв пути и добавив например вызовы write. Тут уже от ситуации зависит.

При первом запуске mc я получил такой список:

/home/user/.config/mc/ini
/home/user/.config/mc/ini
/home/user/.config/mc/panels.ini.E4M2O2
/home/user/.config/mc/ini
/home/user/.config/mc/ini
/home/user/.config/mc/ini~
/home/user/.config/mc/ini
/home/user/.bash_history


Если в твоём сознании живёт стройный и прекрасный мир программ, и ты человек с утончённой душевной организацией, воздержись от использования этого инструмента, лучше сходи на pornhub.


Пользуйтесь!

tags: #bash #linux #debug

🔔
Есть ли DevSecOps в Самаре? На Positve Tech Day 18 июня он точно появится! 🙂

В Самаре впервые пройдет конференция Positive Tech Day от Positive Technologies, на которой соберутся топовые эксперты компании по безопасной разработке — они выступят на треке «DevSecOps на Волге», где расскажут об Application Security.

Так что если у вас еще не было планов на июнь — сохраняйте дату, приходите бесплатно послушать доклады и задать вопросы! Будет полезно как новичкам, так и тем, что уже давно в теме.

🤔 На «DevSecOps на Волге» вы узнаете:

• из чего состоит практика безопасной разработки и как ее внедрить;
• как защитить конвейер CI/CD и ничего не испортить;
• как выбирать и применять AppSec-инструменты;
• как выстроить взаимодействие между людьми, чтобы DevSecOps работал.

Участие бесплатное по предварительной регистрации.
Прочитал недавно в полезняшках — про кириллические символы, ну и пошел экспериментировать, но немного в другом векторе. Раскроем так сказать тему сисек.

Сегодня займемся поиском шрифтов в Linux, которые поддерживают русскую букву «А». И посмотрим какие из них могут использоваться совместно с утилитой convert.

Чо еще в субботу делать 🍷 Завтра пауза с постами, приведу к нам сюда еще единомышленников.

Для начала нужно узнать какие вообще шрифты в системе поддерживают этот символ. Для этого используем утилиту «fc-list» из пакета «fontconfig».

Для поиска возьмем код символа «0410» в utf-8. Он соответствует кириллической букве «А».

Также можно указать диапазон :charset=0410-044f (охватывает все заглавные и строчные буквы русского алфавита от А до Я) ну или язык :lang=ru.

✔️ Поехали! Выводим все шрифты, которые поддерживают кодовую точку «0410».

fc-list ':charset=0410' --format '%{file}\n'


Есть нюанс. В список могут попасть шрифты, которые будут содержать кодовые точки, но у них не будет изображений символов.

Далее сопоставляем найденные шрифты, с теми которые поддерживает утилита convert.

Утилита convert является частью пакета программного обеспечения ImageMagick. Это мощный инструмент для создания, редактирования, преобразования и отображения растровых изображений.


fc-list ':charset=0410' --format '%{file}\n' | grep -wof - <(convert -list font)


Чо тут происходит. Мы отдаём через pipe результаты отработки команды fc-list на стандартный ввод grep.

w = шаблон, соответствует слову
o = выводим только совпадения, а не всю строку
f = файл строки в качестве шаблона поиска

Конструкция <(convert -list font) это подстановка процессов. Доступна в системах, поддерживающих именованные каналы (FIFO) или метод именования открытых файлов через /dev/fd.

Она имеет вид: <(список) или >(список)

Запускается процесс список и его входной или выходной поток связывается с именованным каналом FIFO или одним из файлов в /dev/fd.

Имя этого файла передается в качестве аргумента текущей команде как результат подстановки.

Если использовать >(список), запись в файл будет давать входные данные процессу список.

Если используется <(список), файл, переданный в качестве аргумента, необходимо читать для получения результатов работы процесса список.

Получается в качестве аргумента команда grep получит файл. Содержимым которого будет результат работы команды convert -list font.

Проверяем:

echo <(convert -list font)
cat <(convert -list font)


В итоге получаем нужный список шрифтов.

  Font: URWGothic-Book
family: URW Gothic
style: Normal
stretch: Normal
weight: 400
glyphs: URWGothic-Book.otf
Font: URWGothic-BookOblique
family: URW Gothic
style: Oblique
stretch: Normal
weight: 400
glyphs: URWGothic-BookOblique.otf


Ну а дальше можем заряжать все это в bash скрипт и гордится, какие мы с тобой охуенные.

Для примера давай сгенерим кучу изображений с русской буквой «А» используя найденные шрифты.

#!/bin/bash  

code=0410
char=$(printf '%b' '\U'$code)
fc-list ':charset='$code --format '%{file}\n' |\
grep -wof - <(convert -list font) | while read line
do
name=${line##*/}
name=${name%.*}
convert -font "$line" -pointsize 48 label:"$char" ./${name}.png
done


После запуска скрипта, в каталоге появится портянка файлов с изображениями, учти этот момент, чтобы не засрать себе поапочку. Лучше сразу в tmp это делай.

У меня всё, не смею тебя больше отвлекать. Изучай. Увидимся!

tags: #bash #linux

🔔
Как 1С-разработчику без стресса перейти из Конфигуратора в EDT?

Ждем вас на практическом открытом уроке для начинающих и опытных разработчиков, администраторов и DevOps 1С, где мы разберем:

- процесс адаптации к разработке в EDT;
- различия в подходе к повседневным действиям разработчика в 1С;
- как выстроить постепенное освоение интерфейса EDT.

Спикер Юрий Пасхин — программист-разработчик в компании ЕАЕ-Консалт, опытный руководитель команд, архитектор и наставник.

Встречаемся 13 июня в 20:00 мск в преддверии старта курса «Профессиональная разработка в 1С:EDT + Git». Все участники вебинара получат специальную цену на обучение!

👉Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://otus.pw/otCu/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
И снова понедельник и снова на работу. Сегодня про оптимизацию и управляющие последовательности. Бест-практики, трувей ёпта!

Если в своих скриптах или программах ты часто используешь одинаковые управляющие последовательности, имеет смысл сохранить результаты работы утилиты tput в переменную.

Скучная теория

tput используется для управления терминалом и выполнения различных задач, связанных с его настройкой и управлением.

Управляющие последовательности — это специальные последовательности символов, используемые для управления поведением терминала. Они позволяют изменять цвета текста, перемещать курсор, очищать экран и выполнять другие действия, не изменяя сам текст.


✔️ Практика

Чтобы не усложнять, рассмотрим пример на основе clear. Эта команда очищает экран.

clear=$(tput clear)


Помещаем в переменную очистку экрана. Теперь проверяем:

printf '%s' $clear  
echo -n $clear


После выполнения одной из этих команд, экран терминала будет очищен.

А почему просто не выполнить команду clear без этих вонючих tp...
Умеете кодить и хотите узнать, в каком направлении можно развивать свою карьеру?
Интенсивы с упором на практику вам в помощь!

Зачастую на таких коротких программах не просто учат востребованным скилам, но и объясняют, в каких сферах и профессиях они нужны.
Например, недавно Школа анализа данных Яндекса анонсировала SRE Week.

На открытом интенсиве будут рассказывать как об эксплуатации больших информационных систем, так и о задачах SRE-специалистов: траблшутинге, SLA, capacity planning и многом другом. Это отличный шанс для разработчиков попробовать себя в новой сфере, а для студентов — построить траекторию развития в IT.

SRE Week пройдёт с 17 по 22 июня. Участие бесплатное. Доступ к лекциям дают всем зарегистрированным, однако, чтобы получить сертификат, нужно пройти отбор и успешно сдать итоговую работу.
Подайте заявку до 16 июня и слушайте лекции топовых экспертов
Привет. Завтра оказывается внеплановый выходной, придется вечером идти за пивом и досматривать «Задача трёх тел» и «Сёгуна».

И раз такие пироги, расскажу тебе про очередную хуйню, с помощью которой я в данный момент делаю себе ой как больно.

Все посты для этого канала я пишу в Obsidian, это не только текстовый редактор, но и вообще комбайн для сбора и структурирования информации.

Короче если ищешь куда складировать знания, рекомендую присмотреться к Obsidian, работает на любой операционке, включая мобилки.

И еще это основной инструмент адептов Zetelkasten.

Цеттелькастен (нем. Zettelkasten, буквальный перевод «ящики для заметок») — система ведения заметок и управления личными знаниями, используемая в исследованиях и учёбе.


Звучит это правда как — Флюгегехаймен!

Теперь про боли. В последни год я редко пишу код, совсем забросил свой любимый vim и успешно забыл все комбинации клавиш.

Ситуация конечно интересная — тратишь кучу времени на изучение комбинаций в vim, доводишь их до инстинктов и мышечной памяти. Но спустя месяц, все эти скиллы куда-то бесследно испаряются.

Походу как у бодибилдиров, накачал за год банки, на месяц сделал паузу и превратился снова в дрища. Ну пиздец же.

А чтобы не просрать эти скиллы, нужно ежедневно их применять. А как их применять, если нет необходимости?

Просто так дрочить вприсядку тоже не хочется, хочется чем-то полезным заниматься и не деградировать.

В общем в Obsidian есть нативная поддержка vim. Я конечно знатно прихуел, но воодушевился.

То есть я могу теперь писать для вас посты в комфортной для себя среде и не проёбывать скиллы по виму.

Это же прекрасно! 🤙

Правда я растерял всю свою прыть и поэтому приходится заново затачивать свои зажившие пальцы под аккорды вима.

Мыши кололись, плакали, но продолжали есть кактус…

Ты наверное предложишь мне писать посты сразу в виме, идея хорошая, но от Obsidian я тащусь не меньше чем от вима. Все же это немного разные инструменты.

Вот те ссылка на Obsidian чтоб не искать

Так что, теперь я совмещаю приятное с полезным. Люблю изобретать.

Может и тебя этот пост натолкнет на какие-то правильные мысли. И ты скрестишь своего бульдога с носорогом.

Кстати когда я в Obsidian включил режим VIM, он мне выдал интересный попапчик, в котором до включения режима, предложил пройти небольшой квест. Прям повеселило! 👇

tags: #рабочиебудни

🔔
Как говорится никогда не строй планы заранее. Вчера я успешно задрых и проебал момент с чаркой пива и сериальчиками. Ну хоть выспался, 12 часов сна пошли на пользу.

А сегодня я принес тебе Puter. Это операционка прям в браузере. Даже терминал есть, но урезанный.

Фишка этой операционки — ты можешь ее в докере поднять у себя и радоваться, прекрасно подходит для всяких малинок если иксы ставить прям впадлу. Ну и куча софта предустановлено, открывай и пиши код до посинения.

Вся эта кухня в оупенсорсе на гитхабе.

В демо версии есть хром браузер. Через него можно побегать по сайтам не светя свою жопку с айпишником.

Айпишники кстати там разные попадаются, сейчас мне показывает — Пиздастан Редмонд.

Ну ты понял, как этим можно воспользоваться 😲

Кстати отлично запускается порнохабина, даже ЗВУК есть!


Короче я принес, а ты уже сам смотри, мож где сгодится в хозяйстве. Увидимся!

tags: #services

🔔
This media is not supported in your browser
VIEW IN TELEGRAM
MaxPatrol SIEM — не делайте это сами 🦾
27 июня в 14:00 (мск)

💥 MaxPatrol SIEM берет на себя рутинную работу аналитика по мониторингу и управлению событиями.
Регистрируйтесь на онлайн-запуск MaxPatrol SIEM 8.2, чтобы узнать, как ML-модуль BAD 🤖 не только выдает второе мнение по событию в виде risk score, но и самостоятельно обнаруживает целенаправленные атаки.

Регистрируйтесь, чтобы узнать обо всех обновлениях системы и получить гайд по подключению источников. Авторы лучших вопросов получат памятные призы!

👉 Зарегистрироваться
Здрасти. Такое ощущение, что сегодня понедельник.

Вчера коллега принёс вопрос — часто встречаю в настройках терминала, выбор каких-то xterm, vt100, linux, rxvt и т.п.

Чо это такое и как влияет на потенцию?

Вопрос на самом деле хороший, но его в приличном обществе предпочитают не задавать. Потому что мало кто про это вообще задумывался. По итогу эту настройку игнорируют и оставляют по умолчанию.

Давай разберемся, что же это за зверь и какой вариант выбрать правильно.

TL;DR Выбирай xterm-256color

Все эти vt100, xterm и др. всё это типы терминалов. vt100 был разработан в конце 1970х, а xterm более современная версия. Но все равно все они уёбищные.

Поэтому каждый из нас выбирает что-то мастхевное, Tilix, Quake, iTerm и т.п. Их можно заточить под свои хотелки и максимально кастомизировать.

Давай посмотрим чем vt100 отличается от xterm.

Добавляем в .bashrc экспорт и перезаходим:

export TERM=vt100


Теперь выполняем:

echo -e "\e[31mHello Bashdays\e[0m"


И видим что управляющие символы не сработали. А ...