i_odmin | Unsorted

Telegram-канал i_odmin - Системный администратор

25978

Все для системного администратора. По всем вопросам @evgenycarter РКН clck.ru/3KoDXp

Subscribe to a channel

Системный администратор

Обновления К2 Облака – из первых рук

К2 Облако – облачная платформа собственной разработки, и с начала года команда K2 Cloud выпустила много новых сервисов.

24 июня подключайтесь к вебинару и узнайте от разработчиков, какие задачи решают обновления, как они работают и будут развиваться.

В программе

🔹Новый регион К2 Облака ru-spb: полноценная катастрофоустойчивость

🔹Сети: новый сервис Direct Connect, ALB

🔹Хранение данных: Elastic File System, сетевые нереплицируемые NVMe-диски

🔹Обновления PaaS: гибкое управление параметрами дисков, запуск сервисов по потребности, Kafka, ALB для Kubernetes

Спикеры

Владислав Одинцов
Техлид, Product Owner сетевых сервисов K2 Cloud

Олег Сидоренко
Разработчик команды сервисов хранения данных K2 Cloud

Александр Чернев
Старший инженер команды платформенной разработки K2 Cloud

📅 24 июня, 11:00

Подробности и регистрация >>

Читать полностью…

Системный администратор

🚀 MEETUPxSPRINT OFFER для инженеров технической поддержки от YADRO

Хочешь узнать, как устроена техническая поддержка в одной из ведущих технологических компаний России? Приходи на онлайн-митап от YADRO! Расскажем, покажем, ответим на любые вопросы — и дадим возможность попасть в команду всего за 3 дня!

🔥 Программа митапа:

✔️ Сервисная служба YADRO: основные ресурсы и направления
Василий Бронников, Руководитель отдела техподдержки решений

✔️ Наши продукты: уникальные характеристики и возможности
Андрей Антоненко, Ведущий инженер техподдержки TATLIN

✔️ Реальные кейсы: как команды решают сложные задачи
Дмитрий Сафонов, Руководитель группы L1-поддержки TATLIN.UNIFIED

🔥 Что тебя ждёт:

➖ Реальные кейсы и инсайты из практики техподдержки
➖ Доклады от инженеров YADRO: продукты, процессы, особенности
➖ Живое общение с командой и ответы на вопросы о работе и технологиях

👨‍💻 А если ты задумываешься о новой работе — у тебя есть возможность быстро попасть в команду YADRO и получить оффер за 3 дня. Для этого нужно пройти короткий тест. Сделать это можно уже сейчас, а также во время или после митапа — выбирай, как тебе удобно (но заявки принимаем до 6 июля).

📌 Тест можно пройти по ссылке.

➖➖➖

🗓 26 июня, начало в 19:00 мск, четверг

🌐 ОНЛАЙН

Регистрация на мероприятие

Реклама. ООО "ЭВРОНЕ.РУ". ИНН 3663057399. erid: 2VtzqwTnD4A

Читать полностью…

Системный администратор

Bash. Часть 3

21 Bash Логирование операций удаления
22 Bash Удобный вывод сдержимого каталогов
23 Bash Реализация locate
24 Bash Имитация DIR из MS DOS
25 Bash Консольный блокнот с возможностью поиска по записям
26 Bash Консольный интерактивный калькулятор
27 Bash Кредитный калькулятор
28 Bash Напоминание о событиях
29 Bash Вывод файла с нумерацией строк

источник

👉 @i_odmin

Читать полностью…

Системный администратор

Bash. Часть 2

11 Bash Проверка ввода: число в заданном диапазоне
12 Bash Проверка ввода: Вещественные числа Подключение сторонних сценариев
13 Bash Проверка введенной даты
14 Bash Произвольные вычисления с заданной точностью
15 Bash Блокировка файлов
16 Bash Создание и использование библиотек
17 Bash Отладка сценариев и поиск ошибок
18 Bash Форматирование длинных строк
19 Bash Автоматическое резервное копирование файлов при удалении
20 Bash Восстановление файлов из резервных копий

источник

👉 @i_odmin

Читать полностью…

Системный администратор

Bash. Часть 1

1 Bash - Введение
2 Bash - Базовые понятия и логические конструкции
3 Bash - Циклы
4 Bash Конструкция case
5 Bash Функции
6 Bash Специальные символы
7 Bash Поиск программы в PATH
8 Bash Проверка ввода: только буквы и цифры
9 Bash Нормализация дат
10 Bash - Удобное представление больших чисел

источник

👉 @i_odmin

Читать полностью…

Системный администратор

👋 Привет, админы!

Сегодня словил интересный баг с WinRM на новых машинах в домене. После настройки через GPO и попытки подключения по PowerShell Remoting — облом:


WinRM cannot process the request. The following error occurred while using Kerberos authentication: Cannot find the computer X. Verify that the computer exists on the network and that the name provided is spelled correctly.


Хотя DNS работает, ping проходит, GPO с настройками WinRM прилетела. Где собака зарыта? 🐶

