Bash Days | Linux | DevOps
23.3K subscribers
156 photos
24 videos
678 links
Авторский канал от действующего девопса

Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.

Автор: Роман Шубин
Реклама: @maxgrue

MAX: https://max.ru/bashdays

Курс: @tormozilla_bot
Блог: https://bashdays.ru
Download Telegram
Как-то мы с тобой познакомились с etckeeper, ну дак вот, есть еще такая штука — ChezMoi.

Это херня для управления dotfiles (конфигурационными файлами, которые обычно начинаются с точки, например, .bashrc, .vimrc, .gitconfig) на нескольких устройствах.

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

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

На убунту ставится так: snap install chezmoi --classic

Для других операционок мануальчик здесь.

Ну поставили и чо дальше? А дальше запускаем:

chezmoi init


Добавляем например .bashrc

chezmoi add ~/.bashrc


Эта команда скопирует bashrc в ~/.local/share/chezmoi/dot_bashrc

Теперь отредактируй файл:

chezmoi edit ~/.bashrc


И посмотрим изменения:

chezmoi diff


То есть началась вестись история изменений, что довольно удобно. Теперь например ты запортачил свой .bashrc в следствии экспериментов, как откатиться?

Запускаем:

chezmoi -v apply


Нажимаешь к пример «o» = overwrite.

Хоба! И bashrc успешно восстанавливается. Прекрасно!

Теперь как с гитом работать:

chezmoi cd
git add .
git commit -m "Initial commit"


git remote add origin git@github.com:$GITHUB_USERNAME/dotfiles.git
git branch -M main
git push -u origin main


В принципе стандартная практика, первой командой переходим в каталог ~/.local/share/chezmoi ну а дальше база гита.

Затем на другой машине делаем:

chezmoi init https://github.com/$GITHUB_USERNAME/dotfiles.git


Конфиги успешно подтягиваются. Если репа приватная, то на офф сайте есть чтиво как это настроить.

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

Сайт проекта: https://www.chezmoi.io/
На гитхабе: https://github.com/twpayne/chezmoi

tags: #utilites #linux

🔔 @bashdays➡️ @gitgate
Please open Telegram to view this post
VIEW IN TELEGRAM
10288
Отлаживал сегодня багу связанную с правами доступа. В суть произошедшего вникать не будем.

Главное, что багу помогла решить утилита — namei. Устанавливать не нужно, идет в коробке.

Утилита namei — разбивает путь до папки/файла на составляющие и выводит права доступа для каждой из них.


Из этого нихуя не понятно, давай просмотрим на практике.

У меня php работает под юзером bashdays. Но при открытии админки, нихуя не работает.

Проверяю путь до админки:

namei -l /var/www/bashdays/htdocs/wp-admin/index.php

f: /var/www/bashdays/htdocs/wp-admin/index.php
drwxr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x bashdays bashdays www
drwxr-xr-x bashdays bashdays bashdays
drwx--x--x bashdays bashdays htdocs
drwx------ root root wp-admin
-rw-r--r-- bashdays bashdays index.php


Хм… и вижу, что с правами каталога wp-admin что-то совсем не так.

Но почему не использовать ls -la?

ls -la  /var/www/bashdays/htdocs/wp-admin/index.php

-rw-r--r-- bashdays bashdays /var/www/bashdays/htdocs/wp-admin/index.php


Вот и ответ.

Ключи для namei:

l — показывает подробный вывод (long listing) для каждого компонента пути.
m — показывает права доступа (в виде числового значения, как ls -l).
o — показывает владельца и группу каждого компонента.
v — детализирует информацию о путях и ошибках.
x — показывает права доступа в виде rwx (читаемо).


Давай сравним

namei

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

ls

- показывает только содержимое текущего каталога
- показывает права только конечного узла
- показывает права доступа в текущем каталоге
- не показывает цепочку ссылок (только сами ссылки)
- меньше подходит для цепочек узлов.

