bash regex: =~ и BASH_REMATCH без внешних утилит

Для простой проверки строки необязательно звать grep отдельным процессом — bash умеет regex сам, через =~ внутри [[ ]]. line="user=admin;role=superadmin" [[ $line =~ role=([a-z]+) ]] && echo "role: ${BASH_REMATCH[1]}" BASH_REMATCH[0] — всё совпадение целиком, [1], [2]… — группы в скобках по порядку открывающих (. Массив живёт до следующего =~. Синтаксис — extended regex (ERE), как grep -E, а не basic как обычный grep: группы без экранирования, +/?/{} работают напрямую. Для разовой проверки это быстрее fork/exec внешнего процесса, но для построчной обработки файла grep -P/awk всё равно удобнее. ...

21 июля 2026 г. · llexa

expect: автоматизация того, что просит ввести пароль вручную

Некоторые старые CLI-утилиты не берут пароль из stdin — только приглашением. expect скриптует диалог: ждёт паттерн в выводе и посылает ответ. #!/usr/bin/expect spawn passwd testuser expect "New password:" send "S3cur3Pass!\r" expect "Retype new password:" send "S3cur3Pass!\r" expect eof spawn запускает процесс, expect "паттерн" ждёт его в выводе (regex), send пишет в stdin, expect eof — дожидается завершения (без него скрипт выйдет раньше процесса). autoexpect записывает сессию как script, сразу генерируя .exp-файл — писать с нуля не обязательно. expect — крайняя мера для legacy без non-interactive режима; где есть --batch/-y, лучше они. ...

21 июля 2026 г. · llexa

ssh-agent, ssh-add и ed25519-ключи по-нормальному

ed25519 — современный формат ключей: короче RSA, быстрее считается, криптографически не хуже. Для новых ключей брать его. ssh-keygen -t ed25519 -C "user@host" -f ~/.ssh/id_ed25519 eval "$(ssh-agent -s)" # запустить агент ssh-add ~/.ssh/id_ed25519 # пароль спросит раз, потом ключ в памяти ssh-add -l # какие ключи сейчас в агенте На десктопе агент обычно уже поднят DE — ssh-add -l покажет, жив ли сокет. На сервере, откуда ходишь дальше (git, другие хосты), нужен ForwardAgent yes для конкретного хоста в ~/.ssh/config — глобально небезопасно: root на промежуточном хосте получит доступ к сокету. ...

21 июля 2026 г. · llexa

logger и systemd-cat: пишем в journald из bash

Скрипт, пишущий статус в свой файл в /var/log/, — ещё одна точка для ротации и мониторинга. logger шлёт сообщение прямо в syslog/journald, под общую ротацию и journalctl. logger -t backup-script -p user.err "disk full" # тег + приоритет journalctl -t backup-script # только свои сообщения systemd-cat оборачивает целую команду — её stdout/stderr: systemd-cat -t rsync-job rsync -av /data /backup/ journalctl -t rsync-job --since "10 min ago" Из cron: job.sh 2>&1 | logger -t rsync-job — результат ищется одной командой, без grep по файлам в /var/log/. Приоритет (err, warning) фильтрует по важности и вешает алерты на ошибки, не трогая шум. ...

20 июля 2026 г. · llexa

nginx: усиление TLS без танцев с бубном

Дефолтный nginx с сертификатом Let’s Encrypt работает, но A на SSL Labs не даст — разрешены старые протоколы и слабые шифры. Правится парой директив в server. ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5:!3DES; ssl_prefer_server_ciphers on; add_header Strict-Transport-Security "max-age=63072000" always; ssl_stapling on; # OCSP stapling — сервер сам ssl_stapling_verify on; # прикладывает статус сертификата После правки: nginx -t && systemctl reload nginx, проверка — ssl-labs.com/ssltest или openssl s_client -connect host:443 -status. HSTS с годовым max-age необратим: сломается TLS — браузеры откажутся ходить и по HTTP. Включать значение постепенно. ...

20 июля 2026 г. · llexa

Уровни паники по цвету алерта в Zabbix

Zabbix красит триггеры по severity — но по факту это шкала внутренней паники дежурного, не важности инцидента. Not classified / Information — даже не открываешь вкладку, само пройдёт. Warning — открыл, подумал «ну ладно», закрыл обратно. Average / High — уже читаешь description триггера и ищешь runbook. Disaster — звонишь тому, кто «точно знает», даже если сейчас 3 часа ночи. Корреляция между severity и пульсом почти линейная — впору вешать vital-мониторинг на самого дежурного, не только на сервер. ...

19 июля 2026 г. · llexa

chroot и arch-chroot: смена корня файловой системы

chroot меняет корень файловой системы для процесса — программа видит /mnt/rescue как /, а всё, что выше, ей недоступно. Классический сценарий — сломанный загрузчик: грузимся с LiveCD, монтируем раздел и чиним систему изнутри неё. mount /dev/sda2 /mnt for d in dev proc sys; do mount --bind /$d /mnt/$d; done chroot /mnt /bin/bash grub-install /dev/sda update-grub exit Три bind mount руками — то, что забывают чаще всего: без /dev и /proc внутри chroot откажутся работать даже базовые команды. В Arch Linux это автоматизировал arch-chroot из пакета arch-install-scripts — та же задача одной командой: ...

18 июля 2026 г. · llexa

LVM с нуля: pvcreate, vgcreate, lvcreate, lvextend

Без LVM размер раздела фиксирован разметкой диска — расширить его без даунтайма сложно. LVM добавляет промежуточный слой: физические тома (PV) объединяются в группу (VG), из которой нарезаются логические тома (LV) — их можно растягивать, пока в VG есть свободное место. pvcreate /dev/sdb /dev/sdc # физические тома из целых дисков vgcreate data_vg /dev/sdb /dev/sdc # группа томов lvcreate -L 50G -n data_lv data_vg # логический том 50 ГБ mkfs.ext4 /dev/data_vg/data_lv Расширение на лету, когда место закончилось: ...

18 июля 2026 г. · llexa

nmcli: NetworkManager из терминала

На серверах с NetworkManager настройки сети живут не в /etc/network/interfaces, а в connection-профилях самого NetworkManager. nmcli — способ управлять ими из терминала, без риска потерять единственный SSH-сеанс на неудачный ifconfig. nmcli device status # список интерфейсов и их состояние nmcli con show # все сохранённые подключения nmcli con up "Wired connection 1" # поднять nmcli con down eth0 # погасить Статический IP без правки конфигов руками: nmcli con mod eth0 ipv4.addresses 192.168.1.50/24 nmcli con mod eth0 ipv4.gateway 192.168.1.1 nmcli con mod eth0 ipv4.dns "8.8.8.8 1.1.1.1" nmcli con mod eth0 ipv4.method manual nmcli con up eth0 Изменения применяются сразу после con up — перезагрузка не нужна. ...

18 июля 2026 г. · llexa

lynis: аудит безопасности сервера одной командой

lynis — сканер безопасности для Linux/Unix без агента и без сети: работает локально, читает конфиги и состояние системы. На выходе — не список уязвимостей, а числовой hardening index и причина по каждой находке. apt install lynis # или git clone для последней версии lynis audit system # полный прогон, ~200 тестов lynis show tests # список проверок с ID lynis audit system --cronjob # тихий прогон для cron Результат — в /var/log/lynis.log и /var/log/lynis-report.dat. В конце — блок Suggestions с ID вида SSH-7408 и кратким пояснением. Категории: SSH-конфиг, права на файлы, устаревшие пакеты, параметры ядра — первый прогон на свежем сервере обычно выдаёт полсотни рекомендаций. ...

17 июля 2026 г. · llexa