🔍 Проблема оказалась в отсутствии регистрации SPN для машины в AD. Без него Kerberos просто не может авторизовать подключение. Решается вот так:


setspn -S WSMAN/имя_компьютера имя_компьютера


Если машин много — автоматизируем через PowerShell:


$computers = Get-ADComputer -Filter * | Select-Object -ExpandProperty Name
foreach ($comp in $computers) {
setspn -S "WSMAN/$comp" $comp
}


⚠️ Конечно, нужны права на запись SPN (обычно у админа домена). После регистрации SPN — всё взлетело без ошибок.

💬 А у тебя были проблемы с WinRM или Kerberos? Как настраиваешь remoting — вручную, через DSC, GPO или Ansible?

👉 @win_sysadmin

Читать полностью…

Системный администратор

⚠️ До старта курса «Administrator Linux. Basic» осталось совсем немного. Набор закрывается 27 июня.

👉 Успейте пройти вступительный тест и получить запись двух вебинаров бесплатно:
— «Что нужно знать, когда переходишь с Windows на Linux. Базовые понятия Linux, работа в консоли с базовыми командами»
— «Вся правда о рынке труда или как быть востребованным в современных реалиях»

💪 Курс построен так, чтобы даже без опыта в Linux вы быстро вошли в профессию. В программе только актуальное: Bash, сети, логика работы ОС, файловые системы и автоматизация.

👉 Пройдите бесплатное вступительное тестирование сегодня и получите запись двух вебинаров: https://vk.cc/cMTUai

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

Системный администратор

Linux

Три простых способа создания загрузочных флешек в Linux
Timeshift как Time Machine только для Linux
Автоматизация задач в Linux с помощью crontab и таймеров systemd
Создание и управление RAID массивами в РОСА ОС Linux
Установка российских SSL сертификатов в Linux
Перенос виртуальных машин из VirtualBox и Hyper V в QEMU KVM
Настройка KDE Connect AirDrop давай до свидания!
Файловая система Linux
Этапы загрузки ОС Linux
Управление доступом в ОС Linux

источник

👉 @i_odmin

Читать полностью…

Системный администратор

Виртуальная память: пример пошагового преобразования адреса Eng ver

Как работает трансляция виртуальной памяти. Преобразование номера виртуальной страницы и смещения в номер физической страницы и смещение. Записи таблицы страниц на диске. Ошибки страниц (page faults). Страницы размером 4 КБ против более крупных страниц.

источник

👉 @i_odmin

Читать полностью…

Системный администратор

📕 Управление ресурсами в ClickHouse для разработчиков, администраторов баз данных, инженеров и аналитиков данных

На открытом уроке 17 июня в 20:00 мск мы разберем тонкости управления ресурсами и профилирования запросов в ClickHouse:

📗 На вебинаре разберём:
1. Методы управления ресурсами в ClickHouse: настройка квот, ограничений и профилей пользователей;
2. Детальное профилирование запросов для выявления узких мест и оптимизации их выполнения;

📘 В результате на практике разберете важные аспекты для обеспечения высокой производительности и стабильности работы системы в ClickHouse.

👉 Регистрация и подробности о курсе ClickHouse для инженеров и архитекторов БД: https://vk.cc/cMSNEV

Все участники открытого урока получат скидку на курс "ClickHouse для инженеров и архитекторов БД"

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Системный администратор

KubeVirt: глубокое погружение для администраторов VMware vSphere

KubeVirt — это расширение для Kubernetes, которое позволяет запускать виртуальные машины внутри K8s-кластера. Именно эта технология, пусть и существенно доработанная, лежит в основе Deckhouse Virtualization Platform. Недавно наша команда встретила статью Дина Льюиса, которая отлично объясняет внутреннее устройство KubeVirt, принципы его работы и то, как они соотносятся с более привычными многим концепциями vSphere. Мы решили перевести её для сообщества.

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

https://habr.com/ru/companies/flant/articles/915942/

original https://veducate.co.uk/kubevirt-for-vsphere-admins-deep-dive-guide/

👉 @i_odmin

Читать полностью…

Системный администратор

Nexterm

ПО с открытым исходным кодом для управления серверами через SSH, VNC и RDP

Позволяет:

🟢Подключаться удалённо через SSH, VNC и RDP
🟢Управлять файлами через SFTP
🟢Развёртывать приложения с помощью Docker
🟢Управлять контейнерами Proxmox LXC и QEMU
🟢Обеспечивать безопасный доступ с двухфакторной аутентификацией

https://github.com/gnmyt/Nexterm

👉 @i_odmin

Читать полностью…

Системный администратор

Вебинар «Анализ требований и их влияние на архитектуру»

✔️ 16 июня в 20:00 МСК в рамках старта курса «System Design» от Otus. Вебинар будет полезен разработчикам, архитекторам, техническим лидам и системным аналитикам.

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

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

🚀 Регистрация: https://vk.cc/cMQtAI