Я namei пользуюсь достаточно редко, но метко. В основном руки заточены на ввод именно ls -la. Тут уж как привык. Возможно namei тебе зайдет.

Изучай.

tags: #utilites #linux

🔔 @bashdays➡️ @gitgate
Please open Telegram to view this post
VIEW IN TELEGRAM
31154
Нашел на просторах пиздатый генератор реверс-шелов, разнообразие способов просто зашкаливает.

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

Забирай, пригодится: https://www.revshells.com/

По реверс-шелам у меня есть отдельный пост с подробным мануалом.


🎄 Ну и еще раз с Наступающим! Нарезали салатиков?

tags: #utilites #linux #security

🔔 @bashdays➡️ @gitgate
Please open Telegram to view this post
VIEW IN TELEGRAM
1174
Тут как-то ребята интересовались как написать свою оболочку, что-то вроде своего Баш-беляш. Ну дак вот.

Нашел для тебя минималистичные исходники на «сиськах».

Проект называется «psh» и он сейчас реально пока очень маленький.

А это значит, тебе не составит труда просмотреть 10 сорцов и на их основе создать что-то своё. Ну конечно если ты немного шаришь за «сиськи». Хотя там и так всё на поверхности.

Если ты студент, можешь хорошо выебнуться своей длинной писькой перед преподами. И может тебя по телеку покажут, как когда-то создателя «BolgenOS» или антивируса Бабушкина.


➡️ Исходники тут / Демка тут

ps: А есть еще такой проект: mysh

tags: #utilites

🔔 @bashdays➡️ @gitgate
Please open Telegram to view this post
VIEW IN TELEGRAM
35
Пишу очередной урок для LF и понадобилось мне нагенерить мусорного трафика в прометеус. Чтобы ребятам показать визуально как это будет выглядеть в графане.

Тестировщикам (QA) кстати тоже эта хуйня отлично зайдет, хайлоад там устроить.

Для таких дел я обычно использую 2 утилиты.

1. Bombardier
2. Stress


Первая (Bombardier) отлично подходит для генерации паразитного http трафика.

bombardier -c 125 -n 10000000 http://localhost:8080


Вторая (Stress) можно нагрузить ядра процессора и позырить чо будет. Ну или над жестким диском надругаться или памятью.

stress --cpu 4
stress --hdd 100
stress --cpu 4 --vm 2 --io 1 --timeout 20


Ну а чтобы протестировать no space left on device просто генерим большой файлик удобным тебе способом.

Установка элементарная:

apt install bombardier stress


Эти утилиты отлично подходят для тестирования разнообразных алертилок, к примеру alertmanager. Нагнал синтетических данных, получил соплю в графане, алертилка тригернулась и накричала в чатик. Отладил, задеплоил.

Красота и удобно! Для этих дел есть еще всякие wrk, ab, hey и т.п. но с ними как-то у меня не сложилось.

Такие дела, бери на вооружение, мож сгодится в хозяйстве.

tags: #utilites #highload #qa

🔔 @bashdays➡️ @gitgate
Please open Telegram to view this post
VIEW IN TELEGRAM
113
Немного съедем с темы и решим задачку с монтированием виндового раздела (BitLocker) в Linux.

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

При попытке монтирования получишь ошибку — анкновн файлсистем тайп БитЛохер.

Всё решается с помощью утилиты dislocker.

sudo apt install dislocker


После установки создаем пару папок:

sudo mkdir -p /mnt/bitlocker
sudo mkdir -p /mnt/bitlockermount


Смотрим зашифрованные разделы fdisk -l ну или lsblk. Ну а дальше делаем финт ушами:

sudo dislocker <partition> -u<password> -- /mnt/bitlocker


Расшифровываем раздел, подставляем нужный partition и password. Partition берем тот что нашли через fdisk или lsblk. Что-то типа /dev/sdd1 /dev/sdc1.

Монтируем:

sudo mount -o loop /mnt/bitlocker/dislocker-file /mnt/bitlockermount


Чтобы подключить раздел только для чтения, добавь в обе команды ключ -r. Рекомендую все же подключать с этим ключом.

