Экспортёр Prometheus на Bash через node_exporter
Создаём собственную метрику Prometheus обычным Bash-скриптом через textfile collector в node_exporter. Разбираем формат .prom, периодический запуск из cron и пример передачи квоты внешнего сервиса.
BashDays / инженерное медиа
Статьи об администрировании Linux, инфраструктуре, информационной безопасности, автоматизации и разработке — с реальными примерами и без пересказа документации.
Главная статья
Создаём собственную метрику Prometheus обычным Bash-скриптом через textfile collector в node_exporter. Разбираем формат .prom, периодический запуск из cron и пример передачи квоты внешнего сервиса.
Форум Bashdays
Читают сейчас
Создаём собственную метрику Prometheus обычным Bash-скриптом через textfile collector в node_exporter. Разбираем формат .prom, периодический запуск из …
Разбираем недорогую конфигурацию прерываемого сервера Selectel для лабораторий и тестовых стендов. Обсуждаем регион, сетевые диски, повторный запуск, …
Экспериментируем с GNU-утилитами и функцией set_program_name, которая особым образом обрабатывает запуск из каталога .libs. Сравниваем сообщения об …
Разбираем тест -newerXY утилиты find и временные метки файлов. Ищем изменения относительно заданной даты или файла-образца, создаём контрольную метку …
Личный опыт постепенного отказа от алкоголя без рекомендаций и универсальных рецептов. Автор рассказывает, какие последствия употребления заставили …
Собрали консольные сервисы для определения внешнего IP-адреса и геолокации через curl, dig и whois. Показываем короткие команды и объясняем, как …
Практический кейс сокращения расходов на десятки серверов тестовой инфраструктуры. Переносим стенды в Yandex Cloud, автоматически выключаем их ночью и …
Объясняем принцип RSA на небольших простых числах и понятном примере. Вычисляем открытый и закрытый ключи, шифруем число по модулю и повторяем расчёт …
Разбираем Linux-команду yes для автоматической передачи подтверждений в интерактивные программы. Показываем работу через пайп, произвольные ответы и …
Практическое знакомство с Crane для работы с контейнерными образами без Docker-клиента. Копируем образы между реестрами, экспортируем файлы, …
Настраиваем разные правила sshd для пользователей и адресов через блок Match. Рассматриваем парольную аутентификацию последнего шанса, шаблоны условий …
Работаем со временем в Bash через SECONDS, EPOCHSECONDS, EPOCHREALTIME и встроенный printf. Сравниваем с date, форматируем Unix-время и временно …
Включаем Vim mode в Obsidian, чтобы писать заметки и одновременно поддерживать мышечную память команд редактора. Практический опыт совмещения базы …
Пошагово собираем собственный метапакет Debian, который устанавливает заранее выбранный набор утилит. Создаём структуру dh_make, редактируем …
Кандидаты всё чаще зачитывают на технических собеседованиях ответы нейросетей вместо собственных рассуждений. Рассказываю о простом фильтре с …
Разбираем Reverse Shell через netcat для подключения к серверу без внешнего IP-адреса. Показываем команды для принимающей стороны и закрытого узла, …
Несколько способов завершить интерактивную оболочку Linux: CTRL+D, TMOUT, set -t, set -e, exec и exit. Отдельно разбираем настройку символа EOF через …
Проверяем через strace, почему grep -q прекращает чтение большого файла после первого совпадения. Сравниваем системные вызовы, коды возврата и …
Разбираемся, зачем скрипту нужен Shebang и что происходит при ошибке ENOEXEC. На примерах показываем, когда Bash способен самостоятельно выполнить …
Создаём массив двоичных чисел средствами brace expansion и переводим значения между системами счисления в Bash. Заодно разбираем границы intmax_t и …
Используем printf для получения кодов символов в шестнадцатеричной, восьмеричной и десятичной системах. Проверяем влияние LC_ALL на UTF-8 и сохраняем …
Сравниваем команды rm и unlink в Linux: системные вызовы, обработку отсутствующих файлов, шаблоны и каталоги. Показываем, когда unlink удобнее для …
Создаём вложенную структуру каталогов одной командой mkdir с ключом -p и brace expansion. Сравниваем последовательность команд с компактным вариантом …
Рабочая схема сбора метрик Prometheus с внутренних серверов без белых IP-адресов. Настраиваем DNAT и MASQUERADE на балансировщике и направляем порты к …
Разбираемся, почему обычный whois не показывает Expires on для доменной зоны .to. Находим WHOIS-сервер зоны, обращаемся к сервису Tonic через curl и …
Практическое сравнение setsid и nohup для запуска Bash-скриптов независимо от текущего терминала. Смотрим дерево процессов через pstree и разбираемся, …
Используем Bash trap с EXIT для автоматической очистки временных файлов при успешном завершении, ошибке и SIGTERM. Проверяем порядок системных вызовов …
Разбираем назначение разделителя -- в командах Linux и показываем его работу на примерах ssh, cat и rm. Учимся безопасно передавать имена файлов и …
Почему знание GitLab часто встречается в DevOps-вакансиях и насколько оно переносимо между CI/CD-платформами. Разбираем GitLab Community Edition, …
Настраиваем выпадающий терминал Quake Mode в Windows Terminal через settings.json. Разбираемся с глобальной клавишей вызова, вкладками, переключением …
Настраиваем log_format Nginx для структурированных JSON-логов и отправляем access_log и error_log в systemd journal через syslog. Также разбираем …
Показываем, как отфильтровать строки одного текстового файла по списку из другого с помощью конструкции NR == FNR и массива awk. Разбираем работу NR, …
Три игровых тренажёра для изучения командной строки Linux: BashCrawl, Terminus и CL Mystery. Они помогают практиковать навигацию, команды и логику в …
Проверяем, определена ли переменная Bash, с помощью условного выражения -z и расширения параметра ${VAR+x}. Пошагово разбираем результаты, режим set …
Продолжаем практику Bash-сопроцессов и принимаем почту по POP3 через openssl s_client. Реализуем команды STAT, DELE, RETR и TOP, затем собираем цикл …
Ищем службы, которые замедляют загрузку Linux, командами systemd-analyze blame и critical-chain. На примере Docker разбираем зависимости …
Практический Bash-скрипт для параллельной обработки строк файла с ограничением числа потоков через FIFO. Разбираем именованный канал, файловый …
Настраиваем Nginx так, чтобы обычный трафик шёл в основной upstream, а тестировщики попадали на отдельную ноду по заголовку X-Backend. В конфигурации …
Ограничиваем видимость чужих процессов на многопользовательском Linux-сервере через параметры hidepid для /proc. Разбираем временное монтирование, …
Рабочая история о коте, оставленном MacBook и неожиданно дорогих последствиях удалённой работы. Напоминание о том, почему технику и домашних животных …
Пятиминутка стабильности
Из логов айтишной жизни
xxx: > соморез xxx: "Последнее место работы - соморез в рыбном ресторане".
Создаём собственную метрику Prometheus обычным Bash-скриптом через textfile collector в node_exporter. Разбираем формат .prom, периодический запуск из cron и пример передачи квоты внешнего сервиса.
Экспериментируем с GNU-утилитами и функцией set_program_name, которая особым образом обрабатывает запуск из каталога .libs. Сравниваем сообщения об ошибках и справку, чтобы увидеть влияние libtool на имя программы.
Разбираем тест -newerXY утилиты find и временные метки файлов. Ищем изменения относительно заданной даты или файла-образца, создаём контрольную метку через touch и выводим время найденных объектов.
Собрали консольные сервисы для определения внешнего IP-адреса и геолокации через curl, dig и whois. Показываем короткие команды и объясняем, как сделать проверку отказоустойчивой в Bash-скриптах.
Разбираем Linux-команду yes для автоматической передачи подтверждений в интерактивные программы. Показываем работу через пайп, произвольные ответы и отправку пустой строки для имитации Enter в скриптах и пайплайнах.
Настраиваем разные правила sshd для пользователей и адресов через блок Match. Рассматриваем парольную аутентификацию последнего шанса, шаблоны условий и проверку итоговой конфигурации командой sshd -T -C.
Работаем со временем в Bash через SECONDS, EPOCHSECONDS, EPOCHREALTIME и встроенный printf. Сравниваем с date, форматируем Unix-время и временно меняем часовой пояс через TZ.
Пошагово собираем собственный метапакет Debian, который устанавливает заранее выбранный набор утилит. Создаём структуру dh_make, редактируем debian/control, запускаем debuild и проверяем зависимости.
Разбираем Reverse Shell через netcat для подключения к серверу без внешнего IP-адреса. Показываем команды для принимающей стороны и закрытого узла, перенаправление потоков и обязательные ограничения безопасности.
Несколько способов завершить интерактивную оболочку Linux: CTRL+D, TMOUT, set -t, set -e, exec и exit. Отдельно разбираем настройку символа EOF через stty.
Проверяем через strace, почему grep -q прекращает чтение большого файла после первого совпадения. Сравниваем системные вызовы, коды возврата и перенаправление вывода в /dev/null.
Разбираемся, зачем скрипту нужен Shebang и что происходит при ошибке ENOEXEC. На примерах показываем, когда Bash способен самостоятельно выполнить файл без привычной строки интерпретатора.
Создаём массив двоичных чисел средствами brace expansion и переводим значения между системами счисления в Bash. Заодно разбираем границы intmax_t и целочисленное переполнение.
Используем printf для получения кодов символов в шестнадцатеричной, восьмеричной и десятичной системах. Проверяем влияние LC_ALL на UTF-8 и сохраняем форматированный результат в переменную.
Сравниваем команды rm и unlink в Linux: системные вызовы, обработку отсутствующих файлов, шаблоны и каталоги. Показываем, когда unlink удобнее для контроля ошибок в Bash-скриптах.
Создаём собственную метрику Prometheus обычным Bash-скриптом через textfile collector в node_exporter. Разбираем формат .prom, периодический запуск из cron и пример передачи квоты внешнего сервиса.
Разбираем недорогую конфигурацию прерываемого сервера Selectel для лабораторий и тестовых стендов. Обсуждаем регион, сетевые диски, повторный запуск, тарификацию остановленных ресурсов и ограничения такого подхода.
Собрали консольные сервисы для определения внешнего IP-адреса и геолокации через curl, dig и whois. Показываем короткие команды и объясняем, как сделать проверку отказоустойчивой в Bash-скриптах.
Практический кейс сокращения расходов на десятки серверов тестовой инфраструктуры. Переносим стенды в Yandex Cloud, автоматически выключаем их ночью и в выходные, а бот учитывает активность тестировщиков и метрики Prometheus.
Практическое знакомство с Crane для работы с контейнерными образами без Docker-клиента. Копируем образы между реестрами, экспортируем файлы, сравниваем конфигурации, считаем размер и меняем метки без повторной сборки.
Разбираем Reverse Shell через netcat для подключения к серверу без внешнего IP-адреса. Показываем команды для принимающей стороны и закрытого узла, перенаправление потоков и обязательные ограничения безопасности.
Рабочая схема сбора метрик Prometheus с внутренних серверов без белых IP-адресов. Настраиваем DNAT и MASQUERADE на балансировщике и направляем порты к node_exporter.
Разбираемся, почему обычный whois не показывает Expires on для доменной зоны .to. Находим WHOIS-сервер зоны, обращаемся к сервису Tonic через curl и получаем дату окончания регистрации.
Почему знание GitLab часто встречается в DevOps-вакансиях и насколько оно переносимо между CI/CD-платформами. Разбираем GitLab Community Edition, пайплайны и важность общей базы вместо привязки к одному инструменту.
Настраиваем log_format Nginx для структурированных JSON-логов и отправляем access_log и error_log в systemd journal через syslog. Также разбираем параллельную запись в разные форматы для отладки.
Продолжаем практику Bash-сопроцессов и принимаем почту по POP3 через openssl s_client. Реализуем команды STAT, DELE, RETR и TOP, затем собираем цикл обработки сообщений.
Настраиваем Nginx так, чтобы обычный трафик шёл в основной upstream, а тестировщики попадали на отдельную ноду по заголовку X-Backend. В конфигурации используются map, upstream, proxy_pass и диагностический X-Upstream.
Настраиваем iVentoy как простой PXE-сервер для установки Linux и Windows по сети без флешек. В материале есть команды установки, запуск веб-интерфейса, каталог ISO и unit-файл systemd.
Практический опыт запуска XRDP на Debian с окружениями XFCE и LXDE и клиентом xfreerdp. Разбираем установку, удобный alias подключения и проблемы с раскладкой, логами, пользовательскими сессиями и 1С.
Показываем, как сохранить стандартный вывод cron-задачи в отдельный файл и настроить его ротацию через logrotate. Такой журнал помогает увидеть внутренние ошибки приложения, которые не попадают в системный лог cron.
Объясняем принцип RSA на небольших простых числах и понятном примере. Вычисляем открытый и закрытый ключи, шифруем число по модулю и повторяем расчёт в Bash через bc.
Настраиваем разные правила sshd для пользователей и адресов через блок Match. Рассматриваем парольную аутентификацию последнего шанса, шаблоны условий и проверку итоговой конфигурации командой sshd -T -C.
Ограничиваем видимость чужих процессов на многопользовательском Linux-сервере через параметры hidepid для /proc. Разбираем временное монтирование, запись в fstab и исключения доступа по группе gid.
Утилита debsums сверяет файлы установленных Debian-пакетов с эталонными контрольными суммами. Разбираем полную проверку, поиск изменённых файлов и конфигураций после взлома или миграции сервера.
Разбираем ключ -i в GNU base64, который пропускает символы вне алфавита кодирования. Примеры показывают, как декодировать изменённые строки и почему такое сокрытие данных нельзя считать настоящим шифрованием.
Строим связку из SSH-бастиона и изолированной машины без выхода в интернет для удалённых пользователей. Настраиваем ключи, принудительную оболочку и автоматический переход на внутренний сервер.
Разбираемся, почему короткий ключ ED25519 не слабее длинного RSA, какие типы SSH-ключей поддерживает OpenSSH и как конвертировать PPK из PuTTYgen. Практические команды для генерации и преобразования ключей.
Шифруем пиксели PNG с парольной фразой или отдельным файлом-ключом через ImageMagick. Проверяем расшифровку, ограничения форматов и сохранение открытых метаданных.
Настраиваем обязательную смену пароля, требования libpam-pwquality и защиту fail2ban для SSH. Разбираем минимальный набор мер, если клиент отказывается переходить на ключи.
Сравниваем privileged и обычные Docker-контейнеры по capabilities, устройствам, сети и изоляции. Выбираем между --cap-add, --device и полным привилегированным режимом.
Устанавливаем корневой и подчинённый сертификаты Минцифры в Ubuntu одной shell-командой. Проверяем subject, SHA-1 fingerprint и цепочку OpenSSL, обновляем системное хранилище CA и тестируем HTTPS через curl.
Настраиваем белый список команд для SSH-пользователя с помощью Bash-скрипта ONLY и директивы command в authorized_keys. Разбираем ключи, ограничения сессии и правила .onlyrules без выдачи интерактивной оболочки.
Практическая схема резервного копирования с защищённой СХД, внешними дисками и промежуточным сервером. Объясняем чередование носителей, локальные дневные копии и ротацию нумерованных архивов.
Генерируем повторяемые пароли через pwgen по логину, ключевому файлу и запоминаемому модификатору. Bash-обёртка скрывает ввод, проверяет зависимости и позволяет получать тот же набор паролей без их хранения.
Разбираем Патч Бармина и поведение команды rm -rf /* в Unix-системах. Показываем раскрытие glob оболочкой, права на каталоги, интерактивный режим и защиту --preserve-root=all.
Проверяем через strace, почему grep -q прекращает чтение большого файла после первого совпадения. Сравниваем системные вызовы, коды возврата и перенаправление вывода в /dev/null.
Используем Bash trap с EXIT для автоматической очистки временных файлов при успешном завершении, ошибке и SIGTERM. Проверяем порядок системных вызовов через strace и разбираем работу ловушек сигналов.
Ищем службы, которые замедляют загрузку Linux, командами systemd-analyze blame и critical-chain. На примере Docker разбираем зависимости network-online.target и настройку systemd-юнита.
Исследуем тернарный оператор Bash внутри арифметической подсистемы и сравниваем его с классической связкой && и ||. Пример показывает работу восьмеричных значений, вычисление обеих ветвей и неочевидные ошибки сравнения.
Функция uTIME измеряет интервалы выполнения Bash-кода в микросекундах с помощью EPOCHREALTIME. Сравниваем функции в текущей оболочке и subshell, а также преобразование даты через printf и внешнюю команду date.
Разбираем распространённые Bash-антипаттерны из учебных скриптов: лишний cat перед cut, grep и tr, а также небезопасный перебор файлов через ls. Показываем более прямые и устойчивые варианты команд.
Разбираем завершители блоков ;;, ;& и ;;& в операторе case Bash. На практических примерах показываем обычное завершение ветки, fallthrough и повторную проверку следующих шаблонов.
Ищем культурный след числа 42 в справке Vim, документации Emacs и сообществе GNU. Разбираемся, как ответ из «Автостопом по галактике» стал устойчивой шуткой в мире программирования.
Разбираем обработку стрелок, Home, End и F1–F12 в интерактивном Bash-скрипте. Функция GET_KEY переводит многобайтные управляющие последовательности терминала в hexadecimal-коды.
Несколько способов вывести повторяющуюся строку в Bash: собственная функция repeat, seq, printf и tr. Разбираем параметры функции, двойное тире printf и компактные однострочные команды.
Разбираем mktemp через strace и подменяем результат системного вызова openat. Эксперимент показывает, сколько имён перебирает coreutils при ошибке EEXIST и откуда берётся число попыток.
MySQL-реплика отстала на три месяца, но Prometheus и Grafana не подняли тревогу. Разбираем самодельный Bash-экспортёр, значение Null в Seconds_Behind_Master и исчезнувшую метрику.
Разбираем числовой errno из лога MySQL с помощью штатной утилиты perror. На примере ошибки 24 находим лимит открытых файлов и проверяем open_files_limit, ulimit и системные ограничения.
Пишем первый юнит-тест для Bash-скрипта с фреймворком bashunit. Разбираем установку, assert_equals, успешный и проваленный прогон, а также другие доступные проверки.
Создаём зомби-процесс на C и Bash, находим его и родительский PID через ps и разбираем завершение процесса. Объясняем, почему kill по PID зомби не помогает и когда такие записи можно не трогать.
Разбираем недорогую конфигурацию прерываемого сервера Selectel для лабораторий и тестовых стендов. Обсуждаем регион, сетевые диски, повторный запуск, тарификацию остановленных ресурсов и ограничения такого подхода.
Личный опыт постепенного отказа от алкоголя без рекомендаций и универсальных рецептов. Автор рассказывает, какие последствия употребления заставили изменить привычки и почему одна рюмка со временем стала не нужна.
Практический кейс сокращения расходов на десятки серверов тестовой инфраструктуры. Переносим стенды в Yandex Cloud, автоматически выключаем их ночью и в выходные, а бот учитывает активность тестировщиков и метрики Prometheus.
Практическое знакомство с Crane для работы с контейнерными образами без Docker-клиента. Копируем образы между реестрами, экспортируем файлы, сравниваем конфигурации, считаем размер и меняем метки без повторной сборки.
Включаем Vim mode в Obsidian, чтобы писать заметки и одновременно поддерживать мышечную память команд редактора. Практический опыт совмещения базы знаний и привычного клавиатурного управления.
Кандидаты всё чаще зачитывают на технических собеседованиях ответы нейросетей вместо собственных рассуждений. Рассказываю о простом фильтре с закрытыми глазами, который помогает быстро проверить знания, честность и способность …
Почему знание GitLab часто встречается в DevOps-вакансиях и насколько оно переносимо между CI/CD-платформами. Разбираем GitLab Community Edition, пайплайны и важность общей базы вместо привязки к одному инструменту.
Настраиваем выпадающий терминал Quake Mode в Windows Terminal через settings.json. Разбираемся с глобальной клавишей вызова, вкладками, переключением между ними и режимом фокуса.
Рабочая история о коте, оставленном MacBook и неожиданно дорогих последствиях удалённой работы. Напоминание о том, почему технику и домашних животных лучше не оставлять без присмотра.
Авторская схема коротких и понятных имён серверов на примере инфраструктуры в Selectel. Разбираем префиксы проектов, роли инстансов, цифровые индексы и причины не усложнять hostname регионами без необходимости.
Личный опыт постепенного снижения веса со 130 до 85 килограммов без краткосрочной диеты. Автор рассказывает об изменении питания, размере порций, периодах стабилизации веса и безопасном темпе похудения.
Ироничный гороскоп для разработчиков, DevOps-инженеров и всех, кто живёт среди коммитов, багов и продакшена. Двенадцать знаков зодиака получают советы о коде, Git, выгорании, автоматизации и пет-проектах.
История о смене DevOps-инженеров, усложнении рабочей инфраструктуры и внезапном переходе на Teleport. Почему новые практики нужно согласовывать, а систему — упрощать без потери доступа владельца.
Личный опыт снижения веса со 130 до 85 килограммов и его дальнейшего контроля. Ежедневное взвешивание, режим питания и сна, физическая нагрузка и наблюдения о колебаниях веса.
Личный опыт отказа от курения после нескольких неудачных попыток. Автор рассказывает о собственных ошибках, первых тяжёлых месяцах и приёмах, которые использовал в 1998 году.
Включаем Vim mode в Obsidian, чтобы писать заметки и одновременно поддерживать мышечную память команд редактора. Практический опыт совмещения базы знаний и привычного клавиатурного управления.
Настраиваем выпадающий терминал Quake Mode в Windows Terminal через settings.json. Разбираемся с глобальной клавишей вызова, вкладками, переключением между ними и режимом фокуса.
Знакомимся с утилитой bat — улучшенным просмотрщиком файлов с подсветкой синтаксиса, нумерацией строк и интеграцией Git. В статье собраны установка, alias для batcat и основные примеры команд.
Настраиваем iVentoy как простой PXE-сервер для установки Linux и Windows по сети без флешек. В материале есть команды установки, запуск веб-интерфейса, каталог ISO и unit-файл systemd.
Утилита ccze добавляет цветовую подсветку к системным логам в терминале и выделяет ошибки. Показываем работу с cat и tail, сохранение последних строк в цветной HTML-файл и просмотр доступных плагинов.
Bash-скрипт запускает долгую команду в фоне и показывает текстовую анимацию до её завершения. Разбираем временный лог, trap, tput, сигналы, PID процесса и очистку терминального вывода.
Пишем Bash-скрипт, который архивирует файлы на сервере, отправляет tar.gz через Telegram Bot API и удаляет временный архив. Разбираем chat_id, bot_token, curl, подписи и ограничение размера.
Настраиваем общий доступ к терминалу Linux и macOS через tty-share без тяжёлых видеозвонков. Разбираем публичную и локальную сессии, режим только для чтения, завершение процесса и альтернативные инструменты.
Реализуем расширенную Basic Auth-аутентификацию в Nginx с помощью Lua и базы MySQL. Скрипт OpenResty читает заголовок Authorization, хеширует пароль, проверяет пользователя и передаёт запрос в защищённый location.
Устанавливаем Bash-утилиту tmpmail и создаём одноразовый почтовый адрес прямо в терминале. Показываем генерацию адресов, выбор домена, просмотр входящих писем и получение последнего сообщения в текстовом виде.
Автоматизируем передачу файлов с сервера скриптом на Bash: проверяем размер, упаковываем крупные данные, загружаем их через curl в transfer.sh и получаем ссылку. Отдельно обсуждаем лимиты сервиса и безопасность.
Почему df показывает 100% занятого места, а du и ncdu не находят крупные файлы. Разбираю Hidden Space Explorer (hsed) — TUI-утилиту для поиска удалённых, но открытых файлов в Linux, освобождения дискового пространства и …
Я потыкал Termix, бесплатный аналог Termius. И Termix выигрывает в открытости, поддержке SSH туннелей и возможности управлять файлами из браузера. Минусы – нестабильный VNC, странные анимации панели и наверное необходимость ручных …
У меня на малинке висит целый зоопарк Jellyfin, qBittorrent, Grafana, Prometheus, Uptime Kuma и куча другого. Portainer для таких целей избыточен как космический корабль для поездки в магазин. Да и интерфейс там сделан через жопу …
Ностальгическая музыка демо-сцены в удобном формате. Веб-плеер, браузерные расширения и возможность скачать коллекцию бесплатно.
Личный опыт постепенного отказа от алкоголя без рекомендаций и универсальных рецептов. Автор рассказывает, какие последствия употребления заставили изменить привычки и почему одна рюмка со временем стала не нужна.
Настраиваем разные правила sshd для пользователей и адресов через блок Match. Рассматриваем парольную аутентификацию последнего шанса, шаблоны условий и проверку итоговой конфигурации командой sshd -T -C.
Показываем, как отфильтровать строки одного текстового файла по списку из другого с помощью конструкции NR == FNR и массива awk. Разбираем работу NR, FNR и next, выбор столбцов и ограничение по памяти без обязательной …
Личный опыт постепенного снижения веса со 130 до 85 килограммов без краткосрочной диеты. Автор рассказывает об изменении питания, размере порций, периодах стабилизации веса и безопасном темпе похудения.
Строим связку из SSH-бастиона и изолированной машины без выхода в интернет для удалённых пользователей. Настраиваем ключи, принудительную оболочку и автоматический переход на внутренний сервер.
Пишем Bash-watchdog, который проверяет доступность интернета и наращивает интервалы попыток восстановления связи. Для физической перезагрузки роутера подключаем недорогое USB-реле и управляем им через последовательный порт.
Сравниваем X11 Forwarding и RDP в Docker для удалённой работы с графическими приложениями на Linux-сервере. Разбираем подключение GPU NVIDIA и AMD, необходимые устройства контейнера и безопасный SSH-туннель.
Разбираем обработку стрелок, Home, End и F1–F12 в интерактивном Bash-скрипте. Функция GET_KEY переводит многобайтные управляющие последовательности терминала в hexadecimal-коды.
Личный опыт снижения веса со 130 до 85 килограммов и его дальнейшего контроля. Ежедневное взвешивание, режим питания и сна, физическая нагрузка и наблюдения о колебаниях веса.
Сценарий отката сетевой конфигурации удалённого Linux-сервера без IPMI и локального администратора. Резервная копия /etc, задание cron после перезагрузки и проверка успешного входа по SSH.
Личный опыт отказа от курения после нескольких неудачных попыток. Автор рассказывает о собственных ошибках, первых тяжёлых месяцах и приёмах, которые использовал в 1998 году.
Автор превращает безвентиляторный Celeron N2840 в домашний роутер и сравнивает pfSense, Debian и IPFire. В материале — проблемы Wi-Fi, реальные замеры iperf3, нагрев корпуса и итог эксперимента.
Знаешь это чувство, когда ждёшь регресс дольше, чем сам работаешь? У меня рантайм был 34 минуты, и две трети времени уходило на очистку QA-стенда. Решение пришло через Docker и Testcontainers — теперь тесты летят за 14 минут, а …
Однажды я вручную гонял регресс 5 недель. Больше я так не хочу. Я построил фреймворк, который за 30 минут прогоняет то, на что раньше уходил месяц. Но главное — на этапе проектировки запросов мы нашли столько дефектов в SOAP API, …
Мне за 30, я видел много скриптов с дьявольскими отрицаниями, и каждый раз хотелось задушить автора. Поэтому я решил написать пост, в котором покажу как превратить кошмарную конструкцию в простой if-else без единого лишнего знака. …
Навигация по знаниям
Скрипты, однострочники, awk, cron, mapfile и практическая автоматизация рутины.
→ DevOps и рабочие процессыCI/CD, инфраструктура, Ansible, пайплайны, рабочие практики и инженерная рутина.
→ Docker, Podman и контейнерыВсе про контейнеры: Docker, Podman, сборки, окружение, управление и смежные инструменты.
→ Linux и администрированиеСистемное администрирование Linux, диагностика, утилиты, права, systemd, файловые системы и сеть.
→
Загружаем свежие комментарии…