А еще, успей воспользоваться 🏷10% скидкой на курс «System Design» и 🎁 бонусным промокодом SD_5 . Выгодные условия действуют с 12 по 15 июня включительно!

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Системный администратор

📊 Grafana: продвинутый уровень визуализации и алертинга

🔥 19 июня в 20:00 мск приглашаем на бесплатный вебинар «Grafana — продвинутое использование» с Анатолием Бенем.
Это больше, чем графики — это визуальный интеллект вашей системы.

Что вас ждёт:

– переменные, шаблоны и динамические панели для гибкой визуализации,
– создание информативных дашбордов с PromQL и данными из Prometheus, Loki, Elasticsearch и других источников,
– настройка умных алертов и управление инцидентами,
– подключение плагинов, настройка авторизации, best practices для команд.

Узнайте, как превратить Grafana в мощный центр наблюдаемости, настроенный под вашу инфраструктуру.

👉 Регистрируйтесь по ссылке: https://vk.cc/cMMw88

Занятие приурочено к старту курса "Observability: мониторинг, логирование, трейсинг", на котором вы научитесь строить эффективные системы мониторинга, работать с Prometheus, Grafana, ELK и другими инструментами, визуализировать метрики.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Системный администратор

☁️ Cosmos-Server

Самый безопасный и простой в развертывании домашний сервер. Возьмите под контроль свои данные и приватность, не жертвуя безопасностью и стабильностью (аутентификация, защита от DDoS, антибот).

Независимо от того, есть ли у вас сервер, NAS или Raspberry Pi с приложениями такими как Plex, HomeAssistant или даже блог, Cosmos — идеальное решение для их запуска и защиты. Просто установите Cosmos на свой сервер и подключайтесь к приложениям через него, чтобы сразу получить встроенную безопасность и надёжность для всех ваших сервисов.

Cosmos это:

🔹App Store 📦📱
Для простой установки и управления приложениями: удобные инсталляторы, автоматические обновления и проверки безопасности. При этом можно использовать и ручные методы установки — например, импорт файлов docker-compose или работу через CLI Docker.

🔹Storage Manager 📂🔐
Удобное управление дисками, включая паритетные диски и MergerFS.

🔹Network Storages 📡📂
На базе RClone: простой доступ к сетевым хранилищам (например, Dropbox), а также возможность шарить NFS/FTP и другие протоколы через UI, защищённый SmartShield.

🔹Reverse-Proxy 🔄🔗
Обратный прокси для контейнеров, других серверов или статических папок/SPA с автоматическим HTTPS и удобным интерфейсом.

🔹Authentication Server 🔐👤
Сильная безопасность, многофакторная аутентификация и поддержка разных стратегий (OpenID, форвард-заголовки, HTML-формы).

🔹Customizable Homepage 🏠🖼
Единая стартовая страница для доступа ко всем приложениям — красивая и настраиваемая.

🔹Container Manager 🐋🔧
Удобное управление контейнерами и их настройками, обновления и аудит безопасности. Включена поддержка docker-compose.

🔹VPN 🌐🔒
Безопасный доступ к приложениям из любой точки без открытия портов на роутере.

🔹Backups 📦🔒
Резервное копирование приложений с инкрементальными бэкапами, шифрованием и удалённым хранением (Restic под капотом).

🔹Monitoring 📈📊
Постоянный и реальный мониторинг с настраиваемыми оповещениями и уведомлениями о любых проблемах.

🔹Identity Provider 👦👩
Управление пользователями: приглашайте друзей и родных без передачи паролей, пусть они сами запросят смену пароля по email.

🔹SmartShield technology 🧠🛡
Автоматическая защита приложений без ручных настроек (анти-бот, анти-DDoS, теперь также TCP-защита для FTP, SSH, игр и др.).

🔹CRON 🕒🔧
Планировщик задач на сервере или внутри контейнеров.

Создано, чтобы быть:

🔹Простым в использовании 🚀👍
Лёгкая установка и управление через веб-интерфейс с любого устройства.

🔹Мощным 🧠🔥
Простота не в ущерб гибкости: при желании можно работать через терминал.

🔹Удобным для пользователя 🧑‍🎨
Подходит как новичкам, так и опытным — легко интегрируется в существующую среду и новые решения.

🔹Безопасным 🔒🔑
Единая учётная запись для всех приложений, шифрование данных, многофакторная аутентификация и поддержка OpenID. Безопасность заложена в основу, а не добавлена потом.

🔹Анти-бот 🤖❌
Комплекс мер для защиты от ботов: детекция по типовым признакам, IP-фильтрация и другое.

🔹Анти-DDoS 🔥⛔️
Переменные таймауты и троттлинг, ограничение по IP и гео-блокировка.

🔹Модульным 🧩📦
Лёгкое добавление новых функций и интеграций — запускайте только то, что нужно (например, без Docker, без БД или без HTTPS).


https://github.com/azukaar/Cosmos-Server

👉 @i_odmin

Читать полностью…

Системный администратор

apt-get — команда для управления пакетами программного обеспечения в дистрибутивах, основанных на Debian

