Типичный Сисадмин
1.32K subscribers
388 photos
45 videos
211 links
⚙️Информация для системного администратора

По всем вопросам : @Sofiia_artamonova
Download Telegram
Как отлаживать bash-scriptы по шагам

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

Волшебная строчка, которую нужно добавить после #!/bin/bash, чтоб скрипт можно было отлаживать по шагам

#!/bin/bash

trap 'echo "# $BASH_COMMAND";read' DEBUG

echo line1
echo line2

echo line3



Процесс отладки
Запускаем скрипт, перед выполнением каждой команды выводится то, что будет исполняться, затем интерпретатор начинает ожидать нажатия клавиши <ENTER>.

Если понимаем, что что-то пошло не так, нажимаем Ctrl+C и выходим из отладки.

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

команда read, которая умеет ожидать ввода чего-нибудь с клавиатуры (в данном случае нам нужно только либо ENTER либо Ctrl+C

переменная окружения $BASH_COMMAND, валидная внутри обработчика команды trap.

# Online Bash Shell.
# Code, Compile, Run and Debug Bash script online.
# Write your code in this editor and press "Run" button to execute it.

trap 'echo "# $BASH_COMMAND";read' DEBUG

echo line1
echo line2

echo line3

echo "Hello World";
3👍1
📌 Шпаргалка по работе с Tmux
👍1
📌 Шпаргалка по Vim
2
Caddy и 100к доменов: автоматический SSL при одностраничном конфиге

Я начал использовать Nginx более 20 лет назад, и как-то привык к тому что это решение по умолчанию при выборе веб сервера. В своем пути в IT я начинал с linux администрирования, потом был мелкий онлайн бизнес, работал бизнес аналитиком, продактом, временами что-то программировал для себя. Обстоятельства опять поменялись и год назад я устроился работать девопсом в маркетплейс доменов, по сути такой возврат к истокам. Первая задача которую мне выдали - перевести паркинг с 100к доменами с nginx на caddy. На тот момент я не слышал про Caddy, но был очень хорошего мнения о nginx.

https://habr.com/ru/articles/923150/
👍21
UEFI & GRUB

1. ESP (EFI System Partition)

🔺 Формат: FAT32, размер ~100–500 МБ.
🔺 Монтируется как /boot/efi.
🔺 Содержит файлы загрузчиков:

🔺 /EFI/BOOT/BOOTX64.EFI (резерв)
🔺 /EFI/дистрибутив/… (например, /EFI/ubuntu/grubx64.efi).

2. Разметка GPT и создание ESP


parted /dev/sda mklabel gpt
parted /dev/sda mkpart ESP fat32 1MiB 551MiB
parted /dev/sda set 1 boot on
mkfs.fat -F32 /dev/sda1


🔺 Монтирование:


mkdir -p /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi


3. Установка GRUB (UEFI)

1. Смонтировать корень и ESP, войти в chroot:


mount /dev/sdaX /mnt # X — раздел /
mount /dev/sda1 /mnt/boot/efi # ESP
for d in dev proc sys; do mount --bind /$d /mnt/$d; done
chroot /mnt /bin/bash


2. Установить пакет GRUB:

🔺 Debian/Ubuntu: apt install --reinstall grub-efi-amd64
🔺 Arch: pacman -Sy grub efibootmgr
🔺 RHEL/CentOS: yum install grub2-efi shim

3. Запустить:


grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB --recheck
grub-mkconfig -o /boot/grub/grub.cfg


🔺 В RHEL/CentOS:


grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub2 --recheck
grub2-mkconfig -o /boot/efi/EFI/grub2/grub.cfg


4. Файл /etc/default/grub (минимум)


GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_CMDLINE_LINUX="quiet splash"


🔺 После изменений: update-grub (Debian/Ubuntu) или grub2-mkconfig -o … в RHEL.

5. Управление записями UEFI (efibootmgr)

* Просмотр: efibootmgr -v
* Добавить запись:


efibootmgr --create --disk /dev/sda --part 1 \
--label "Linux" --loader "\\EFI\\GRUB\\grubx64.efi"

🔺 Изменить порядок: efibootmgr --bootorder 0002,0001,0003
🔺 Удалить: efibootmgr --bootnum 0004 --delete-bootnum

6. Восстановление GRUB

🔺 Загрузиться с Live-USB, смонтировать / и ESP, chroot как в пункте 3.
🔺 Переустановить GRUB (см. команды выше).
🔺 Убедиться, что в прошивке UEFI выбрана запись “GRUB” как первичная.

7. Советы

🔺 Проверить монтирование ESP: findmnt /boot/efi
🔺 Проверить содержимое ESP: ls /boot/efi/EFI
🔺 Secure Boot:

🔺 Установить shim-signed и grub-efi-amd64-signed (Ubuntu).
🔺 Проверить статус: mokutil --sb-state

8. Сборка простого grub.cfg


set default=0
set timeout=5

menuentry "Linux" {
insmod ext2
set root='hd0,gpt2'
linux /vmlinuz-linux root=/dev/sda2 rw quiet
initrd /initramfs-linux.img
}


🔺 hd0,gpt2 — диск 0, второй GPT-раздел (там /).
🔺 Пути /vmlinuz-linux и /initramfs-linux.img — в /boot.
2
📌 Как работают протоколы электронной почты?
2👍1🥰1
Vault-secrets-operator

Создавайте секреты Kubernetes из Vault для безопасного рабочего процесса на основе GitOps.

https://github.com/ricoberger/vault-secrets-operator
1👍1
Шпаргалка Mikrotik Config

Я документирую процесс подключения и настройки общих сценариев здесь для всех, кто интересуется Mikrotik

https://codingpackets.com/blog/mikrotik-config-cheatsheet/
1
📌 Архитектура Kubernetes
2👍2
Выводим список установленных пакетов в Linux по дате

Порой необходимо узнать когда тот или иной пакет был установлен в операционной системе (например, в целях аудита). В данной статье рассмотрим как вывести список установленных пакетов в Linux, отсортированный по дате установки - давайте разберемся!

https://telegra.ph/Vyvodim-spisok-ustanovlennyh-paketov-v-Linux-po-date-09-10
👍21
Kopia — кроссплатформенный инструмент резервного копирования для Windows, macOS и Linux с быстрым инкрементным резервным копированием, сквозным шифрованием на стороне клиента, сжатием и дедупликацией данных. Включены CLI и GUI.

Источник
2👍2
Как Grafanalib помогает управлять дашбордами в масштабе

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

https://www.contino.io/insights/grafanalib
1
Работа с дисковыми квотами в Debian


Проверка квот на файловой системе /var
quotacheck -vgumf /var

v — режим с подробным выводом результатов работы;
g — проверка только групповых квот, перечисленных в файле /etc/mtab или в указанных файловых системах;
u — проверка только пользовательских квот, перечисленных в файле /etc/mtab или в указанных файловых системах, опцию можно не указывать, т.к. она активна по умолчанию;
m — не пытаться перемонтировать файловую систему только для чтения;
f — форсировать проверку, то есть проверить и записать новые файлы квот на ФС с включенными квотами;

Проверка квот на всех файловых системах где они включены:
quotacheck -vagumf

Редактирование квоты для пользователя web1 (откроется редактор по-умолчанию):
edquota -u web1

Редактирование квоты для группы client1 (откроется редактор по-умолчанию):
edquota -g client1

Показать суммарный отчет по квотам на файловой системе /var
repquota /var

Показать суммарный отчет по квотам на файловой системе /var только для пользователей (-u) в удобном формате (-s)
repquota -g -s /var

Вывод команды:
# repquota -u -s /var -c
*** Report for user quotas on device /dev/mapper/sirius-var
Block grace time: 7days; Inode grace time: 7days
Space limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
web2 -- 23809M 31744M 31745M 76599 0 0
web53 -- 609M 3072M 3073M 8804 0 0

Хотя суммарный отчёт и выглядит довольно просто, но некоторые моменты следует разъяснить.
Символы — — во втором столбце позволяют быстро определить, какой предел был превышен (блоков или inode). Если мягкий предел (soft) превышен, вместо — появляется соответствующий + при этом первый символ — представляет предел блоков, а второй — предел inode.

Столбцы grace обычно пустые, но если мягкий предел (soft) превышен, в этом столбце показывается время, оставшееся до завершения периода отсрочки. Если период отсрочки истёк, в этом столбце отображается none (нет).
1