Если получил ошибку:

mount: /mnt/bitlockermount: wrong fs type, bad option, bad superblock on /dev/loop10, missing codepage or helper program, or other error.


То укажи явно тип файловой системы:

Для ntfs:

sudo mount -t ntfs-3g -o loop /mnt/bitlocker/dislocker-file /media/bitlockermount


Для exFat:

sudo mount -t exFAT-fuse -o loop /mnt/bitlocker/dislocker-file /media/bitlockermount


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

Для пароля восcтановления: -p<password>

Для открытого ключа: -c

Для BEK: -f <BEKFILE>

Заметь что после ключа -p нет пробела, это важно.


Ну вот и всё. Теперь ты умеешь подключить диски с BitLocker.

А что бы такой диск подключался автоматически, камон в fstab:

<partition> /mnt/bitlocker fuse.dislocker user-password=<password>,nofail 0 0

/mnt/bitlocker/dislocker-file /media/bitlockermount auto nofail 0 0


Подставляем свои значения и радуемся.

➡️ Репа dislocker тут, можешь глянуть что там у нее под капотом.

Кстати диски с битлокером отлично открываются в Fedora Silverblue из коробки (с помощью recovery password). По крайней мере в прошлом году точно открывались. Можешь ее на виртуалку поставить и развлекаться.

tags: #linux #windows #utilites

🔔 @bashdays➡️ @gitgate
Please open Telegram to view this post
VIEW IN TELEGRAM
57
Приветcвую вас, комрады!

🔤🔤🔥🔤🔤🔤🔤🔤🔤🔤

Есть довольно редкоземельная но полезная утилитка, обзывается она - Crane

Примеры использования:

Копирование образа между реестрами (без необходимости их пулить себе).

Бывало у вас такое, что нужно перенести образ из одного реестра в другой?

С crane это делается на раз-два:

crane cp gcr.io/shlyapa-project/executor:v1.7.0-debug myharbor.ru/shlyapa-executor:v1.7.0-debug


Эта команда скопирует образ executor:v1.7.0-debug из реестра gcr.io в ваш собственный реджистри myharbor.ru.

Просмотр содержимого образа:

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

С crane это проще простого:
crane export executor - | tar -tvf - | less


Здесь мы экспортируем файловую систему образа executor и просматриваем список файлов с помощью команды tar.

Извлечение конкретного файла из образа:

Нужно достать нужный файл из образа? Легко!
crane export executor - | tar -Oxf - etc/passwd


Эта команда извлечет файл passwd из директории etc образа executor и выведет его содержимое.

Сравнение конфигураций двух версий образа:


Хотите узнать, чем отличаются конфигурации двух версий одного образа? Пожалуйста:
diff <(crane config front:1.32 | jq) <(crane config front:1.33 | jq)


Здесь мы сравниваем конфигурации версий 1.32 и 1.33 образа front с помощью утилиты diff.

Получение размера образа:

Интересно, сколько весит ваш образ? Вот как это узнать:

crane manifest gcr.io/buildpacks/builder:v1 | jq '.config.size + ([.layers[].size] | add)'


Эта команда выводит суммарный размер конфигурации и всех слоев образа.

Изменение меток и аннотаций образа:

Вы можете добавлять или изменять метки и аннотации в существующем образе без необходимости его повторной сборки:
crane mutate myharbor.ru/shlyapa-project/bear_ass_image:tag --annotation "org.opencontainers.image.description=New description" --label "version=2.0"


Эта команда добавит или обновит аннотацию и метку в указанном образе.

Также можно доложить tarbar (архивы .tar .tar.gz .tgz), добавить тэг (удобнее чем в дефолтном докер клиенте), задать другой entrypoint и т.д.

И это ещё не всё)

Но это чем я пользую практически регулярно. + это 1 бинарь (на любимой многими GOшечке) что позволяет спокойно его использовать и в системах автосборки и упростить взаимодействие с контейнерам.

tags: #utilites #devops