Команда apt-get предназначена для работы с утилитой «apt», являющейся стандартной утилитой для управлении пакетами программного обеспечения в дистрибутиве Debian, а также основанных на нем дистрибутивах (Ubuntu, Linux Mint, ...).

Вы можете использовать apt-get для установки и удаления пакетов программного обеспечения из вашей системы (группами или по одному), а также обновления системных списков пакетов программного обеспечения из подключенных на данный момент репозиториев.

Примеры использования
Установка пакета программного обеспечения:

# apt-get install <имя пакета>

Переустановка пакета программного обеспечения:

# apt-get install --reinstall <имя пакета>

Удаление пакета программного обеспечения:

# apt-get remove <имя пакета>

Удаление пакета программного обеспечения со всему файлами конфигурации:

# apt-get --purge remove <имя пакета>

Поиск пакета программного обеспечения:

# apt-cache search <имя пакета>

Обновление списков пакетов программного обеспечения из подключенных репозиториев (файлов с расширением .deb):

# apt-get update

Обновление системы (полезно для поддержания программного обеспечения в актуальном состоянии):

# apt-get upgrade

Обновление дистрибутива (утилита попытается загрузить и установить пакеты программного обеспечения из состава новой версии дистрибутива):

# apt-get dist-upgrade

Вывод короткого списка всех доступных параметров команды:

# apt-get --help

Механизм автодополнения команд
Для активации механизма автодополнения команд apt-get по клавише Tab следует добавить строку

source /etc/bash_completion

в файл .bashrc из вашей домашней директории. После этого при вводе такой команды, как «apt-get install a» и нажатии клавиши Tab командная оболочка Bash попытается подставить имя пакета программного обеспечения.

Дополнительная информация
Попробуйте выполнить команду:

apt-get moo

Вы должны будете увидеть следующий вывод:

(__)
(oo)
/------/
/ | ||
* /---/

...."Have you mooed today?"…


Использование в других дистрибутивах
Если утилиты из комплекта поставки apt-get совместимы с вашим дистрибутивом, вы сможете воспользоваться штатным менеджером пакетов вашего дистрибутива для установки их в вашу систему. После окончания процесса установки вы сможете использовать приведенные выше команды для управления пакетами программного обеспечения дистрибутива.

Устранение неполадок в дистрибутивах, использующих пакеты RPM
В некоторых случаях после исполнения команды apt-get будет выводиться сообщение о невозможности блокировки определенной директории. Большинство проблем, вызывающих подобное поведение, решается путем исполнения следующей последовательности команд:

rm /var/lock/rpm/transaction
rm /var/lib/rpm/__db*
rm /var/cache/apt/archives/lock

👉 @i_odmin

Читать полностью…

Системный администратор

Шпаргалка по RAID

mdadm — утилита для работы с программными RAID-массивами различных уровней. В данной инструкции рассмотрим примеры ее использования.

Информация о RAID
cat /proc/mdstat - состояние всех RAID
mdadm -D /dev/md0 - подробная инфа о конкретном RAID
lsblk - список дисков с разделами, местом, типом
df -hT - свободное место, тип файловой системы, точки монтирования

Сборка RAID
mdadm —zero-superblock —force /dev/sd{b,c} - обнуление суперблоков на дисках sdb sdc (для удаления инфы о других RAID)
при получении ответа mdadm: Unrecognised md component device - /dev/sdb значит, что диск не использовался для RAID, продолжаем
mdadm —create —verbose /dev/md0 -l 1 -n 2 /dev/sd{b,c}
* где /dev/md0 — устройство RAID, которое появится после сборки; -l 1 — уровень RAID; -n 2 — количество дисков, из которых собирается массив; /dev/sd{b,c} — сборка выполняется из дисков sdb и sdc.

Создание файловой системы и монтирование массива
mkfs.ext4 /dev/md0 - создание файловой системы ext4 на md0
mount /dev/md0 /mnt - разово примонтировать md0 к /mnt
nano /etc/fstab, прописать /dev/md0 /mnt ext4 defaults 1 2 - постоянное монтирование, работает после перезагрузки

Восстановление RAID
Замена жесткого диска
При выходе из строя, команда mdadm -D /dev/md0 выдаст: State : clean, degraded
mdadm /dev/md0 —remove /dev/sdc - удалить сбойный диск
mdadm /dev/md0 —add /dev/sde - добавить новый диск в массив
Статус должен стать Rebuild Status : 40% complete и так до полного восстановления

Пересборка массива
Если нам нужно вернуть ранее разобранный или развалившийся массив из дисков, которые уже входили в состав RAID, вводим:
mdadm —assemble —scan - команда сама найдет необходимую конфигурацию и восстановит RAID.
mdadm —assemble /dev/md0 /dev/sdb /dev/sdc - с указанием из каких дисков пересобрать

Запасной диск (Hot Spare)
Если в массиве будет запасной диск для горячей замены, при выходе из строя одного из основных дисков, его место займет запасной.
mdadm /dev/md0 —add /dev/sdd - Диском Hot Spare станет тот, который просто будет добавлен к массиву

