Ну вот и отгуляли лето, впереди новый учебный год, подъемы в 6 утра и ожидание выходных. Но есть и плюсы, хотя…
Ладно, сегодня я тебе принес WatchYourLAN.
Эта хуёвина представляет собой лёгкий сетевой сканер с веб-мордой.
ㅤ
На днях выкатили вторую версию.
Основные фишки:
- Если в твоей сети появился пидор, она тебе сообщит
- Отправляет данные в графану через InfluxDB2
Ради прикола взгромоздил я на малинку WatchYourLAN. Завязал на графану и alertmanager и теперь получаю в телегу алерты, если в сети зарегистрировалось новое устройство.
Охуенно! Чем бы дитя не тешилось.
Запускается прям с докера одной командой:
Не забываем забить свои переменные. На вебморду можно попасть так:
В общем рекомендую потыкать, может кому пригодится для каких-то своих целей.
Официальная репка на гитхабе тут
tags: #utilites
—
🔔 @bashdays➡️ @gitgate
Ладно, сегодня я тебе принес WatchYourLAN.
Эта хуёвина представляет собой лёгкий сетевой сканер с веб-мордой.
ㅤ
На днях выкатили вторую версию.
Основные фишки:
- Если в твоей сети появился пидор, она тебе сообщит
- Отправляет данные в графану через InfluxDB2
Ради прикола взгромоздил я на малинку WatchYourLAN. Завязал на графану и alertmanager и теперь получаю в телегу алерты, если в сети зарегистрировалось новое устройство.
Охуенно! Чем бы дитя не тешилось.
Запускается прям с докера одной командой:
docker run --name wyl \
-e "IFACES=$YOURIFACE" \
-e "TZ=$YOURTIMEZONE" \
--network="host" \
-v $DOCKERDATAPATH/wyl:/data/WatchYourLAN \
aceberg/watchyourlan:v2
Не забываем забить свои переменные. На вебморду можно попасть так:
< IP >:8844
В общем рекомендую потыкать, может кому пригодится для каких-то своих целей.
Официальная репка на гитхабе тут
tags: #utilites
—
Please open Telegram to view this post
VIEW IN TELEGRAM
8 48 18
Когда собирался писать об этом операторе на ум пришла считалочка, которой меня научили в пионерском лагере.
А поскольку я сейчас не матерюсь, чтоб никто не догадался, перейду на старославянский алфавит.
Итак: Шёл Хер по херу, встретил Хера на херу, взял Хер Хера за хер, и к херам закинул нахер.
Вот, а сейчас говорят, что пионеров ничему хорошему не учили...
Есть два варианта использования:
1.
пример:
2. Перенаправление. Это штука крайне нужная и очень понятная. В других, нормальных ЯП она называлась бы open.
В Basic
В bash
В Basic
В bash
В Basic
В bash
В Basic
В bash
Приведу несколько полезных примеров
На код ошибки (типа errorlevel) это не влияет.
Стоп-стоп. Откуда взялся
Все помнят, что
Пример:
Если нужно закрыть 4, например, дескриптор за ненадобностью
tags: #bash © by Tagd Tagd
—
🔔 @bashdays➡️ @gitgate
А поскольку я сейчас не матерюсь, чтоб никто не догадался, перейду на старославянский алфавит.
Итак: Шёл Хер по херу, встретил Хера на херу, взял Хер Хера за хер, и к херам закинул нахер.
Вот, а сейчас говорят, что пионеров ничему хорошему не учили...
exec.Есть два варианта использования:
1.
exec command — билет в один конец. Для чего это нужно я так и не понял, может умные в комментах напишут. Перед выполнением команды, bash фактически завершается, управление передаётся команде. И все...пример:
exec echo 123 — результат очень красочный. Такой же, как и с любой другой командой.2. Перенаправление. Это штука крайне нужная и очень понятная. В других, нормальных ЯП она называлась бы open.
В Basic
open "filename.txt" for input as #3В bash
exec 3<fileneme.txtВ Basic
open "filename.txt" for output as #4В bash
exec 4>filename.txtВ Basic
open "filename.txt" for append as #5В bash
exec 5>>filename.txtВ Basic
open "filename.txt" for random as #6В bash
exec 6<>filename.txtПриведу несколько полезных примеров
exec 2>/dev/null — все сообщения об ошибках отправить по пути, указанному в считалочке.На код ошибки (типа errorlevel) это не влияет.
exec 1>filename.txt все сообщения, кроме ошибок отправить в файл.exec 1>filename.txt 2>&1 все сообщения, включая ошибки отправить в файл.Стоп-стоп. Откуда взялся
&? Легко запомнить. Это костыль. Если вы не укажите &, сообщения попадут в файл с именем "1".Все помнят, что
0=/dev/stdin 1=/dev/stdout 2=/dev/stderr. Остальные 3-9 можем использовать по собственному усмотрению.Пример:
#!/bin/bash
seq 1 3|tee 1.txt > 2.txt
exec 3<1.txt
while read -u3 L1;do
exec 4<2.txt
while read -u4 L2;do
echo $L1 $L2
done
done
seq — создаем два файла, по три строки в каждомexec 3<1.txt - открываем файл для чтения с дескриптором 3read -u3 L1 читаем из файла с дескриптором 3. Дальше все аналогично.Если нужно закрыть 4, например, дескриптор за ненадобностью
exec 4>&-man tee seq
help while read exec
tags: #bash © by Tagd Tagd
—
Please open Telegram to view this post
VIEW IN TELEGRAM
10 30 19
После того как я проверил на себе Suicide Linux, я всё проебал. Пришлось с нуля настраивать всё окружение.
В процессе настройки решил отказаться от zsh + oh-my-zsh и жить на чистом bin/bash.
ㅤ
Через пару дней понял, что мне не хватает «авто-подсказок». В zsh я использовал плагин zsh-autosuggestions, но а как быть с чистым башем? Там плагин через
И нашел я BLE.sh (Bash Line Editor). Звучит же?
Софтина полностью меня устроила, даж красненьким подсвечивает команды когда я хуйню пытаюсь ввести.
Устанавливается просто, клонируешь себе из гит репки файлы, компилируешь и в
Перезапускаешь сессию и получаешь подсказки по командам, которые ты ранее вводил.
Бле так Бле!
В репе есть мануал, там чет через курл-хуюрл ставится и всякие другие способы описаны. Выбирай какой тебе ближе.
Но как быть со сфистоперделками и новогодними ёлками? Там оформление добавить, нерд-фонты и т.п.
Ха, на этот случай есть штука oh-my-posh.
Ставится так:
Дополнительно ставишь темы оформления. Ну и потом не забываем всё это дело подключить в
В ключик
Темы визуально позырить тут. Итог ты можешь посмотреть на скриншоте к посту.
А завтра покажу как для всего этого дела ещё одну очень полезную штуку прикрутить.
tags: #utilites #рабочиебудни #bash
—
🔔 @bashdays➡️ @gitgate
В процессе настройки решил отказаться от zsh + oh-my-zsh и жить на чистом bin/bash.
ㅤ
Через пару дней понял, что мне не хватает «авто-подсказок». В zsh я использовал плагин zsh-autosuggestions, но а как быть с чистым башем? Там плагин через
.bashrc хуй поставишь.И нашел я BLE.sh (Bash Line Editor). Звучит же?
Софтина полностью меня устроила, даж красненьким подсвечивает команды когда я хуйню пытаюсь ввести.
Устанавливается просто, клонируешь себе из гит репки файлы, компилируешь и в
~/.profile подключаешь. Выглядит это так:git clone --recursive https://github.com/akinomyoga/ble.sh.git
make -C ble.sh
echo "source ble.sh/out/ble.sh" >> ~/.profile
Перезапускаешь сессию и получаешь подсказки по командам, которые ты ранее вводил.
Бле так Бле!
В репе есть мануал, там чет через курл-хуюрл ставится и всякие другие способы описаны. Выбирай какой тебе ближе.
Но как быть со сфистоперделками и новогодними ёлками? Там оформление добавить, нерд-фонты и т.п.
Ха, на этот случай есть штука oh-my-posh.
Ставится так:
curl -s https://ohmyposh.dev/install.sh | bash -s
mkdir ~/.poshthemes
wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/themes.zip -O ~/.poshthemes/themes.zip
unzip ~/.poshthemes/themes.zip -d ~/.poshthemes
chmod u+rw ~/.poshthemes/*.omp.*
rm ~/.poshthemes/themes.zip
Дополнительно ставишь темы оформления. Ну и потом не забываем всё это дело подключить в
~/.profileeval "$(oh-my-posh --init --shell bash --config ~/.poshthemes/capr4n.omp.json)"
В ключик
--config вставляем название понравившейся темы. Ну и оболочку указываем, я естественно захуярил туда bash. Темы визуально позырить тут. Итог ты можешь посмотреть на скриншоте к посту.
А завтра покажу как для всего этого дела ещё одну очень полезную штуку прикрутить.
tags: #utilites #рабочиебудни #bash
—
Please open Telegram to view this post
VIEW IN TELEGRAM
12 70 13
Привет. В дополнение к предыдущему посту про свистоперделки.
Чтобы каждый раз не вводить такую дичь:
Ключик можно автоматически добавлять в ssh-agent и тогда подключение будет выглядеть так:
Чтобы это провернуть, прописываем в ~/.profile
Первый блок проверяет запущен ли SSH агент, а если нет — запускает его.
ㅤ
Второй блок добавляет нужные ключи в агент. Посмотреть все ключи в агенте можешь командой
Вот и вся наука. Ну а теперь интерактивная часть.
Ну а чтоб тебе не скучно было, можешь написать башник и скинуть в комменты, который автоматически пробегается по всем ключам в папке ~/.ssh и добавляет их в агент.
Но учти что в этой папке могут быть косячные ключи, ключи с неправильными правами, да и всякие файлы вида config, known_hosts. Короче потребуется работа с эксепшенами.
Чей коммент с решением соберет больше всех реакций и будет заебись работать, закину приятный бонус. Поехали!
tags: #utilites #рабочиебудни #bash
—
🔔 @bashdays➡️ @gitgate
Чтобы каждый раз не вводить такую дичь:
ssh -i ~/.ssh/id_rsa user@xxx.xxx.xxx.xxx
Ключик можно автоматически добавлять в ssh-agent и тогда подключение будет выглядеть так:
ssh user@xxx.xxx.xxx.xxx
Чтобы это провернуть, прописываем в ~/.profile
if [ -z "$SSH_AUTH_SOCK" ]; then
eval $(ssh-agent -s) > ~/.ssh/ssh-agent
fi
ssh-add ~/.ssh/gitlab_rsa
ssh-add ~/.ssh/production_rsa
ssh-add ~/.ssh/home_rsa
Первый блок проверяет запущен ли SSH агент, а если нет — запускает его.
ㅤ
Второй блок добавляет нужные ключи в агент. Посмотреть все ключи в агенте можешь командой
ssh-add -L, а удалить всё из агента можно командой ssh-add -D. Вот и вся наука. Ну а теперь интерактивная часть.
Ну а чтоб тебе не скучно было, можешь написать башник и скинуть в комменты, который автоматически пробегается по всем ключам в папке ~/.ssh и добавляет их в агент.
Но учти что в этой папке могут быть косячные ключи, ключи с неправильными правами, да и всякие файлы вида config, known_hosts. Короче потребуется работа с эксепшенами.
Чей коммент с решением соберет больше всех реакций и будет заебись работать, закину приятный бонус. Поехали!
tags: #utilites #рабочиебудни #bash
—
Please open Telegram to view this post
VIEW IN TELEGRAM
14 35 12
Здрасти приехали, пятница!
Частый вопрос который задают ребята с проекта Linux Factory:
ㅤ
В gitlab есть встроенная херня, которая находится в Settings → Packages & Registries → Container Registry. Заранее не забудь выбрать нужный проект.
Там есть раздел: Cleanup Policies, в нём нажимаешь кнопку Set cleanup rules иии видишь еще кучу какого-то гавна.
Короче:
В этих штуках работают регулярные выражения, примеры этих регулярок можешь глянуть тут.
Еще момент, если заполнить Keep these tags, то это даст протекцию тегам и даже если их прописать в Remove these tags имейджы не будут удалены.
Заполняешь, сохраняешь и оно автоматически будет тебе все подчищать.
✔ Дополнительные варианты зачистки:
- удаляешь мышкой в UI самого гитлаба
- удаляешь через API самого гитлаба (например баш скриптом)
- используешь утилиты типа regclient или docker-gc
Такие дела, надеюсь было полезно. Давай, хороших тебе предстоящих выходных и береги себя!
UPD: от Малахитовая Штукатурка
а еще можно так зачистить:
tags: #devops
—
🔔 @bashdays➡️ @gitgate
Частый вопрос который задают ребята с проекта Linux Factory:
ㅤ
Как в gitlab registry чистить докер имейджы, а то там такая пиздец блядь каша после экспериментов.
В gitlab есть встроенная херня, которая находится в Settings → Packages & Registries → Container Registry. Заранее не забудь выбрать нужный проект.
Там есть раздел: Cleanup Policies, в нём нажимаешь кнопку Set cleanup rules иии видишь еще кучу какого-то гавна.
Короче:
Run cleanup — выбираешь как часто запускать зачисткуKeep these tags — теги которые не нужно зачищатьRemove these tags — теги которые будем удалятьRemove tags older than — ну тут ежу понятноВ этих штуках работают регулярные выражения, примеры этих регулярок можешь глянуть тут.
Еще момент, если заполнить Keep these tags, то это даст протекцию тегам и даже если их прописать в Remove these tags имейджы не будут удалены.
Заполняешь, сохраняешь и оно автоматически будет тебе все подчищать.
- удаляешь мышкой в UI самого гитлаба
- удаляешь через API самого гитлаба (например баш скриптом)
- используешь утилиты типа regclient или docker-gc
Такие дела, надеюсь было полезно. Давай, хороших тебе предстоящих выходных и береги себя!
UPD: от Малахитовая Штукатурка
а еще можно так зачистить:
sudo gitlab-ctl registry-garbage-collect -m
tags: #devops
—
Please open Telegram to view this post
VIEW IN TELEGRAM
13 47 17
Еще раз привет. В последнее время многие столкнулись с проблемой при запуске пайплайнов в гитлабе.
ㅤ
Требуется какая-то ебучая Verify my account, квест который не так просто пройти. Но есть способ это обойти, спасибо за наводку Akhmed Gvashev.
Пиздуем в Settings → CI/CD → Runners → Instance runners и отключаем Enable instance runners for this project.
Всё, дело в шляпе. А дальше регистрируешь свои локальные раннеры и запускаешь пайплайны хоть до посинения.
Пользуйтесь!
tags: #devops
—
🔔 @bashdays➡️ @gitgate
ㅤ
Требуется какая-то ебучая Verify my account, квест который не так просто пройти. Но есть способ это обойти, спасибо за наводку Akhmed Gvashev.
Пиздуем в Settings → CI/CD → Runners → Instance runners и отключаем Enable instance runners for this project.
Всё, дело в шляпе. А дальше регистрируешь свои локальные раннеры и запускаешь пайплайны хоть до посинения.
Пользуйтесь!
tags: #devops
—
Please open Telegram to view this post
VIEW IN TELEGRAM
13 51 23
Обычно bash используется для неинтерактивного выполнения скриптов. А что делать, если хочется чего-то интерактивного?
ㅤ
Можно использовать оператор read. По умолчанию он читает ту херню, которую пользователь пишет на клавиатуре. Ну, не всю херню.
В общем, тут возникают проблемы. Даже не так. ТУТ ВОЗНИКАЮТ ПРОБЛЕМЫ.
Проблем несколько, и они нихрена не решаются простыми способами:
1. Только простые клавиши генерят одиночные коды типа буквы, цифры, печатные символы.
2.
3.
4. Коды нажатых клавиш зависят от терминала, который у вас эмулируется.
5. Очень много клавиш используется в качестве "горячих", поэтому их обработка производится раньше, чем их обработает bash.
В общем - если вы умный человек - не используйте bash для обработки функциональных клавиш.
А если похожи на меня - приведу функцию, которая помогает минимизировать проблемы.
Поскольку не все клавиши генерят печатные коды, я не придумал ничего более умного, чем конвертнуть коды в hex-последовательность. Поверьте, работать со строкой в 10 символов проще, чем с управляющими символами.
Понятней.
Программа более-менее обрабатывает совместное нажатие
сохраните в файл
Под закрытым текстом объяснения для начинающих.
Поскольку программа простая - сильно комментировать не буду.
считывает 1 символ, потом возможно еще 4, но с малым временем ожидания. Если символ многобайтный - в буфере он уже есть.
Если символ начинается не с кода он должен быть однобайтным.
-число символов в строке.
Далее в цикле посимвольно преобразуем строку в hex, накапливая в переменной
команда перевода hex в char привожу для примера.
Для прикола попробуйте выполнить программу в разных терминалах (LxTerminal и tty1) и посмотреть на .
Поясню, в tty1 можно перейти из GUI , а вернуться обратно обычно
Ну, или не. посмотреть, куда возвращаться можно командой w . Даже маленькие разберутся.
В общем, терминал(ы) - штука сложная. И тот только теперь я начал немного понимать, нахрена нужна библиотека ncurses.
help read printf
man w printf
tags: #bash © by Tagd Tagd
—
🔔 @bashdays➡️ @gitgate
ㅤ
Можно использовать оператор read. По умолчанию он читает ту херню, которую пользователь пишет на клавиатуре. Ну, не всю херню.
В общем, тут возникают проблемы. Даже не так. ТУТ ВОЗНИКАЮТ ПРОБЛЕМЫ.
Проблем несколько, и они нихрена не решаются простыми способами:
1. Только простые клавиши генерят одиночные коды типа буквы, цифры, печатные символы.
2.
Стрелки, HOME, END... и особенно функциональные клавиши (F1-F12) генерят многобайтные коды.3.
Клавиши TAB ENTER SPACE вообще нихрена не выдают.4. Коды нажатых клавиш зависят от терминала, который у вас эмулируется.
5. Очень много клавиш используется в качестве "горячих", поэтому их обработка производится раньше, чем их обработает bash.
В общем - если вы умный человек - не используйте bash для обработки функциональных клавиш.
А если похожи на меня - приведу функцию, которая помогает минимизировать проблемы.
Поскольку не все клавиши генерят печатные коды, я не придумал ничего более умного, чем конвертнуть коды в hex-последовательность. Поверьте, работать со строкой в 10 символов проще, чем с управляющими символами.
Понятней.
Программа более-менее обрабатывает совместное нажатие
CTRL+, ALT+. Не обрабатывает нажатия нескольких клавиш.
#!/bin/bash
function GET_KEY(){
declare K1 K2 K=
declare -i i
read -rsn1 K1;read -rsn4 -t 0.001 K2
if [[ "$K1" != $'\x1b' ]];then
K2=
fi
K1="${K1}${K2}"
i=${#K1}
while ((i--));do
printf -v K2 "%02X" \"${K1:$i:1}\"
K=${K2}${K}
done
printf "%s" $K
}
clear
echo "TERMINAL="$TERM
KEY=1
while [ "$KEY" != "" ];do
KEY=$(GET_KEY)
echo $KEY
# echo -e "\x$KEY"
done
сохраните в файл
key2hex.shchmod +x ./key2hex.sh
./key2hex.sh
Под закрытым текстом объяснения для начинающих.
read -rsn1 K1;read -rsn4 -t 0.001 K2Если символ начинается не с кода
1b (ESC)${#K1}Далее в цикле
while ((i--));do Kecho -e "\x$KEY" Для прикола попробуйте выполнить программу в разных терминалах (LxTerminal и tty1) и посмотреть на
F5Поясню, в tty1 можно перейти из GUI
CTRL+ALT+F1ALT+F7Ну, или не
F7В общем, терминал(ы) - штука сложная. И тот только теперь я начал немного понимать, нахрена нужна библиотека ncurses.
help read printf
man w printf
tags: #bash © by Tagd Tagd
—
Please open Telegram to view this post
VIEW IN TELEGRAM
5 30 5
Здрасти. Еще один частый вопрос с проекта Linux Factory:
Давай симулируем ситуацию и попробуем что-то с этим сделать.
ㅤ
Для начала соберем имейдж, это будет простой nginx + свой конфиг, который будет копироваться с локальной машины в имейдж.
Создаем на хостовой машине пару файлов:
Dockerfile:
nginx.conf
Собираем имейдж:
Ждем, на экране бежит куча всякого непотребства. Это нормально. Ждем…
Проверяем:
Ага, все ок, выплюнуло что-то вроде:
Запускаем:
Проверяем:
Хуй там плавал. Ничо не стартануло… ошибок нет, куда смотреть?
Если контейнер вообще не запускается, то для начала смотрим логи:
1. Узнаем состояние контейнера:
Видим хуй с маслом:
2. Смотрим логи:
В
В логах видим ошибку:
Вот! С ней уже можно работать. Получается мы посмотрели логи, даже для незапущенного контейнера. Пиздуем в nginx конфиг и видим, что в 14й строке проебали точку с запятой.
Дополнительно можно посмотреть коды выхода:
Например, если код выхода
Это основные моменты отладки.
Ну а если контейнер все же запустился, но что-то не работает, сначала повторяем все вышенаписанное. Ну и дополнительно можешь подключиться к нему в интерактивном режиме:
Подставляешь id/name контейнера и выбираешь шелл, частенько bash и коробки не установлен, поэтому как вариант запускаешь sh.
А для визуализации слоев используем утилиту dive
Установка dive:
Открываем имейдж на анализ:
Подставляем id или имя — ИМЕЙДЖА (не контейнера)
Смотрим, охуеваем, закрываем.
Еще можно глянуть конкретный файл в контейнере:
Либо скопировать его себе на локальную машину:
Поправить и скопировать обратно в контейнер:
Перезапускаем контейнер с новым конфигом:
Такие дела! Если знаешь еще хаки и способы отладки контейнеров/имеджей, пиши в комменты, будет полезно!
tags: #devops #debug #docker
—
➕ @bashdays ➕ @gitgate
Я собрал докер имейдж, а контейнер вечно в ребуте либо вообще не запускается, чо делать и как отлаживать?
Давай симулируем ситуацию и попробуем что-то с этим сделать.
ㅤ
Для начала соберем имейдж, это будет простой nginx + свой конфиг, который будет копироваться с локальной машины в имейдж.
Создаем на хостовой машине пару файлов:
Dockerfile:
FROM nginx:latest
WORKDIR /etc/nginx
COPY ./nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
nginx.conf
user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name localhost;
location / {
return 200 'Hello, Docker!'
add_header Content-Type text/plain;
}
}
}
Собираем имейдж:
docker build -t my-nginx .
Ждем, на экране бежит куча всякого непотребства. Это нормально. Ждем…
Проверяем:
docker images
Ага, все ок, выплюнуло что-то вроде:
REPOSITORY TAG IMAGE ID CREATED SIZE
my-nginx latest b844ef77daa3 33 seconds ago 188MB
Запускаем:
docker run -d -p 80:80 my-nginx
Проверяем:
docker ps
Хуй там плавал. Ничо не стартануло… ошибок нет, куда смотреть?
Если контейнер вообще не запускается, то для начала смотрим логи:
1. Узнаем состояние контейнера:
docker ps -a
Видим хуй с маслом:
Exited (1) 4 minutes ago2. Смотрим логи:
docker logs --follow <id or name>
В
<id or name> подставляем айдишник либо имя контейнера:В логах видим ошибку:
invalid number of arguments in "return" directive in /etc/nginx/nginx.conf:15
Вот! С ней уже можно работать. Получается мы посмотрели логи, даже для незапущенного контейнера. Пиздуем в nginx конфиг и видим, что в 14й строке проебали точку с запятой.
Дополнительно можно посмотреть коды выхода:
docker inspect <id or name>
Например, если код выхода
ExitCode = 137, значит не хватило ресурсов, подкинь памяти и все взлетит. Наверное…Это основные моменты отладки.
Ну а если контейнер все же запустился, но что-то не работает, сначала повторяем все вышенаписанное. Ну и дополнительно можешь подключиться к нему в интерактивном режиме:
docker exec -it <id or name> bash/sh
Подставляешь id/name контейнера и выбираешь шелл, частенько bash и коробки не установлен, поэтому как вариант запускаешь sh.
А для визуализации слоев используем утилиту dive
Установка dive:
DIVE_VERSION=$(curl -sL "https://api.github.com/repos/wagoodman/dive/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
curl -OL https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_amd64.deb
sudo apt install ./dive_${DIVE_VERSION}_linux_amd64.deb
Открываем имейдж на анализ:
dive <id or imagename>
Подставляем id или имя — ИМЕЙДЖА (не контейнера)
Смотрим, охуеваем, закрываем.
Еще можно глянуть конкретный файл в контейнере:
docker exec -it <id or name> cat /etc/nginx/nginx.conf
Либо скопировать его себе на локальную машину:
docker cp <id or name>:/etc/nginx/nginx.conf /tmp
Поправить и скопировать обратно в контейнер:
docker cp /tmp/nginx.conf <id or name>:/etc/nginx/nginx.conf
Перезапускаем контейнер с новым конфигом:
Прикол в том, что тебе не нужно билдить новый имейдж, ты делаешь правки прям в контейнере.
docker exec <id or name> nginx -s reload
Такие дела! Если знаешь еще хаки и способы отладки контейнеров/имеджей, пиши в комменты, будет полезно!
tags: #devops #debug #docker
—
➕ @bashdays ➕ @gitgate
25 69 12
Оказывается не все знают как в гитлабе сделать приватную репу публичной.
➡️ На примере облачного гитлаба:
Пиздуем в Проект → Settings → General → Visibility, project features, permissions → Project visibility
ㅤ
Выбираем из выпадающего списка: private, public, internal
Если у тебя облачный гитлаб с группами, читай дальше.
➡️ На примере Self-Hosted:
В отличии от облачного гитлаба, здесь недоступны варианты public, internal. Это многих смущает и вводит в ступор. Если коротко — сгорают жопы!
Открываем проект c репозиторием, вверху слева будет название группы, у меня оно linuxfactory и следом название проекта. Тыкаем на название группы, попадаем примерно на такой урл: https://git.bashdays.ru/linuxfactor
Нажимает три точки справа сверху появляется всплывашка, выбираем → Group Settings.
Находим: Visibility level и выставляем видимость группы public.
Пиздуем опять на страницу проекта с репозиторием → Settings → General → Visibility, project features, permissions → Project visibility
И о чудо! Активируются пункты public и internal.
Если чо-то забыл, добавляй в комменты, тема реально муторная и многие на эти грабли частенько наступают. Да чо греха таить я сам прихуел от таких пиздостраданий.
Пользуйтесь!
tags: #devops
—
🔔 @bashdays➡️ @gitgate
Пиздуем в Проект → Settings → General → Visibility, project features, permissions → Project visibility
ㅤ
Выбираем из выпадающего списка: private, public, internal
Если у тебя облачный гитлаб с группами, читай дальше.
В отличии от облачного гитлаба, здесь недоступны варианты public, internal. Это многих смущает и вводит в ступор. Если коротко — сгорают жопы!
Открываем проект c репозиторием, вверху слева будет название группы, у меня оно linuxfactory и следом название проекта. Тыкаем на название группы, попадаем примерно на такой урл: https://git.bashdays.ru/linuxfactor
Нажимает три точки справа сверху появляется всплывашка, выбираем → Group Settings.
Находим: Visibility level и выставляем видимость группы public.
Пиздуем опять на страницу проекта с репозиторием → Settings → General → Visibility, project features, permissions → Project visibility
И о чудо! Активируются пункты public и internal.
Если чо-то забыл, добавляй в комменты, тема реально муторная и многие на эти грабли частенько наступают. Да чо греха таить я сам прихуел от таких пиздостраданий.
Пользуйтесь!
tags: #devops
—
Please open Telegram to view this post
VIEW IN TELEGRAM
53 33 9
Я тут решил поделиться впечатлениями. И хорошими и не очень. Вобщем, все в дом BashDays.
Недавно мне дали премию за написание статей для BashDays. Сразу скажу, что на нее я не рассчитывал, поэтомуохренел обрадовался и решил потратить ее на что-нибудь бесполезное, но приятно-интересное.
ㅤ
В общем, прикупил себе Безвентиляторный ПК Intel Celeron N2840 @ 2.16GHz 8Gb 128Gb 2 Lan 1Gb wi-fi Intel® Centrino® Advanced-N 6205. (далее писюк)
Проц выбрал именно такой из-за TDP 7W. На машине стояла Win10. Ну, я ее включил, залез на youtube. Измерил потребляемую мощность 12-15 Вт. Ну, короче, работать можно, если без претензий Корпус грелся, но я долго не работал. Снес.
Поставил pfsense. Установилась легко. Работает шустро. Но я не смог поднять точку доступа WI-FI. Интерфейс поднимается, но режим точки доступа не доступен. Немного погуглил, народ пишет, что pfsense и wi-fi AP не очень дружат, и рекомендуют просто купить дрочку доступа. Ой, как забавно опечатался. Даже исправлять не буду. Снес.
Поставил debian 12. Затем hostapd, dnsmasq, iptables. В общем, точка доступа поднялась с танцами и бубном, но, проверка скорости с помощью iperf3 показала, что ноут с этой точкой доступа работает на скорости около 35-37 Мбит/с.
Между тем, мой старичек keenetic 4G (KN-1210) RU выдает 80-90 Мбит/с. И это включая интернет канал до Нидерландов. В общем, полное разочарование. Да, это на 2.4 ГГц. На 5 мне попробовать было нечем. Снес.
После этого решил на пробу установить ipfire. Дистрибутив, специально заточен для периметрового маршрутизатора, но по функционалу, который можно доставить очень напоминает openwrt. (C самой openwrt я знаком чисто теоретически).
Про ipfire раньше никогда не слышал, прям сегодня почитал, и решил попробовать. Знаете, впечатление очень даже ничего. Ставится просто, web-интерфейс довольно удобный. (За исключением правил firewall. Но это я после pfsense такой привередливый:-)
Порадовала документация на сайте. Все очень простым английским языком. Да, один косяк. При установке, вначале указал язык русский и после перезагрузки в инсталляторе все тексты были квадратиками. Что-то парни со шрифтами намудрили.) Пришлось переставлять. Поставил, поднял точку доступа с пол-оборота, замерил скорость - 35-37Мбит/с. Грешу на wi-fi адаптер.
Заменить полноценно Keenetic не получилось. Да, из самого неприятного, писюк греется. Я пробовал поставить частоты по минимуму, производительности хватает, но все равно греется, хотя и значительно меньше.
Для проца температура совсем ерундовая, но для ссд и материнки условия не очень комфортные. Видимо придется колхозить вентилятор, тем более отверстия под 60мм есть.
Буду рад послушать о вашем опыте использования подобных игрушек. О проблемах и путях решения. Пишите в комментах, кто для чего использует и какой софт.
tags: #рабочиебудни © by Tagd Tagd
—
🔔 @bashdays➡️ @gitgate
Недавно мне дали премию за написание статей для BashDays. Сразу скажу, что на нее я не рассчитывал, поэтому
ㅤ
В общем, прикупил себе Безвентиляторный ПК Intel Celeron N2840 @ 2.16GHz 8Gb 128Gb 2 Lan 1Gb wi-fi Intel® Centrino® Advanced-N 6205. (далее писюк)
Проц выбрал именно такой из-за TDP 7W. На машине стояла Win10. Ну, я ее включил, залез на youtube. Измерил потребляемую мощность 12-15 Вт. Ну, короче, работать можно, если без претензий Корпус грелся, но я долго не работал. Снес.
Поставил pfsense. Установилась легко. Работает шустро. Но я не смог поднять точку доступа WI-FI. Интерфейс поднимается, но режим точки доступа не доступен. Немного погуглил, народ пишет, что pfsense и wi-fi AP не очень дружат, и рекомендуют просто купить дрочку доступа. Ой, как забавно опечатался. Даже исправлять не буду. Снес.
Поставил debian 12. Затем hostapd, dnsmasq, iptables. В общем, точка доступа поднялась с танцами и бубном, но, проверка скорости с помощью iperf3 показала, что ноут с этой точкой доступа работает на скорости около 35-37 Мбит/с.
Между тем, мой старичек keenetic 4G (KN-1210) RU выдает 80-90 Мбит/с. И это включая интернет канал до Нидерландов. В общем, полное разочарование. Да, это на 2.4 ГГц. На 5 мне попробовать было нечем. Снес.
После этого решил на пробу установить ipfire. Дистрибутив, специально заточен для периметрового маршрутизатора, но по функционалу, который можно доставить очень напоминает openwrt. (C самой openwrt я знаком чисто теоретически).
Про ipfire раньше никогда не слышал, прям сегодня почитал, и решил попробовать. Знаете, впечатление очень даже ничего. Ставится просто, web-интерфейс довольно удобный. (За исключением правил firewall. Но это я после pfsense такой привередливый:-)
Порадовала документация на сайте. Все очень простым английским языком. Да, один косяк. При установке, вначале указал язык русский и после перезагрузки в инсталляторе все тексты были квадратиками. Что-то парни со шрифтами намудрили.) Пришлось переставлять. Поставил, поднял точку доступа с пол-оборота, замерил скорость - 35-37Мбит/с. Грешу на wi-fi адаптер.
Заменить полноценно Keenetic не получилось. Да, из самого неприятного, писюк греется. Я пробовал поставить частоты по минимуму, производительности хватает, но все равно греется, хотя и значительно меньше.
Для проца температура совсем ерундовая, но для ссд и материнки условия не очень комфортные. Видимо придется колхозить вентилятор, тем более отверстия под 60мм есть.
Буду рад послушать о вашем опыте использования подобных игрушек. О проблемах и путях решения. Пишите в комментах, кто для чего использует и какой софт.
tags: #рабочиебудни © by Tagd Tagd
—
Please open Telegram to view this post
VIEW IN TELEGRAM
6 25 12
Хелоу мая диа френдз! Я повидал дохуя bash скриптов по зачистки старых бекапов, какие-то работают заебись, какие-то создают лишь видимость.
ㅤ
Заебись когда бекапы у тебя лежат на той же машине где ты их делаешь.
Запускаешь по крону команду
А чо делать когда бекапы «правильно» заливаются в облако s3 по протоколу swift?
Там
Для этих целей отлично подходит rclone, кто бы блядь мог подумать.
Работает так:
Показываем где лежит конфиг, конфиг представляет нечто такое:
Пишем непотребства в лог файл, чтобы потом посмотреть что там в кроне навыполнялось.
Указываем где чистим бекапы, задаем сколько бекапов нам оставить, в примере я оставляю за 3 последних дня. Бекапы у меня в каталогах по датам, добавляю ключик
Вешаем на крон и идем дальшеработать пинать хуи.
По моему отличное решение, и даже думать не пришлось.
Пользуйтесь на здоровье!
tags: #devops
—
🔔 @bashdays➡️ @gitgate
ㅤ
Заебись когда бекапы у тебя лежат на той же машине где ты их делаешь.
Запускаешь по крону команду
rm и паре с find и зачищаешь ненужное гавно которое старше определенного времени.А чо делать когда бекапы «правильно» заливаются в облако s3 по протоколу swift?
Там
find с rm уже не прокатит. Можно конечно изгаляться, но я в рот ебал изобретать очередной велосипед.Для этих целей отлично подходит rclone, кто бы блядь мог подумать.
Работает так:
/usr/bin/rclone --config ~/.config/rclone/rclone.conf \
--log-file /var/log/rclone-trasher.log \
-v delete selectel:backups/1c/ --min-age 3d --rmdirs
Показываем где лежит конфиг, конфиг представляет нечто такое:
[selectel]
type = swift
env_auth = false
user = bashdays
key = fuckyou
auth = https://auth.selcdn.ru/
endpoint_type = internal
Пишем непотребства в лог файл, чтобы потом посмотреть что там в кроне навыполнялось.
Указываем где чистим бекапы, задаем сколько бекапов нам оставить, в примере я оставляю за 3 последних дня. Бекапы у меня в каталогах по датам, добавляю ключик
rmdirs.Вешаем на крон и идем дальше
По моему отличное решение, и даже думать не пришлось.
Пользуйтесь на здоровье!
tags: #devops
—
Please open Telegram to view this post
VIEW IN TELEGRAM
29 51 12
Здарова! Годнота подъехала!
Если любишь копаться в «кишочках» эта штука тебе обязательно пригодится, называется Binsider.
Короче это хуйня на расте позволяет анализировать «Эльфов» (ELF бинарники).ㅤ
- Статический анализ: изучение структуры бинарного файла, включая секции, сегменты, символы и релокации.
- Динамический анализ: выполнение бинарного файла с отслеживанием системных вызовов и сигналов (strace/ltrace).
- Извлечение строк: поиск полезных строк (например, паролей или URL) внутри бинарного файла.
- Шестнадцатеричный дамп: просмотр содержимого файла в виде шестнадцатеричного кода с удобной визуализацией.
Инструкция по установке тут, есть докеры-хуёкеры и т.п.
Я собрал из исходников, делов 30 секунд:
➡️ Репка на гитхабе
➡️ Заценить на ютубе
Обязательно посмотри, рекомендую!
Ааа, еще всех вас с пятницей, хороших предстоящих выходных. Ну и самое главное — береги себя! Всех обнял🙃
tags: #debug #linux #utils #utilites
—
🔔 @bashdays➡️ @gitgate
Если любишь копаться в «кишочках» эта штука тебе обязательно пригодится, называется Binsider.
Я себе в арсенал ее добавил, штука охуительная, при условии если знаешь зачем оно тебе и как этим пользоваться. Я пока не знаю, но обязательно разберусь.
У хорошего девопса и бычий хуй веревка!
Короче это хуйня на расте позволяет анализировать «Эльфов» (ELF бинарники).ㅤ
- Статический анализ: изучение структуры бинарного файла, включая секции, сегменты, символы и релокации.
- Динамический анализ: выполнение бинарного файла с отслеживанием системных вызовов и сигналов (strace/ltrace).
- Извлечение строк: поиск полезных строк (например, паролей или URL) внутри бинарного файла.
- Шестнадцатеричный дамп: просмотр содержимого файла в виде шестнадцатеричного кода с удобной визуализацией.
Инструкция по установке тут, есть докеры-хуёкеры и т.п.
Я собрал из исходников, делов 30 секунд:
cd /tmp
VERSION="0.1.0"
wget "https://github.com/orhun/binsider/releases/download/v${VERSION}/binsider-${VERSION}-x86_64-unknown-linux-gnu.tar.gz"
tar -xvzf binsider-*.tar.gz
cd "binsider-${VERSION}"
./binsider
Обязательно посмотри, рекомендую!
Ааа, еще всех вас с пятницей, хороших предстоящих выходных. Ну и самое главное — береги себя! Всех обнял
tags: #debug #linux #utils #utilites
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
55 48 12
Сентябрь горит, как и моя жопа. Поставил я давеча на пятую малинку self-hosted гитлаб, чтоб к ребятам с LF быть поближе.
Всё бы хорошо, но в моменте пуша свеженького image docker в registry, я невзначай обнаружил, что в гитлабе его просто-напросто НЕТ!
ㅤ
Куда же он сука такая делся? В облачном есть, в self-hosted — хуй!
Ну думаю щас галочку где-нибудь в настройках поставлю и все у меня получится. Перерыл всё что только возможно. Но гитлаб тот еще выблядок парижской потаскухи. Нет галочки… Хуй сосали на вокзале!
Кароче. Чтобы включить Container Registry, нужно зайти в конфиг
Раскомментировать эту строчку:
И после этого запустить:
Пиздец, почему нельзя конфиг просто перечитать без перезагрузки всех сервисов и ожидания.
И о чудо! Заветный пункт меню Container Registry внезапно появляется. Тут и сказочки конец. НО НЕТ. При попытке зайти в этот новый пункт, получаем ошибку:
Ебутся блохи в суматохе!!! Идем читать документацию!
Fuck This Shit! Включаем поддержку Let's Encrypt в конфиге
Запускаем
Иииии… тадам, модуль registry запустился!
Квест успешно пройден, но мне пиздец как не понравилось!
Поэтому сношу я этот sefl-hosted гитлаб к хуям и возвращаюсь в облачный. А на малинку пожалуй воткну gitea, надеюсь там такой хуйни не будет. Или будет?
Ладно, в любом случае решение я тебе показал. Пользуйся!
tags: #devops
—
🔔 @bashdays➡️ @gitgate
Это пост изобилует грубыми и матерными выражениями и, в силу своего содержания, вообще не предназначен для просмотра лицам с нежной и хрупкой психикой.
Всё бы хорошо, но в моменте пуша свеженького image docker в registry, я невзначай обнаружил, что в гитлабе его просто-напросто НЕТ!
ㅤ
Куда же он сука такая делся? В облачном есть, в self-hosted — хуй!
Ну думаю щас галочку где-нибудь в настройках поставлю и все у меня получится. Перерыл всё что только возможно. Но гитлаб тот еще выблядок парижской потаскухи. Нет галочки… Хуй сосали на вокзале!
Да даже взять ситуацию перевода private репы в public.
Кароче. Чтобы включить Container Registry, нужно зайти в конфиг
/etc/gitlab/gitlab.rb и…Раскомментировать эту строчку:
gitlab_rails['registry_enabled'] = true
И после этого запустить:
gitlab-ctl reconfigure
gitlab-ctl restart
Пиздец, почему нельзя конфиг просто перечитать без перезагрузки всех сервисов и ожидания.
И о чудо! Заветный пункт меню Container Registry внезапно появляется. Тут и сказочки конец. НО НЕТ. При попытке зайти в этот новый пункт, получаем ошибку:
Docker connection error. We are having trouble connecting to the Container Registry. Please try refreshing the page. If this error persists, please review the troubleshooting documentation .
Ебутся блохи в суматохе!!! Идем читать документацию!
Реестр контейнеров автоматически включается и становится доступным в вашем домене GitLab, если вы используете встроенную интеграцию Let's Encrypt.
Fuck This Shit! Включаем поддержку Let's Encrypt в конфиге
gitlab.rb:letsencrypt['enable'] = true
letsencrypt['auto_renew'] = true
Запускаем
gitlab-ctl reconfigure && gitlab-ctl restartИииии… тадам, модуль registry запустился!
sudo gitlab-ctl status
ok: run: registry: (pid 20114) 0s
Квест успешно пройден, но мне пиздец как не понравилось!
Поэтому сношу я этот sefl-hosted гитлаб к хуям и возвращаюсь в облачный. А на малинку пожалуй воткну gitea, надеюсь там такой хуйни не будет. Или будет?
Ладно, в любом случае решение я тебе показал. Пользуйся!
tags: #devops
—
Please open Telegram to view this post
VIEW IN TELEGRAM
52 73 14
Здрасти. К делу!
Гиту откровенно насрать на права доступа файлов. И после клонирования репы, эти права будут установлены по umask пользователя.
ㅤ
Ситуация не критичная, но иногда случаются моменты когда нужно все эти права сохранить и после клона восстановить.
На помощь приходит костыль, всё в лучших традициях!
Пробегаемся по всем файлам и каталогам, записываем текущие права в файл
Ну и скрипт для восстановления прав:
Вот и вся наука. По желанию вешаешь это на Git Hook (post-checkout, post-merge) и автоматизируешь.
А еще есть git-restore-mtime, для восстановления метаданных времени модификации файлов.
Такие дела, изучай…
tags: #linux #bash
—
🔔 @bashdays➡️ @gitgate
Гиту откровенно насрать на права доступа файлов. И после клонирования репы, эти права будут установлены по umask пользователя.
ㅤ
Ситуация не критичная, но иногда случаются моменты когда нужно все эти права сохранить и после клона восстановить.
На помощь приходит костыль, всё в лучших традициях!
#!/bin/bash
find . -type f -exec stat --format='%a %n' {} \; > permissions.txt
git add permissions.txt
git commit -m "на залупе лешего вертели"
git push
Пробегаемся по всем файлам и каталогам, записываем текущие права в файл
permissions.txt, коммитим, пушим.Ну и скрипт для восстановления прав:
#!/bin/bash
if [ -f permissions.txt ]; then
while read perm file; do
if [ -f "$file" ]; then
chmod "$perm" "$file"
fi
done < permissions.txt
fi
Вот и вся наука. По желанию вешаешь это на Git Hook (post-checkout, post-merge) и автоматизируешь.
Как автоматизировать писал в этом посте, на примере можешь адаптировать.
А еще есть git-restore-mtime, для восстановления метаданных времени модификации файлов.
Такие дела, изучай…
tags: #linux #bash
—
Please open Telegram to view this post
VIEW IN TELEGRAM
18 63 14
Богатствуйте!
И снова полезный пост! Тунеядцев прошу расслабить жопы и перейти к концу, там анекдот.
ㅤ
Меня часто спрашивают… Нет, всем похуй. Короче:
Хм, я точно знаю что php на сервере есть! Так какого чернослива?
За годы практики, я выработал методику поиска сервисов, которые называются совсем не очевидно.
В примере выше, php сервис называется:
Ха! В жизни не догадаешься.
Первым делом пиздуем в:
И внимательно смотрим, если повезет, то там будет эта заветная строчка с ребутом и именем замудрёного сервиса. Возможно когда-то ты с ним имел дело, либо кто-то пытался иметь.
Если не повезло делаем так:
Эта штука гарантированно выплюнет тебе полное название сервиса, ну а дальше ты знаешь что с ним делать.
Можно конечно воспользоваться внешними утилитами, но не рекомендую. Потому что systemctl есть всегда, а внешних утилит - нет.
➡️ Сразу привыкай работать с инструментами из коробки и будет тебе счастье.
Все!
Ну и анекдот как обещал: еслиб у бабушки был бы хуй, она была бы дедушкой.
tags: #linux #debug
—
🔔 @bashdays➡️ @gitgate
И снова полезный пост! Тунеядцев прошу расслабить жопы и перейти к концу, там анекдот.
ㅤ
Меня часто спрашивают… Нет, всем похуй. Короче:
systemctl restart php-fpm
Unit php-fpm.service could not be found.
Хм, я точно знаю что php на сервере есть! Так какого чернослива?
За годы практики, я выработал методику поиска сервисов, которые называются совсем не очевидно.
В примере выше, php сервис называется:
php8.2-fpm-fuck-you!Ха! В жизни не догадаешься.
Первым делом пиздуем в:
history | grep php
И внимательно смотрим, если повезет, то там будет эта заветная строчка с ребутом и именем замудрёного сервиса. Возможно когда-то ты с ним имел дело, либо кто-то пытался иметь.
Если не повезло делаем так:
systemctl | grep php
php8.2-fpm-fuck-you.service
phpsessionclean.timer
Эта штука гарантированно выплюнет тебе полное название сервиса, ну а дальше ты знаешь что с ним делать.
Можно конечно воспользоваться внешними утилитами, но не рекомендую. Потому что systemctl есть всегда, а внешних утилит - нет.
Все!
Ну и анекдот как обещал: еслиб у бабушки был бы хуй, она была бы дедушкой.
tags: #linux #debug
—
Please open Telegram to view this post
VIEW IN TELEGRAM
25 98 24
Тыж в курсе, что терминал и консоль это не одно и тоже?
Нет? Спешу удивить, нихуя это не одно и тоже.
ㅤ
Хотя для меня и скорее всего для тебя терминал и консоль — один хуй.
Всегда бесит когда какой-то умник пытается мне объяснить разницу между - авторизацией и аутентификацией. Открываем форточку.
Хоть усрись, неважно как это называется, важно какой смысл ты в это закладываешь.
А смысл один - формочка с логином и паролем. И называть я это буду авторизацией, а захочу, назову - аутентификацией.
Вернемся к терминалам и консолям.
Терминалами раньше называли физическую хуйню с кнопками и телевизором. И вся эта прикольная штука была подключена к шкафу с бабинами.
В настоящее время мы пользуемся эмуляторами терминалов, это всякие Konsole, Gnome Terminal, Tilix, Guake и т.п. которые прекрасно себя чувствуют в GUI.
То есть эмулируем ту самую хуйню с кнопками и телевизором.
Теперь про консоль
Для консолей гуёвость не нужна. Консолька это что-то на низком уровне, некий интерфейс, который общается с операционной системой.
Например, отвалился второй жесткий диск прописанный в fstab, иксы не загрузились, тебя выкинуло как раз в консоль. Теперь ебись в ней.
Писал я тут недавно про Magic SysRq, вот это про консоль.
Кароче терминал захуярили, чтобы пользоваться консольными утилитами в GUI.
Терминал:
Консоль:
Заходим в консоль и отправляем на терминал:
Такие дела. Не заморачивайся. Изучай!
tags: #linux
—
🔔 @bashdays➡️ @gitgate
Нет? Спешу удивить, нихуя это не одно и тоже.
ㅤ
Хотя для меня и скорее всего для тебя терминал и консоль — один хуй.
Всегда бесит когда какой-то умник пытается мне объяснить разницу между - авторизацией и аутентификацией. Открываем форточку.
Хоть усрись, неважно как это называется, важно какой смысл ты в это закладываешь.
А смысл один - формочка с логином и паролем. И называть я это буду авторизацией, а захочу, назову - аутентификацией.
Вернемся к терминалам и консолям.
Терминалами раньше называли физическую хуйню с кнопками и телевизором. И вся эта прикольная штука была подключена к шкафу с бабинами.
У нас на заводе бухгалтерию так называли — «кабинет с бабинами». Бабины были моё почтение.
В настоящее время мы пользуемся эмуляторами терминалов, это всякие Konsole, Gnome Terminal, Tilix, Guake и т.п. которые прекрасно себя чувствуют в GUI.
То есть эмулируем ту самую хуйню с кнопками и телевизором.
Теперь про консоль
Для консолей гуёвость не нужна. Консолька это что-то на низком уровне, некий интерфейс, который общается с операционной системой.
Например, отвалился второй жесткий диск прописанный в fstab, иксы не загрузились, тебя выкинуло как раз в консоль. Теперь ебись в ней.
Писал я тут недавно про Magic SysRq, вот это про консоль.
Кароче терминал захуярили, чтобы пользоваться консольными утилитами в GUI.
Терминал:
/dev/pts/<x>: Псевдотерминальные устройства, используемые для терминальных сессий, таких как SSH или терминалы в графических средах. Они представляют собой виртуальные терминальные устройства, которые обычно создаются и управляются операционной системой.
Консоль:
/dev/tty/<x>: Устройства, представляющие собой физические или виртуальные терминалы на уровне ядра. Например, это могут быть устройства для текстовых консольных сессий или виртуальные консоли, предоставляемые ядром Linux.
Важно отметить, что /dev/tty без <x> также может обозначать текущее терминальное устройство, к которому привязан процесс, например, при работе в командной строке.
Заходим в консоль и отправляем на терминал:
$ echo "Bashdays here!" > /dev/pts/0
А еще про всякие vt100, xterm, ansi я писал тут, почитай, интересно.
Такие дела. Не заморачивайся. Изучай!
tags: #linux
—
Please open Telegram to view this post
VIEW IN TELEGRAM
26 71 27
Аутентификация, авторизация. Навеяло.
Есть два вида запоминания паролей - хранение и связанная генерация. Это когда ты вводишь логин, а программа на основании его и модификатора (соли) вычисляет пароль.
ㅤ
Хранить лучше в программах типа keepass и аналогах. Сейчас затронем тему генерации.
Есть такая известная программа как pwgen. Просто чудесная. Столько всего умеет. В том числе и связывать логин и пароль. Проблема только в том, что при генерации командная строка может попасть в history.
И пароль может быть немного скомпрометирован. Я написал для нее небольшую обертку, которая, как мне кажется, решает эту проблему.
Программа запрашивает логин, и с помощью ключевого файла и модификатора связывает логин и пароль.
Модификатор - это что-то типа парольной фразы при использовании ключа.
Модификатором может быть любая фигня, типа названия филиала, номер телефона, да просто набор букв, который вы всегда помните. И будете помнить вечно.
Ключевой файл тоже желательно сохранять в нескольких местах, поскольку при утрате восстановить пароль будет невозможно.
Модификатор может набираться с клавиатуры видимом и скрытом режимах. Все зависит от агрессивности коллектива.
В общем, для хранения паролей от госуслуг не рекомендую, а вот генерить пароли для почты сотрудников или от каких-нибудь сайтов - самое оно.
Да, совсем забыл, параметр PWGEN_OPT - дополнительные опции генерации пароля НЕЛЬЗЯ менять после начала эксплуатации программы.
Программа pwgen должна быть установлена.
Для debian
По умолчанию ввод модификатора отображаемый. Для параноиков - установить HIDDENMOD=1 результат работы примерно такой:
Если повторить ввод тютелька в тютельку пароли будут те же самые, что и требовалось.
➡️ Тыкни сюда, чтобы посмотреть описание работы программы.
Всё, пароли хранить не нужно - ввели логин и модификатор - получили пароли. При компрометации просто используете следующий. Если увеличить число генерируемых паролей - начальные пароли будут те же.
Почитать:
tags: #bash #linux © by Tagd Tagd
—
🔔 @bashdays➡️ @gitgate
Есть два вида запоминания паролей - хранение и связанная генерация. Это когда ты вводишь логин, а программа на основании его и модификатора (соли) вычисляет пароль.
ㅤ
Хранить лучше в программах типа keepass и аналогах. Сейчас затронем тему генерации.
Есть такая известная программа как pwgen. Просто чудесная. Столько всего умеет. В том числе и связывать логин и пароль. Проблема только в том, что при генерации командная строка может попасть в history.
И пароль может быть немного скомпрометирован. Я написал для нее небольшую обертку, которая, как мне кажется, решает эту проблему.
Программа запрашивает логин, и с помощью ключевого файла и модификатора связывает логин и пароль.
Модификатор - это что-то типа парольной фразы при использовании ключа.
Модификатором может быть любая фигня, типа названия филиала, номер телефона, да просто набор букв, который вы всегда помните. И будете помнить вечно.
Ключевой файл тоже желательно сохранять в нескольких местах, поскольку при утрате восстановить пароль будет невозможно.
Модификатор может набираться с клавиатуры видимом и скрытом режимах. Все зависит от агрессивности коллектива.
В общем, для хранения паролей от госуслуг не рекомендую, а вот генерить пароли для почты сотрудников или от каких-нибудь сайтов - самое оно.
Да, совсем забыл, параметр PWGEN_OPT - дополнительные опции генерации пароля НЕЛЬЗЯ менять после начала эксплуатации программы.
Программа pwgen должна быть установлена.
Для debian
sudo apt install pwgendeclare -r PWGEN_OPT='-1 --symbols --ambiguous --capitalize'
declare -r PASSLEN=15
declare -r PASSNUM=5
declare -r KEYFILE=${0%/*}/'1.jpg'
declare -l HIDDENMOD=0
declare -r PWGEN=$(which pwgen)
declare LOGIN
declare MOD MOD1
if [[ ! "$PWGEN" ]];then
echo pwgen not installed
exit 1
fi
if [[ ! -s "$KEYFILE" ]];then
echo keyfile "$KEYFILE" not found
exit 2
fi
read -p "Input login:" LOGIN
if [[ "1y" =~ "$HIDDENMOD" ]];then
read -s -p "Input modificator:" MOD;echo
read -s -p "Confirm modificator:" MOD1;echo
if [[ "$MOD" != "$MOD1" ]];then
echo "Modificator not confirmed"
exit 3
fi
else
read -p "Input modificator:" MOD;echo
fi
echo pwgen options: $PWGEN_OPT
echo "Login: $LOGIN"
$PWGEN $PWGEN_OPT -H"${KEYFILE}#${LOGIN}${MOD}" $PASSLEN $PASSNUM
сохраняем в файл passgen.sh
chmod +x passgen.sh
./passgen.sh
По умолчанию ввод модификатора отображаемый. Для параноиков - установить HIDDENMOD=1 результат работы примерно такой:
Input login:tagd@bashdays.ru
Input modificator:BashDaysTheBest
pwgen options: -1 --symbols --ambiguous --capitalize
Login: tagd@bashdays.ru
aig3ohkie.Wah4X
AiguW~u7vohphae
eiJa7ahxei.die!
FaeNa=phah9voh3
Kih]ahca3Hie7ke
Если повторить ввод тютелька в тютельку пароли будут те же самые, что и требовалось.
Всё, пароли хранить не нужно - ввели логин и модификатор - получили пароли. При компрометации просто используете следующий. Если увеличить число генерируемых паролей - начальные пароли будут те же.
Почитать:
help declare read
man pwgen
https://cheatsheets.zip
tags: #bash #linux © by Tagd Tagd
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Когда ты устанавливаешь софтину через apt или подобную херню, зачастую к софтине прилипают паразиты.
ㅤ
То есть Recommended packages. Ща покажу!
Смотри:
Ага, будет установлено 6 пакетов, включая паразитов — mailcap unzip.
Midnight Commander отлично работает без этих mailcap unzip.
Это так для примера, чтобы ты понял про что я.
Как избавиться от паразитов? Вот так:
Всё! На три пакета установится меньше (bzip2 это Suggested packages)
Как глобально избавиться от Recommended packages?
Создаем файл:
И вставляем в него:
Теперь ключик
Ну а чтобы для конкретного пакета установить паразитов:
Конец! Пользуйся на здоровье!
tags: #linux
—
🔔 @bashdays➡️ @gitgate
ㅤ
То есть Recommended packages. Ща покажу!
Смотри:
apt install mc
The following NEW packages will be installed:
bzip2 libssh2-1 mailcap mc mc-data unzip
6 newly installed.
Ага, будет установлено 6 пакетов, включая паразитов — mailcap unzip.
Midnight Commander отлично работает без этих mailcap unzip.
А прикинь, ставишь ты какую-нибудь phantomjs, а он дополнительно тянет KDE, на сервер где вообще нет иксов.
Это так для примера, чтобы ты понял про что я.
Как избавиться от паразитов? Вот так:
apt install mc --no-install-recommends
Recommended packages:
mailcap unzip
The following NEW packages will be installed:
libssh2-1 mc mc-data
3 newly installed.
Всё! На три пакета установится меньше (bzip2 это Suggested packages)
Как глобально избавиться от Recommended packages?
Создаем файл:
/etc/apt/apt.conf.d/99norecommendsИ вставляем в него:
APT::Install-Recommends "false";
Теперь ключик
no-install-recommends можно везде не пихать, паразиты отключены.Ну а чтобы для конкретного пакета установить паразитов:
apt-get install mc --install-recommends
Конец! Пользуйся на здоровье!
tags: #linux
—
Please open Telegram to view this post
VIEW IN TELEGRAM
13 201 46
Как ускорить установку пакетов
Берем для примера пресловутый
Почти 3 секунды. Приемлемо. Но если нужно поставить 100 пакетов, то в среднем это займет 300 секунд или 5 минут. Уже дохуя!
ㅤ
Давай оптимизируем этот процесс и превратим 300 секунд в 150, а то и меньше.
Устанавливаем утилиту eatmydata:
Устанавливаем
Хуясе, почти одна секунда, установка
Но почему? И что сделала eatmydata?
Короче говоря утилита игнорирует запросы на немедленное сохранение данных на диске (синхронизация).
Где это можно использовать?
Ну например на тестовых средах или в docker контейнерах. Везде, где целостность данных не критична, а важна лишь скорость.
Такие дела, изучай!
tags: #linux
—
🔔 @bashdays➡️ @gitgate
Берем для примера пресловутый
midnight commander и устанавливаем повторно + снимем бенчмарку.time apt install -y --reinstall mc
real: 2.977s
Почти 3 секунды. Приемлемо. Но если нужно поставить 100 пакетов, то в среднем это займет 300 секунд или 5 минут. Уже дохуя!
ㅤ
Давай оптимизируем этот процесс и превратим 300 секунд в 150, а то и меньше.
Устанавливаем утилиту eatmydata:
apt install eatmydata
Устанавливаем
midnight commander и замеряем время:time eatmydata apt install -y --reinstall mc
real: 1.204s
Хуясе, почти одна секунда, установка
mc прошла в два раза быстрее.Но почему? И что сделала eatmydata?
eatmydata предназначенная для ускорения операций записи на диск в Linux-системах, особенно при установке пакетов с помощью APT. Она временно отключает механизмы, которые обеспечивают сохранность данных при сбоях системы, такие как fsync, fdatasync, flock и msync, что позволяет уменьшить время записи данных на диск.
Короче говоря утилита игнорирует запросы на немедленное сохранение данных на диске (синхронизация).
Где это можно использовать?
Ну например на тестовых средах или в docker контейнерах. Везде, где целостность данных не критична, а важна лишь скорость.
Такие дела, изучай!
tags: #linux
—
Please open Telegram to view this post
VIEW IN TELEGRAM
16 84 23
Чтобы каждый раз не задрачивать жесткий диск операциями — чтение/запись, ядро Linux обычно сохраняет некоторую часть данных в памяти.
Представим ситуацию — у тебя на кухне гудит сервак, ты запускаешь на нем
Что это за покемон? Почему оно сломалось?
Потому что во время операции
Давай посмотрим:
Смотрим столбец buff/cache, в нем видим что-то вроде: 383Mi.
Это и есть те данные которые еще не успели записаться на диск и находятся в пограничном состоянии. Если сейчас выключат свет, все эти данные в памяти похерятся.
В Linux есть команда
Но если после
Зачистить можно так:
Хуячим командами в ядро и зачищаем buff/cache, теперь можно снова запустить
⚪ Очищает кэш страниц (page cache), который используется для кэширования содержимого файлов и каталогов.
⚪ Очищает только кэш объектов inode и dentry (данные о файловой системе, такие как пути и метаданные файлов).
⚪ Очищает как кэш страниц, так и кэш объектов inode и dentry.
Где применять?
1. Перед отключением устройства (umount)
2. Перед очисткой кэшей памяти (drop_caches)
3. После крупных файловых операций
4. В bash скриптах для безопасного завершения
А для анализа всех этих кешей, памяти, буферов и т.п. есть несколько утилит:
Пользуйтесь!
tags: #linux
—
🔔 @bashdays➡️ @gitgate
Представим ситуацию — у тебя на кухне гудит сервак, ты запускаешь на нем
apt update и внезапно отключают свет. Через минуту свет включают, ты запускаешь вновь apt update, а оно тебе орет:The package cache file is corrupted
Что это за покемон? Почему оно сломалось?
Потому что во время операции
apt update, часть данных была сохранена в памяти и данные просто не успели записаться на диск. Соответственно целостность файла с кешем была похерена.Давай посмотрим:
free -h
Смотрим столбец buff/cache, в нем видим что-то вроде: 383Mi.
Это и есть те данные которые еще не успели записаться на диск и находятся в пограничном состоянии. Если сейчас выключат свет, все эти данные в памяти похерятся.
В Linux есть команда
sync, которая позволяет насильно записать все данные из памяти на диск.Но если после
sync повторно запустить free -h, изменений ты не увидишь, потому что sync ничего не зачищает, а только записывает.Зачистить можно так:
sync; echo 1 > /proc/sys/vm/drop_caches
sync; echo 2 > /proc/sys/vm/drop_caches
sync; echo 3 > /proc/sys/vm/drop_caches
Хуячим командами в ядро и зачищаем buff/cache, теперь можно снова запустить
free -h и лицезреть меньший размер.Где применять?
1. Перед отключением устройства (umount)
2. Перед очисткой кэшей памяти (drop_caches)
3. После крупных файловых операций
4. В bash скриптах для безопасного завершения
А для анализа всех этих кешей, памяти, буферов и т.п. есть несколько утилит:
vmtouch, bpfcc-tools, dstat. Можешь потыкать на досуге.Пользуйтесь!
tags: #linux
—
Please open Telegram to view this post
VIEW IN TELEGRAM
16 83 24