🔔 @bashdays➡️ @gitgate
Please open Telegram to view this post
VIEW IN TELEGRAM
145
Как обычно люди используют screen:

screen
cd /usr/local/sbin
./db_import.sh


И потом закрывают терминал, а скрипт db_import.sh продолжает где-то там шуршать и делать свои делишки.

Потом возвращаются спустя время и делают:

screen -list

3393.pts-3.dev (Attached)

screen -x 3393.pts-3.dev

или

screen -r 3393.pts-3.dev


Убеждаются что скрипт завершил свою работу, ну и выходят, порой даже не закрывая screen сессию (3393.pts-3.dev).

Чем отличается -r и -x

-r (resume) = подключаемся к сессии которая в данный момент отсоединена, то есть к ней не подключены другие юзеры.

-x (multi-user mode) = подключаемся к сессии к которой уже кто-то подключен, то есть несколько пользователей могут мешать друг другу в рамках одной сессии.


Подход нормальный, никаких тебе ключей запоминать не нужно и т.п.

Но есть такой вариант:

screen -dmS имя_сессии bash /путь/к/скрипту.sh


dmS это параметры для запуска screen в фоновом режиме (detached mode) с именем сессии.

d = запускает сессию в отключенном (detached) режиме.

m = создаёт новую сессию, даже если она существует.

S = имя сессии


Команда выше создаст сессию screen и запустить скрипт в фоновом режиме. А самое главное отпустит терминал и ты сможешь дальше в нём работать.

И самая киллер-фича — после отработки скрипта, screen сессия автоматически закроется и после выполнения команды: screen -list список будет пуст.

Еще можно так:

screen -X -S "script0$scriptID" stuff "^C"


script0$scriptID = указывает на сессию с именем, здесь $scriptID это переменная, содержащая идентификатор или значение, которое будет подставлено в команду.

stuff = передаёт текст или последовательность символов в сессию screen, как если бы их ввел пользователь.


На закуску.

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

Я раньше просто закрывал окно с терминалом и сейчас вижу что много кто так делает.

Все просто, прожимаем CTRL+A и затем «d». Ты отключаешься от сессии, переходишь в интерактивный режим с терминалом, а скрипт продолжает шуршать в фоне.

А как посмотреть выхлоп скрипта если сессия закрыта?

Добавь в свой скрипт логирование и обработку экспешенов, пусть оно в файлик пишет результаты своей работы. Нахуй тебе через screen потом ебаться все это просматривать.

Буквально вчера увидел как инженер с утра запустил распаковку базы на сервере, через пару часов у него мигнул интернет, ssh сессия с сервером превратилась в тыкву! Начинайте сначала!

Если запускаешь на сервере что-то очень долгое и не хочешь быть к этому привязан, используй screen! Это мастхев для подобных процедур. По крайней мере сохранишь время и нервы
.

Вот и вся наука. Изучай!

tags: #linux #utilites #bash

🔔 @bashdays➡️ @gitgate
Please open Telegram to view this post
VIEW IN TELEGRAM
73
Вот те очередная пепяка, которую я обнаружил в bash скрипте у коллеги. Сначала не понял, а потом как понял.

Называется — aria2.

Короче это консольная мильти-кончалка, поддерживает протоколы HTTP(S), FTP, SFTP, BitTorrent и Metalink. Реализована многопоточность и работает с чанками.

Видал да!

Авторы софтины обещают x10 к скорости скачивания даже если у тебя интернет работает как гавно и теряются пакеты.

Ну хуй знает, у меня и так интернет быстрый, попробую потом на 3g потестить.


Можно алиас сделать типа:


alias wget="aria2 -x 10 $1"


И заменить вегетину на эту вертихвостку c 10тью потоками.

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

Больше инфы тут:

➡️ Официальный сайт
➡️ Репка на гитхабе

Потыкай, с виду штука годная, почти 40к звезд на гитхабе.

tags: #utilites #linux