Добавить диск к массиву, расширить массив
Добавление активного диска к RAID, который будет использоваться для работы, а не в качестве запасного.
mdadm /dev/md0 —add /dev/sde

mdadm -G /dev/md0 —raid-devices=3 - расширяем RAID
* в данном примере подразумевается, что у нас RAID 1 и мы добавили к нему 3-й диск.

Установка mdadm
Если каким-то образом в дистрибутиве нет этого пакета
apt-get install mdadm

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

umount /mnt
* где /mnt — каталог монтирования нашего RAID.

mdadm -S /dev/md0

Затем очищаем суперблоки на всех дисках, из которых он был собран:
mdadm —zero-superblock /dev/sdb
mdadm —zero-superblock /dev/sdc
mdadm —zero-superblock /dev/sdd


👉 @i_odmin

Читать полностью…

Системный администратор

Устали сами собирать и обслуживать серверы?

Представьте, что можно использовать серверы только тогда, когда требуются дополнительные мощности: для тестирования, проведения экспериментов. Или наоборот, эксплуатировать круглосуточно, но не платить за электроэнергию и не заботиться о системе охлаждения.

Yandex BareMetal дает возможность арендовать выделенный сервер готовой конфигурации в ЦОДе провайдера за минуты. Парк оборудования составляют тысячи серверов готовых конфигураций. Забудьте про обслуживание и замену комплектующих — арендуйте нужный сервер на день, месяц или год при необходимости.

BareMetal поддерживает работу по API, SSH или через KVM: устанавливайте любую ОС, виртуализацию и софт.

➤ Подходит, если вы строите инфраструктуру как код
➤ Работает стабильно и прозрачно
➤ Разворачивайте десятки серверов за минуты без ручной рутины

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

Читать полностью…

Системный администратор

🤖❓ Как архитектору 1С эффективно использовать ИИ?

В мире 1С архитекторы всё чаще сталкиваются с необходимостью самостоятельно принимать решения, документировать и актуализировать их. Как ускорить этот процесс и минимизировать риски ошибок?

На открытом уроке мы покажем, как современные ИИ-инструменты (GigaChat, DeepSeek, Qwen) могут существенно ускорить анализ архитектуры и генерацию документации. Вы научитесь интегрировать ИИ в повседневные задачи и сможете оптимизировать свою работу.

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

⏰ Урок в преддверие старта курса «Архитектор 1С», все участники получат скидку на обучение. Встречаемся 19 июня в 19:00 МСК!

👉 Регистрируйтесь прямо сейчас, чтобы не пропустить: https://vk.cc/cMTVzA

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Системный администратор

🙀Ваш пароль был украден, измените его по ссылке…
Сможете ли вы распознать фишинг?
 
С каждым годом фишинг становится все изощреннее, а противостоять мошенникам — все сложнее. Один из ведущих провайдеров IT-инфраструктуры Selectel подготовил квиз с популярными схемами краж данных. Он напомнит, как важно сохранять бдительность в интернете.
 
Получится ли у вас раскрыть коварные замыслы мошенников?
 
Проверьте свои знания и внимательность в квизе от Selectel
 
Реклама. АО «Селектел», ИНН 7810962785, ERID: 2Vtzqw43iu4

Читать полностью…

Системный администратор

Linux. Часть 2
Часть 1

Загрузчик GRUB в ОС Linux
Обратный ssh туннель в ОС Linux reverse shell
Мониторинг и восстановление программного RAID в Linux
QEMU KVM управление с помощью qemu команд
Российский межсетевой экран Ideco UTM год использования
Как переводить инфраструктуру на Linux
Snap или Flatpak в чем различия
Оперирование с LVM Работа с мгновенными снимками

источник

👉 @i_odmin

Читать полностью…

Системный администратор

Дыра в щите Cloudflare: как атака на Jabber.ru вскрыла проблему, о которой молчат c 2023

Думаю, многие помнят позапрошлогодний инцидент с Man-in-the-Middle атакой на XMPP-сервис jabber.ru. Эта история наделала много шума, но, как мне кажется, главный вывод из неё так и не был усвоен широкой аудиторией. А зря. Потому что эта атака вскрыла системную уязвимость в процессе выдачи TLS сертификатов, которая напрямую касается миллионов сайтов, особенно тех, кто доверяет свою безопасность Cloudflare.

Я поднял эту тему на форуме Cloudflare 23 дня назад, но, как и в случае с другими подобными запросами, ответа не получил. Поэтому я здесь, чтобы разложить всё по полочкам вам.

https://habr.com/ru/articles/918570/

👉 @i_odmin

Читать полностью…

Системный администратор

🚗 Как найти кратчайший маршрут с помощью Apache Spark и GraphFrames

Разбираем кейс на реальных данных из OpenStreetMap — ищем оптимальный маршрут

