Все для системного администратора. По всем вопросам @evgenycarter РКН clck.ru/3KoDXp
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.
setspn -S WSMAN/имя_компьютера имя_компьютера
$computers = Get-ADComputer -Filter * | Select-Object -ExpandProperty Name
foreach ($comp in $computers) {
setspn -S "WSMAN/$comp" $comp
}
⚠️ До старта курса «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
Linux Mint получил встроенную поддержку входа по отпечатку пальца
В последнем ежемесячном обзоре новостей от команды Linux Mint разработчики анонсировали интегрированную поддержку входа по отпечатку пальца. Новая функция появится в Linux Mint 22.2, работающем на Fingwit.
Fingwit работает на новом XApp, созданном разработчиками Mint. Он обрабатывает обнаружение сканера отпечатков пальцев и запись отпечатков. После настройки пользователь может использовать свой отпечаток пальца для экрана входа, заставки, аутентификации команд sudo и любых других административных действий, которые выводят всплывающее диалоговое окно пароля (pkexec).
Fingwit использует fprintd для бэкенд-работы, но разработчики Mint говорят, что пользовательский модуль аутентификации сможет обнаруживать сложные случаи, когда сканирование отпечатка пальца может вызвать сбой. Например, если домашний каталог зашифрован, то расшифровки необходим пароль при входе в систему. Простое использование отпечатка пальца приведет к сбою сеанса. Fingwit в этот момент динамически запрашивает пароль.
Команда Mint заявляет, что Fingwit сможет работать «в любой среде рабочего стола и в любом дистрибутиве Linux».
Значительным стимулом для этой разработки стала продолжающаяся работа команды с Framework. Тестирование оборудования компании подтолкнуло команду Mint к поддержке функций, встроенных в современные ноутбуки.
Команда также анонсировала множество других изменений. В рамках этой работы основные приложения, такие как gnome-calendar, simple-scan (сканер документов) и baobab (анализатор использования диска), будут обновлены до своих новых версий libAdwaita. Чтобы решить давнюю проблему с игнорированием системных тем приложениями libAdwaita, разработчики исправили библиотеку.
Команда предупредила пользователей старых версий о том, что серия Linux Mint 20.x, которая включает версии 20, 20.1, 20.2 и 20.3, официально завершила свою работу в апреле 2024 года. Система продолжит работать, но больше не будет получать обновления безопасности из официальных репозиториев, что сделает её уязвимой. Команда предложила два варианта. Рекомендуемый путь — установка более новой версии (22.1), которая будет поддерживаться до 2029 года. В качестве альтернативы можно опробовать обновление на месте, которое представляет собой многоэтапный процесс перехода с 20.x до 21.3.
В январе 2025 года состоялся релиз стабильной версии Linux Mint 22.1 «Xia», основанной на пакетной базе Ubuntu 24.04 LTS (Noble Numbat), а также на ядре Linux 6.8. Доступны для скачивания сборки на Cinnamon 6.4 (со встроенной функцией Night Light, поддерживающей как XOrg, так и Wayland), Xfce и MATE.
https://blog.linuxmint.com/?p=4850
👉 @i_odmin
❔ Как серверные приложения и микросервисы
взаимодействуют через сеть?
Хотите научиться подбирать правильные протоколы для вашей системы?
Откройте для себя все особенности работы с сетевыми протоколами на открытом уроке курса «System Design».
Мы подробно рассмотрим HTTP/2, HTTP/3, gRPC и WebSocket, а также научим выбирать оптимальные технологии для вашего проекта.
🚀 Знание сетевых протоколов — ключ к построению стабильных, быстрых и масштабируемых веб-приложений.
Пройдите урок и получите навыки, которые улучшат архитектуру ваших решений.
⏺ Встречаемся 10 июня в 20:00 МСК
➡️ Регистрация уже открыта: https://vk.cc/cMCIpR
Урок проходит в преддверии старта курса «System Design». Участники вебинара получат скидку на курс, плюс дополнительный 🎁 промокод SD_5 до 16.06.Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Утилитка для проверки tcp ping, tls ping, http ping, icmp ping, dns ping, quic ping.
Использование
$ pping
Usage:
pping [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
dns dns ping
help Help about any command
http http ping
icmp icmp ping
quic quic ping
tcp tcp ping
tls tls ping
Flags:
-c, --count int number of requests to send (default 4)
-h, --help help for pping
-t, --infinite ping the specified target until stopped
-i, --interval duration delay between each request (default 1s)
-4, --ipv4 use IPv4
-6, --ipv6 use IPv6
-v, --version version for pping
Use "pping [command] --help" for more information about a command.
$ pping tls 223.5.5.5 -p 853
Ping 223.5.5.5 (223.5.5.5):
16:58:28 [1] proto = TLS 1.3, connection = 20 ms, handshake = 22 ms, time = 42 ms
16:58:29 [2] proto = TLS 1.3, connection = 18 ms, handshake = 24 ms, time = 42 ms
16:58:31 [3] proto = TLS 1.3, connection = 19 ms, handshake = 25 ms, time = 44 ms
16:58:32 [4] proto = TLS 1.3, connection = 21 ms, handshake = 26 ms, time = 47 ms
sent = 4, ok = 4, failed = 0 (0%)
min = 42 ms, max = 47 ms, avg = 43 ms
$ pping http https://www.google.com 127.0.0.2
Ping https://www.google.com:
16:59:34 [1] proto = HTTP/2.0, status = 200, length = 211727, time = 1105 ms
16:59:36 [2] proto = HTTP/2.0, status = 200, length = 211791, time = 1246 ms
16:59:38 [3] proto = HTTP/2.0, status = 200, length = 211721, time = 1159 ms
16:59:40 [4] proto = HTTP/2.0, status = 200, length = 211717, time = 1142 ms
sent = 4, ok = 4, failed = 0 (0%)
min = 1105 ms, max = 1246 ms, avg = 1163 ms
🤖❓ Как архитектору 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()
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))
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)
src = "257601812"
dst = "5840593081"
paths = g.shortestPaths(landmarks=[dst])
paths.filter(F.col("id") == src).show(truncate=False)
Реклама. ООО «Отус онлайн-образование», ОГРН 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"
0 3 * * * /path/to/backup_mysql.sh
🛠 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"
grep -E "Failed password for"
grep -oP '(?<=from )\[\d.]+'
sort | uniq -c | sort -rn
head -n "\$TOPN"
crontab
ежедневный запуск и автоматическую отправку отчёта на почту или сразу бан «горячих» IP через iptables
:
# в crontab: каждый день в 00:10
10 0 * * * /path/to/ssh_fail_analyzer.sh | mail -s "SSH Fail Report" admin@example.com
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
Почему нельзя парсить вывод 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
умеет передавать имена напрямую в другие команды без промежуточного вывода.
size=$(wc -c < "$file")
wc
читают файл целиком, но большинство применяют fstat(2)
.stat
и find -printf
:
# GNU stat
size=$(stat -c %s -- "$file")
# GNU find
totalSize=$(find . -maxdepth 1 -type f -printf %s+)
ls -l
, соблюдайте строгие правила:ls
только для одного файла: разделителей для надёжного парсинга не существует.-d
и --
, чтобы избежать проблем с директориями и именами, начинающимися с -
.C/POSIX
, чтобы вывод был предсказуем.-n
вместо -l
, чтобы получить числовые идентификаторы.
IFS=' ' read -r mode links owner _ < <(LC_ALL=C ls -nd -- "$file")
mode=${mode:0:10}
💡Быстрый совет по Linux
Нужно повторять команду каждые несколько секунд?
Используйте:
$ watch -n 2 df -h
df -h
каждые 2 секунды. Отлично подходит для отслеживания использования диска, нагрузки или изменений размера логов.q
, чтобы выйти.CUBIC или как собрать свой Ubuntu
Несколько месяцев назад мне стало интересно, могу ли я собрать свою сборку или даже дистрибутив linux. Как оказалось (внезапно) я могу сделать и то и другое. Но в этой статье мы поговорим именно про создание своей сборки.
Итак, мы будем использовать CUBIC и создавать свою сборку на основе Ubuntu. CUBIC - Custom Ubuntu ISO Creator, эта программа позволяет особо не заморачиваясь собрать полноценную сборку базирующуюся на Ubuntu. Давайте рассмотрим этот процесс подробнее.
https://habr.com/ru/articles/761532/
👉 @i_odmin
🖥 Станьте профессионалом в администрировании Windows с OTUS!
Хотите уверенно управлять инфраструктурой на базе Windows, автоматизировать рутинные задачи и повышать безопасность?
🔥Курс «Администратор Windows» поможет системным администраторам освоить на профессиональном уровне работу с Windows Server, Active Directory, PowerShell и многим другим.
Что вас ждёт:
▪️Глубокое понимание архитектуры Windows и Active Directory, включая настройку DNS, DHCP и групповых политик.
▪️Освоение PowerShell для автоматизации задач и управления инфраструктурой.
▪️Навыки настройки и управления средствами безопасности Windows, включая Windows Defender и брандмауэр.
Практические задания и проектная работа, позволяющие применить полученные знания в реальных условиях.
❗️Не пропустите:
В группу обучения набирается ограниченное количество мест. Оставьте заявку прямо сейчас и успейте занять место в группе по спеццене. Предварительно ознакомьтесь с программой курса.
👉Оставить заявку https://vk.cc/cMB95X
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576