🔔 @bashdays➡️ @gitgate
Please open Telegram to view this post
VIEW IN TELEGRAM
64
Привет, один из наших подписчиков попросил анонсировать его пепяку. Она уже пролетала в gitgate, но ничего страшного, пусть и тут полежит. Тем более штука маст-хэвная.

TENV Ёпта!

Если кратко, TENV это консольный менеджер для управления версиями Terraform, Terragrunt, OpenTofu, Atmos.

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

Ты скажешь — блядь, да есть же например tfenv и asdf, зачем очередной велосипед?

Во-первых, автора TENV зовут Александр, а не «Аннадурай Сатьямурти Чидамбарампиллаи». А это уже о чем-то говорит!

Ну и, во-вторых, все эти утилиты не поддерживают OpenTofu, Terragrunt и т.п. К тому же, требуют много консольных костылей/зависимостей и хуёва работают НЕ на Linux.

asdf не поддерживает автоматическое переключение версий на базе спецификации версии Terraform / OpenTofu внутри проекта с помощью HCL файлов. В целом, asdf скорее переключалка по запросу, а tenv более заточен под OpenTofu/Terraform проекты.


Установка:

LATEST_VERSION=$(curl --silent https://api.github.com/repos/tofuutils/tenv/releases/latest | jq -r .tag_name)
curl -O -L "https://github.com/tofuutils/tenv/releases/latest/download/tenv_${LATEST_VERSION}_amd64.deb"
sudo dpkg -i "tenv_${LATEST_VERSION}_amd64.deb"


Сейчас лично потыкал, всё работает как часики. После установки запускаем tenv, выбираем из списка (стрелочками и на пробел) что установить и жмем ENTER.

НО, так как хашикорпы — письки (This content is not currently available in your region), в РФ надо трафик прогнать через одно место, чтобы вытащить бинари терраформа.

Вот тут я бы пожелал автору добавить киллер-фичу, сделать чтобы tenv обращался к таким заблокированным серверам не самостоятельно, а например через какую-то прокладку. Тогда сука цены бы не было!

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


В общем рекомендую потыкать и поддержать проект звездами. Годнота!

➡️ Страница проекта и документация

tags: #utilites #devops

🔔 @bashdays➡️ @gitgate
Please open Telegram to view this post
VIEW IN TELEGRAM
62
Давно хотел попробовать эту штуку и попробовал. Штука называется iVentoy.

iVentoy это PXE сервер. Если уж совсем простым языком, то это сервер который раздаёт исошники.

Чтобы установить операционку тебе не нужна никакая флешка и т.п.

Выставляешь в биосе сетевую загрузку и устанавливаешь на выбор любой дистрибутив.

iVentoy
из коробки дружит и с легаси биосом и с efi, так что хуёвина универсальная. Можно поднимать сервер и по Linux и под Windows.

iVentoy is an enhanced version of the PXE server. With iVentoy you can boot and install OS on multiple machines at the same time through the network.

iVentoy is extremely easy to use, without complicated configuration, just put the ISO file in the specified location and select PXE boot in the client machine.

iVentoy supports x86 Legacy BIOS, IA32 UEFI, x86_64 UEFI and ARM64 UEFI mode at the same time.

iVentoy support 110+ common types of OS (Windows/WinPE/Linux/VMware)


Тыкаем палкой:

wget https://github.com/ventoy/PXE/releases/download/v1.0.20/iventoy-1.0.20-linux-free.tar.gz
tar -xzf iventoy-1.0.20-linux-free.tar.gz
mv iventoy-1.0.20 /opt/iventoy
cd /opt/iventoy


Теперь закидываем любые iso образы в папку /opt/iventoy/iso.

Я закинул ubuntu server и selectos для теста.

Запускаем:

./iventoy.sh start


После этого можно зайти на морду и посмотреть более детально, крутится эта штука на 26000 порту. Меня пустило так:

http://192.168.10.32:26000


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

Да, важно не забыть в вебморде справа нажать зеленую стрелку, это запустит PXE сервер.


Проверяем.

Поднимаю новую машину в виртулбоксе c EFI, выставляю загрузку по сети и вижу ожидаемый результат. У меня доступно два дистрибутива ubuntu и selectos. Отлично!

Выбираем нужный дистрибутив и запускаем установку по сети.

Что понравилосьiVentoy ставится элементарно, без хуйни и заморочек. Буквально пару минут и у тебя готовый PXE, запускай и накатывай операционки без флешек и внешних винтов.

Да, чтобы оно автоматом стартавало, можно закинуть какой-нибудь такой юнит.

[Unit]
Description=iVentoy PXE Server
After=network.target

[Service]
Type=forking
ExecStart=/opt/iventoy/iventoy.sh start
ExecStop=/opt/iventoy/iventoy.sh stop
Restart=on-failure

[Install]
WantedBy=multi-user.target


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

Ладно, бери на вооружение, глядишь пригодится.

🛠 #linux #pxe #utilites

@bashdays / @linuxfactory / @blog
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4110
Отдыхаешь? А как тебе такое? Если пропиздоглазил, то смотри на зеленый замочек и домен.

Короче — я сгенерил валидный SSL сертификат для домена localhost.

Аналогично можно бесконечно генерить такие сертификаты для любых своих локальных доменов. Ну и затем подключать их во всякие nginx, mysql джанги-хуянги и т.п.

Называется mkcert. Работает на всём, Винда, Линукс и Мак. В случае с виндой установка осуществляется через менеджеры пакетов scoop или chocolatey.

Чтобы установить scoop в powershell нужно забить:

Set-ExecutionPolicy RemoteSigned -scope CurrentUser
irm get.scoop.sh | iex


И заинсталлить mkcert

scoop bucket add extras
scoop install mkcert
mkcert -install


Получаем такое:

Created a new local CA 💥
The local CA is now installed in the system trust store! ⚡️
Note: Firefox support is not available on your platform. ℹ️


Всё! Теперь у нас есть свой доверенный центр сертификации.

Выпускаем первый SSL сертификат.

Ебли с этим никакой нет, запускаем:

mkcert bashdays.kek "*.bashdays.kek"


То есть просто перечисляем список доменов.

В ответ получаем:

Created a new certificate valid for the following names 📜
- "bashdays.kek"
- "*.bashdays.kek"

Reminder: X.509 wildcards only go one level deep, so this won't match a.b.bashdays.kek ℹ️

The certificate is at "./bashdays.kek+1.pem" and the key at "./bashdays.kek+1-key.pem"

It will expire on 2 August 2027 🗓


В результате получаем bashdays.kek+1.pem — сертификат и bashdays.kek+1-key.pem - приватный ключ.

Ну а дальше пихаем их в жопы в нужное место и наслаждаемся зеленым замочком.

Если серты и ключи тебе нужно генерить в определенном месте, можешь это указать так:

mkcert -cert-file=/ssl/fullchain.crt -key-file=/ssl/private.key bashdays.kek


Это полезно если у тебя какая-то автоматизация или баш скрипт, который автоматом будет это всё генерить, а nginx или angie это подхавывать.

Чтобы этой хуйнёй воспользоваться на WSL, делаем так:

sudo apt install libnss3-tools
curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"
chmod +x mkcert-v*-linux-amd64
sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert


Здесь мы не выполняем инициализацию mkcert -install, на WSL мы только генерим SSL сертификаты.

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

Идем на виндовую машину и выполняем:

mkcert -CAROOT


В ответ получаем путь до корневого сертификата, у меня такой:

C:\Users\user\AppData\Local\mkcert

Возвращаем в WSL и выполняем:

echo "export CAROOT=/mnt/c/Users/user/AppData/Local/mkcert" >> ~/.bashrc


Если у тебя zsh, сам разберешься.

Теперь можно выпускать SSL сертификаты в WSL и в винде они будут считаться доверенными.

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

Что прикольно, такие серты живут по два года. При желании их можно прикрутить к своему локальному proxmox или еще куданить. Тут уже сам разберешься.

mkcert давнишняя штука, но как оказалось про неё мало кто знает, я про нее слышал года 4 назад, но успешно забыл. И вот только сегодня нашел в своих bash скриптах интеграцию с ней.


Для локальных целей прям маст-хев! Забирай на вооружение.

🛠 #ssl #utilites

@bashdays / @linuxfactory / @blog
Please open Telegram to view this post
VIEW IN TELEGRAM
5106
С праздником друзья!

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

И поможет нам в этом Mechvibes.

Mechvibes: забавный и практичный способ воспроизводить любимые звуки клавиатуры где угодно.


Установка

Тут всё просто, идем сюда и устанавливаем бинарник под свою операционку.

Поддерживается Linux, Windows, Mac.


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

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

Я себе котиков навтыкал, пишу этот пост и у меня всё мяукает и тыгыдыкает.

Ну а кто-то томные стоны аниме-девочек (Ahegao) прогружает, чисто поугарать.

Отдельные паки можно затестить прям на сайте и качнуть тут.

Мож кому зайдет, забирай в копилку.

🛠 #hardware #utilites

@bashdays / @linuxfactory / @blog
Please open Telegram to view this post
VIEW IN TELEGRAM
49
На каждую жопу с резьбой, найдется хуй с винтом!

Очередной вопрос — не хочу графану, не хочу всю эту ебаторию, а как мониторить то сайтик?

Да блядь всё просто — Uptime Kuma!

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

Идеальное решение как самостоятельное, так и дополнительная приблуда к основному мониторингу.

Там есть практически всё, чтобы понимать что тебе песда!

У меня в основном триггеры на статусы стоят, поиск слов, ответы апихи.

Аааа.. еще и срок жизни ssl сертов отслеживает, тут прям заебись.

Ну и из приятного — пингует тебя в телегу, не заябывает, а по делу!


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

Вот те докерфайл

version: "3.8"
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: always
ports:
- 3001:3001
volumes:
- uptime-kuma:/app/data
volumes:
uptime-kuma: null


Ну и ссылка на гитхаб

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

Краба тебе, завтра еще увидимся!

🛠 #utilites

@bashdays / @linuxfactory / @blog
Please open Telegram to view this post
VIEW IN TELEGRAM
14133
Тошнит от избыточности Portainer?

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

Визуально она очень похожа на Uptime Kuma, без хуйни и перегруженных интерфейсов.

Суть простая: скармливаешь туда свой docker-compose, нажимаешь — запустить, а дальше оно само всё сделает.

Удобное редактирование, обновление, поддержка .env, визуализация логов, подключение через shell к контейнерам и т.п.


В общем всё что нужно для быстрого развертывания.

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

services:
dockge:
image: louislam/dockge:1
restart: unless-stopped
ports:
- 5001:5001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
- /opt/stacks:/opt/stacks
environment:
- DOCKGE_STACKS_DIR=/opt/stacks
- DOCKGE_ENABLE_CONSOLE=true


➡️ Репка на гитхабе
➡️ Посмотреть видео работы

Забирай в копилку! Ну и с пятницей!

🛠 #utilites #docker

@bashdays / @linuxfactory / @blog
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
682
Всем UpSnap!

Короче очередная пиздатая утилита с мордой, которая позволяет управлять твоим зоопарком в рамках Wake on Lan.

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

Ну такое себе. Поэтому на этих серваках я включил Wake on Lan и через UpSnap управляю их включением. А самое главное — теперь не поднимаю жопу.

Что нам предлагают?

Да собственно ничего лишнего, морда, мышка, клик и всё включено.

Можно конечно через консольку всё это дело админить, но через морду как-то интереснее что-ли, эстетичнее, да и нагляднее. Не тупо мак адрес лицезришь, а видно что-где-когда.

Минимальный композ для запуска, порт 8090 (не указан, так как конейнер работает в режиме: host)

services:
upsnap:
container_name: upsnap
image: ghcr.io/seriousm4x/upsnap:latest
restart: unless-stopped
network_mode: host
volumes:
- ./data:/app/pb_data
environment:
- TZ=Europe/Vienna


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

🛠 #utilites #networks

@bashdays / @linuxfactory / @blog
Please open Telegram to view this post
VIEW IN TELEGRAM
48
Всем привет. Опять решил поделиться опытом своих провалов.

🔤🔤🔥🔤🔤🔤🔤

Вобщем, как-то раз я решил написать самоучитель по bash.

По традиции все учебники либо в html, либо в pdf. Я решил остановиться на pdf. Я начал писать в libreoffice, там есть экспорт в pdf. Пока писал - познакомился с markdown. И вдруг подумалось, markdown - такой классный, напрямик можно в гитхаб запихнуть. И в pdf конвертнуть с помощью pandoc можно. Вобщем, решил верстать в markdown.

Для начала познакомился с редакторами, которые умеют подсвечивать markdown (pluma, mousepad, geany) Вобщем, жить можно, но подсвечивается не всё.

После этого попробовал Apostrophe. Он уже умеет дополнительно показывать результат. Но работает медленно. Особенно на больших документах.

В общем - перепопробовал, - не нравится. Решил писать в mousepad, а потом конвертить с помощью pandoc.

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

Начал работать и тут вскрылась куча недостатков markdown;

1. Нет нормального форматирования (заголовок нельзя центрировать)
2. Нет нормальных таблиц, один ущерб какой-то.
3. Проблема с кирилицей (решаемая), но с помощью дополнительного tex-файла настроек.
\usepackage{longtable}\setlength{\LTleft}{2em}
\setmainfont{Liberation Serif}
\setsansfont{Liberation Sans}
\setmonofont{Liberation Mono}
\newfontfamily\cyrillicfont{Liberation Sans}
\defaultfontfeatures{Scale=MatchLowercase, Mapping=tex-text}
\usepackage{polyglossia}
\setmainlanguage{russian}
\setotherlanguage{english}

4. Нет возможности печатать некоторые символы UTF.
5. некоторые символы приходится маскировать, чтобы они не понимались, как управляющие.

Единственный плюс - подсветка синтаксиса bash.

В общем, после 19 главы я понял, что моего терпения не хватит закончить работу. Вернулся к libreoffice. За два дня освоил работу со стилями, и все пошло как по маслу. Кстати, экспорт в pdf тоже быстрее, на мой взгляд.

Может и не все получилось, сами знаете - первый блин комом.

Замечания и комментарии приветствуются.

С результатом можно ознакомиться здесь 👇

🅰️🅰️
➡️ https://github.com/tagd-tagd/self-instruction
🅰️🅰️

🛠 #bash #linux #utilites #markdown

@bashdays / @linuxfactory / @blog
Please open Telegram to view this post
VIEW IN TELEGRAM
395
This media is not supported in your browser
VIEW IN TELEGRAM
Порой заёбываешь подбирать свободный домен для собственных нужд, но на любую хотелку уже есть утилита.

Сегодня тыкаем domain-check. Как раз вышла новая версия v0.6.0. Проект молодой, но достаточно перспективный, а самое главное с отрытым исходным кодом.

Установка простая:

curl https://sh.rustup.rs -sSf | sh
. "$HOME/.cargo/env"
cargo install domain-check


Либо качаем отсюда бинарник под свою ОС.

Запускаем проверку доменов:

domain-check linuxfactory -t ru,com,io,dev


Опа, опа, нихуя се!

linuxfactory.dev AVAILABLE
linuxfactory.ru TAKEN
linuxfactory.com TAKEN
linuxfactory.io AVAILABLE

Summary: 2 available, 2 taken, 0 unknown (processed in 0.9s)


Выбираем свободный и по желанию регаем. У domain-check дохера ключей и методов подбора/проверки.

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

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

🛠 #utilites

@bashdays @linuxfactory @blog
Please open Telegram to view this post
VIEW IN TELEGRAM
52