🔍 Что делаем
1. Загружаем граф дорог города с помощью OSMnx
2. Сохраняем вершины и ребра с координатами, скоростями и геометрией
3. Загружаем всё в Spark
4. Находим кратчайший путь с помощью GraphFrames

📍 1. Скачиваем карту и строим граф улиц


import osmnx as ox

# Загрузка данных о дорогах Москвы
G = ox.graph.graph_from_place("Moscow", network_type="drive")

# Отображение дорог на карте
moscow_gdf = ox.geocoder.geocode_to_gdf("Moscow")
fig, ax = ox.plot.plot_graph(G, show=False, close=False, bgcolor="#111111", edge_color="#ffcb00", edge_linewidth=0.3, node_size=0)
moscow_gdf.plot(ax=ax, fc="#444444", ec=None, lw=1, alpha=1, zorder=-1)

# Настройка границ карты
margin = 0.02
west, south, east, north = moscow_gdf.union_all().bounds
margin_ns = (north - south) * margin
margin_ew = (east - west) * margin
ax.set_ylim((south - margin_ns, north + margin_ns))
ax.set_xlim((west - margin_ew, east + margin_ew))
plt.show()


📁 2. Сохраняем геометрическое описание города в формате GeoJSON и данные о вершинах и рёбрах в формате CSV

with open('Moscow.geojson', 'w') as file:
file.write(moscow_gdf.to_json())

nodes = G.nodes(data=True)
with open('nodes.csv', 'a') as file:
file.write("id,lat,lonn")
for (node, data) in nodes:
file.write("%d,%f,%fn" % (node, data.get("y"), data.get("x")))

edges = G.edges(data=True)
def decode_maxspeed(maxspeed):
match maxspeed:
case str():
match maxspeed.lower():
case "ru:urban": return 60
case "ru:rural": return 90
case "ru:living_street": return 20
case "ru:motorway": return 110
case _: return int(maxspeed)
case list(): return min(list(map(decode_maxspeed, maxspeed)))
case _: return maxspeed

with open('edges.csv', 'a') as file:
file.write("src,dst,maxspeed,length,geometryn")
for (src, dst, data) in edges:
maxspeed = decode_maxspeed(data.get("maxspeed", 999))
length = float(data.get("length"))
geometry = shapely.wkt.dumps(data.get("geometry"))
file.write("%d,%d,%d,%f,%sn" % (src, dst, maxspeed, length, geometry))


3. Используем библиотеку GraphFrames для обработки графов на Apache Spark


from pyspark.sql import SparkSession

spark = SparkSession.builder
.config("spark.jars.packages", "graphframes:graphframes:0.8.4-spark3.5-s_2.12")
.master("local[*]")
.appName("GraphFrames")
.getOrCreate()

nodes = spark.read.options(header=True).csv("nodes.csv")
edges = spark.read.options(header=True).csv("edges.csv")

# Вычисление времени прохождения рёбер
edgesT = edges.withColumn("time", edges["length"] / edges["maxspeed"])

# Построение графа
from graphframes import *

g = GraphFrame(nodes, edgesT)


🧭 4. Ищем кратчайший путь по времени
например, от Измайлово до ЖК Зиларт

src = "257601812"
dst = "5840593081"

paths = g.shortestPaths(landmarks=[dst])
paths.filter(F.col("id") == src).show(truncate=False)


💡 Результат: 40 шагов от точки A до точки B.

Такой подход легко масштабируется на миллионы маршрутов. Используйте Spark и GraphFrames для построения логистических моделей, маршрутизации и городского планирования.

🚀 Хотите прокачаться в работе с Big Data? Изучайте Spark! Записывайтесь на курс Spark Developer от OTUS — учитесь на реальных данных и продвинутых кейсах: https://vk.cc/cMSTdo

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Системный администратор

🔥 Бэкап базы данных MySQL с автоматической ротацией 🔄

Если у тебя есть сервер с MySQL/MariaDB, автоматический бэкап с ротацией — must have для спокойной жизни 😌

Вот простой скрипт, который:

1. Делает дамп всех баз
2. Сохраняет в архив с датой
3. Удаляет архивы старше N дней


#!/bin/bash
# автор: /channel/bash_srv

# Папка для бэкапов
BACKUP_DIR="/opt/backups/mysql"
# Кол-во дней хранения
RETENTION_DAYS=7
# Дата для имени файла
DATE=$(date +'%Y-%m-%d_%H-%M')

# Учетные данные
DB_USER="root"
DB_PASS="mypassword"

mkdir -p "$BACKUP_DIR"

# Делаем дамп
mysqldump -u"$DB_USER" -p"$DB_PASS" --all-databases | gzip > "$BACKUP_DIR/mysql_backup_$DATE.sql.gz"

# Удаляем старые бэкапы
find "$BACKUP_DIR" -type f -name "*.gz" -mtime +$RETENTION_DAYS -delete

echo "✅ Бэкап MySQL завершён: $DATE"


🛠 Рекомендуется повесить в крон, например, на каждый день в 3:00:


0 3 * * * /path/to/backup_mysql.sh


👀 Теперь бэкапы всегда под контролем, а лишние файлы не засоряют диск.

👉@bash_srv

Читать полностью…

Системный администратор

🛠 SSH-клиент Termius — удобный инструмент для админа

Если тебе нужен кроссплатформенный SSH-клиент с удобным интерфейсом и синхронизацией между устройствами — присмотрись к Termius.

💡 Что умеет Termius:

✅ Поддержка SSH, Mosh и Telnet
✅ Управление серверами по группам и тегам
✅ Поддержка ключей SSH и Snippets (сниппеты команд)
✅ Синхронизация между десктопом и смартфоном
✅ Локальные терминалы и SFTP в одном окне
✅ Темы, вкладки, автодополнение, кастомизация UI

📱 Где работает:

* Windows / macOS / Linux
* iOS / Android
* Web-версия в браузере

⚙️ Кому подойдёт:

* Тем, кто часто переключается между машинами
* Админам, которые работают на ходу (мобильное приложение на высоте)
* Тем, кто устал от кучи конфигов и хочет порядок в соединениях

🧩 Есть ложка дёгтя:

* Некоторые функции (синхронизация, SFTP, Snippets) доступны только в Pro-версии
* Цена подписки может кусаться, особенно для индивидуального использования

https://termius.com/

👉 @i_odmin

Читать полностью…

Системный администратор

📊 Хотите стать экспертом в Observability? Начните с теста!

Курс OTUS «Observability: мониторинг, логирование, трейсинг» — это практическое обучение работе с Prometheus, Grafana, ELK, Loki, Jaeger и другими инструментами. Вы научитесь строить отказоустойчивые системы мониторинга и логирования, настраивать алерты и визуализировать данные.

🔍 Пройдите вступительное тестирование, чтобы:

▪️Оценить свой текущий уровень знаний.

▪️Узнать, насколько вы готовы к курсу.

📅 Тест занимает около 30 минут. Результаты будут отправлены на вашу электронную почту. Повторное прохождение теста доступно через 3 дня.

👉 Пройти тестирование
https://vk.cc/cMSwTp

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Системный администратор

Microsoft выпустила скрипт на PowerShell, который создаёт папку «C:\inetpub», если она была удалена в Windows 11

Microsoft выпустила скрипт на PowerShell под названием Set-InetpubFolderAcl, который создаёт папку «C:\inetpub», если она была удалена в Windows 11. Это необходимо, даже если в системе нет Internet Information Services (IIS), причём эту папку не нужно удалять из-за соображений безопасности.

https://habr.com/ru/news/916380/


👉 @i_odmin

Читать полностью…

Системный администратор

Как стать мастером Linux 🐧

1. Исследуйте проблему
– Ищите информацию об ошибке в официальной документации (man-страницы, info), на сайтах дистрибутивов и в специализированных ресурсах.

2. Проверяйте логи и конфиги
– Анализируйте системные журналы (/var/log), настройки сервисов и параметры ядра, чтобы понять контекст возникновения проблемы.

3. Обращайтесь к профессиональным сообществам
– Читайте темы на форумах, в списках рассылок (LKML) и чатах (IRC, Matrix), даже если решение помечено неофициальным.

4. Разбирайтесь в глубине
– Исследуйте зависимые модули, исходный код и взаимодействие компонентов (сеть, файловая система, PAM), чтобы выявить коренную причину.

5. Автоматизируйте и повторяйте
– Скриптуйте типовые задачи, фиксируйте опыт в вики или Git, регулярно практикуйтесь и обновляйте свои знания. ♻️

👉 @i_odmin

Читать полностью…

Системный администратор

Bash-совет: анализ неудачных SSH-логинов и бан «горячих» IP 🔒🐚

Хотите быстро узнать, какие IP вызывают максимум неудачных попыток входа в SSH, и оперативно заблокировать самых настырных? Ниже скрипт:


#!/usr/bin/env bash
# ssh_fail_analyzer.sh
# Анализ неудачных SSH-попыток и вывод TOP-10 IP

LOG_FILE="/var/log/auth.log" # путь к логам (для CentOS: /var/log/secure)
TOPN=10 # сколько IP показывать

echo "Топ $TOPN IP с неудачными SSH-входами:"
grep -E "Failed password for" "$LOG_FILE" \
| grep -oP '(?<=from )[\d\.]+' \
| sort \
| uniq -c \
| sort -rn \
| head -n "$TOPN"


Как это работает

1. grep -E "Failed password for"
Ищем все строки с неудачными попытками.
2. grep -oP '(?<=from )\[\d.]+'
С помощью PCRE-регулярки достаём только IP-адреса после слова "from".
3. sort | uniq -c | sort -rn
Сортируем, считаем вхождения и выводим в порядке убывания.
4. head -n "\$TOPN"
Ограничиваем результат топ-10.


🛠 Можно добавить в crontab ежедневный запуск и автоматическую отправку отчёта на почту или сразу бан «горячих» IP через iptables:


