Все для системного администратора. По всем вопросам @evgenycarter РКН clck.ru/3KoDXp
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.
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
Устали сами собирать и обслуживать серверы?
Представьте, что можно использовать серверы только тогда, когда требуются дополнительные мощности: для тестирования, проведения экспериментов. Или наоборот, эксплуатировать круглосуточно, но не платить за электроэнергию и не заботиться о системе охлаждения.
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()
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