# в crontab: каждый день в 00:10
10 0 * * * /path/to/ssh_fail_analyzer.sh | mail -s "SSH Fail Report" admin@example.com


Или сразу блокировать подозрительные IP, если они превысили порог:


THRESHOLD=50
for ip in $(grep -E "Failed password for" "$LOG_FILE" \
| grep -oP '(?<=from )[\d\.]+' \
| sort | uniq -c \
| awk -v t="$THRESHOLD" '$1 > t {print $2}'); do
iptables -I INPUT -s "$ip" -j DROP
echo "$(date): Заблокирован $ip за превышение $THRESHOLD неудачных попыток" >> /var/log/ssh_ban.log
done


👉@bash_srv

Читать полностью…

Системный администратор

Почему нельзя парсить вывод ls(1)

Команда ls(1) довольно хорошо показывает атрибуты одного файла (по крайней мере в некоторых случаях), но когда вы запрашиваете список файлов, возникает серьёзная проблема: в Unix имя файла может содержать почти любой символ — пробелы, переносы строк, запятые, символы конвейера и почти всё, что только можно использовать в качестве разделителя, за исключением NUL.

По умолчанию, если ls выводит не в терминал, имена файлов разделяются символами новой строки. Это нормально до тех пор, пока в имени не встретится перенос строки. Поскольку немногие реализации ls умеют завершать имена NUL-ом вместо перевода строки, получить безопасный список имён с помощью ls практически невозможно — по крайней мере, портируемо.


$ touch 'a space' $'a\nnewline'
$ echo "don't taze me, bro" > a
$ ls | cat
a
a
newline
a space


На первый взгляд кажется, что у нас два файла a, один newline и один a space. Но если выполнить ls -l, выясняется совсем другое:


$ ls -l
total 8
-rw-r----- 1 user user 19 Mar 27 10:47 a
-rw-r----- 1 user user 0 Mar 27 10:47 a?newline
-rw-r----- 1 user user 0 Mar 27 10:47 a space


Ни человек, ни программа не могут сказать по выводу ls, где именно заканчивается имя файла: это слово? Это строка? Нет однозначного ответа. Более того, иногда ls искажает символы, заменяя перевод строки на вопросительный знак (или \n) в зависимости от реализации. Вывод ls нельзя считать достоверным представлением имён файлов.


Перечисление файлов или выполнение операций с файлами

Если вам нужно просто обойти все файлы в текущей директории, используйте цикл for и глоб:


# Хорошо!
for f in *; do
[ -e "$f" ] || [ -L "$f" ] || continue
# ... обработка "$f"
done


Для пустой папки можно включить опцию nullglob (только в Bash), чтобы она не возвращала литерал *:


# Bash
shopt -s nullglob
for f in *; do
# ... обработка "$f"
done


Никогда не делайте так:


# Плохо! Не делайте этого!
for f in $(ls); do
...
done

# Плохо! То же самое с find:
for f in $(find . -maxdepth 1); do
...
done

arr=($(ls))
for f in "${arr[@]}"; do
...
done

# Ещё хуже:
f() {
local f
for f; do
...
done
}
f $(ls)


Если вам нужна сортировка по времени модификации (mtime), не делайте ls -t | head -1. Воспользуйтесь специальными рекомендациями по Bash или напишите свой скрипт на Perl, который сам будет открывать директорию и сортировать файлы.

Лучший вариант — перенести время в имя файла в формате YYYYMMDD, тогда порядок глоба совпадёт с порядком по mtime.

Или используйте find с NUL-разделителем:


find . -type f -print0 | while IFS= read -r -d '' filename; do
# ... обработка "$filename"
done


Часто вам не нужен список имён вообще, а нужно сразу выполнить команду над файлами — find умеет передавать имена напрямую в другие команды без промежуточного вывода.


Получение метаданных файла

Если нужна только размерность файла, используйте портируемый POSIX-способ:


size=$(wc -c < "$file")


Некоторые реализации wc читают файл целиком, но большинство применяют fstat(2).

Для других метаданных удобно пользоваться GNU-утилитами stat и find -printf:


# GNU stat
size=$(stat -c %s -- "$file")

# GNU find
totalSize=$(find . -maxdepth 1 -type f -printf %s+)


Если всё-таки придётся парсить вывод ls -l, соблюдайте строгие правила:

1. Запускайте ls только для одного файла: разделителей для надёжного парсинга не существует.
2. Не разбирайте дату/время — формат сильно зависит от платформы и локали.
3. Используйте опции -d и --, чтобы избежать проблем с директориями и именами, начинающимися с -.
4. Устанавливайте локаль C/POSIX, чтобы вывод был предсказуем.
5. Для владельца и группы лучше -n вместо -l, чтобы получить числовые идентификаторы.

Надёжный пример:


IFS=' ' read -r mode links owner _ < <(LC_ALL=C ls -nd -- "$file")
mode=${mode:0:10}


👉 @i_odmin

Читать полностью…
Subscribe to a channel