Не попадитесь на накрученные каналы! Узнайте, не накручивает ли канал просмотры или подписчиков Проверить канал на накрутку
Прикрепить Телеграм-аккаунт Прикрепить Телеграм-аккаунт

Телеграм канал «NetworkAdmin.ru»

NetworkAdmin.ru
986
14
225
9
10.1K
Авторский блог про сетевое и системное администрирование.

Сайт: networkadmin.ru
Реклама: @dad_admin
Биржа: https://telega.in/c/networkadminru
Подписчики
Всего
4 716
Сегодня
0
Просмотров на пост
Всего
642
ER
Общий
13.62%
Суточный
9.71%
Динамика публикаций
Telemetr - сервис глубокой аналитики
телеграм-каналов
Получите подробную информацию о каждом канале
Отберите самые эффективные каналы для
рекламных размещений, по приросту подписчиков,
ER, количеству просмотров на пост и другим метрикам
Анализируйте рекламные посты
и креативы
Узнайте какие посты лучше сработали,
а какие хуже, даже если их давно удалили
Оценивайте эффективность тематики и контента
Узнайте, какую тематику лучше не рекламировать
на канале, а какая зайдет на ура
Попробовать бесплатно
Показано 7 из 986 постов
Смотреть все посты
Пост от 26.10.2026 12:09
68
0
4
👂 Zabbix: как убрать мигающие PROBLEM/OK события

Одна из типичных проблем мониторинга - триггер постоянно переключается:


PROBLEM → OK → PROBLEM → OK


Например, CPU Load скачет около порога 5. Если условие выглядит так:


last(/Linux server/system.cpu.load[all,avg1])>5


то при значениях:


5.1 - PROBLEM
4.9 - OK
5.2 - PROBLEM


Zabbix начинает генерировать лишние события и уведомления.

▪️ Для этого и нужна гистерезисная логика: порог входа в проблему и порог выхода из нее должны отличаться. Problem expression:


avg(/Linux server/system.cpu.load[all,avg1],5m)>5


Проблема создается, если средняя нагрузка за 5 минут выше 5. А для восстановления задаем отдельное Recovery expression:


avg(/Linux server/system.cpu.load[all,avg1],5m)<4


Получается:


Load > 5 - PROBLEM
Load 4–5 - состояние не меняется
Load < 4 - OK


То есть небольшие колебания возле порога больше не заставляют триггер постоянно открываться и закрываться.

▪️ Еще лучше не использовать одиночное last(), если метрика сама по себе шумная. Например:


min(/Linux server/system.cpu.util[,user],5m)>90


означает, что CPU должен оставаться выше 90% весь рассматриваемый интервал, а не просто один раз прыгнуть до 95%.

Так Zabbix начинает реагировать на устойчивое изменение состояния, а не на каждый скачок графика.

#zabbix #monitoring

🧑‍💻 NetworkAdmin
👍 1
Пост от 22.10.2026 14:02
143
0
12
🤩 Linux network namespaces: маленькая отдельная сеть внутри одного сервера

В Linux можно создать отдельное сетевое пространство прямо внутри одного хоста. Для этого используются network namespaces. У каждого namespace могут быть свои:

• сетевые интерфейсы
• IP-адреса
• маршруты
• ARP-таблица
• firewall-правила
• loopback-интерфейс

▪️ Создадим два namespace:


ip netns add ns1
ip netns add ns2


▪️ Теперь соединим их виртуальным Ethernet-кабелем - veth:


ip link add veth1 type veth peer name veth2

ip link set veth1 netns ns1
ip link set veth2 netns ns2


▪️ Назначим адреса:


ip netns exec ns1 ip addr add 10.10.10.1/24 dev veth1
ip netns exec ns2 ip addr add 10.10.10.2/24 dev veth2


▪️ Поднимем интерфейсы:


ip netns exec ns1 ip link set veth1 up
ip netns exec ns2 ip link set veth2 up

ip netns exec ns1 ip link set lo up
ip netns exec ns2 ip link set lo up


▪️ Проверяем:


ip netns exec ns1 ping 10.10.10.2


Получается небольшая изолированная сеть:


ns1 ns2
10.10.10.1 <--- veth ---> 10.10.10.2


Посмотреть namespaces:


ip netns list


Выполнить команду внутри конкретного namespace:


ip netns exec ns1 ip route
ip netns exec ns1 ss -lnt


#linux #networking

🧑‍💻 NetworkAdmin
👍 1
Пост от 21.10.2026 12:38
175
0
9
✍️ printf вместо echo: почему в скриптах это иногда принципиально

echo кажется самым простым способом вывести текст в bash:


echo "backup completed"


И для обычных сообщений этого часто достаточно. Проблемы начинаются, когда в строке появляются \n, \t, -n, обратные слеши или данные из переменных. Например:


text="-n test"
echo "$text"


Поведение echo в разных shell и реализациях может отличаться: где-то -n будет воспринят как опция, где-то escape-последовательности будут обработаны иначе.

С printf результат предсказуемее:


printf '%s\n' "$text"


То же самое касается форматированного вывода:


name="db01"
status="OK"

printf 'Server: %-10s Status: %s\n' "$name" "$status"


Получим:


Server: db01 Status: OK


Еще один момент - не стоит передавать переменную как format string:


printf "$message"


Если внутри $message окажется %s, %d или другая последовательность форматирования, результат может быть неожиданным. Правильнее:


printf '%s\n' "$message"


Если нужен перенос строки:


printf 'First line\nSecond line\n'


Если перенос не нужен:


printf '%s' "Processing..."


#linux #bash

🧑‍💻 NetworkAdmin
👍 1
Пост от 20.10.2026 13:05
156
0
10
⭐️ Invoke-Command: удаленное управление Windows без RDP

Если нужно выполнить одну и ту же команду сразу на нескольких windows-серверах, подключаться к каждому по RDP совсем не обязательно. В PowerShell для этого есть Invoke-Command. Командлет работает через PowerShell Remoting на базе WinRM/WS-Management и позволяет выполнять команды или целые скрипты на удаленных машинах.

▪️ Что умеет:

• Выполнять команды сразу на нескольких компьютерах
• Запускать задачи в фоне через `-AsJob`
• Работать с постоянными PowerShell-сессиями
• В PowerShell 6+ подключаться к удалённым системам через SSH

▪️ Например, проверим Windows Update сразу на двух серверах:


Invoke-Command -ComputerName Server01,Server02 -ScriptBlock {
Get-Service wuauserv
}


А если нужно выполнить более сложную проверку:


Invoke-Command -ComputerName Server01,Server02 -ScriptBlock {
Get-CimInstance Win32_OperatingSystem |
Select-Object CSName,LastBootUpTime
}


▪️ Для длительной операции можно не блокировать текущую консоль:


$job = Invoke-Command -ComputerName Server01,Server02 `
-ScriptBlock { Get-WindowsUpdateLog } -AsJob

Get-Job
Receive-Job $job


#powershell #windows

🧑‍💻 NetworkAdmin
👍 3
Пост от 19.10.2026 12:57
118
0
9
🧐 Как запустить отдельную linux-систему внутри работающего сервера

В debian есть небольшая, но полезная утилита debootstrap. Она позволяет развернуть минимальную работающую систему прямо в обычном каталоге уже запущенного linux. На практике это дает довольно интересные возможности. Можно:

• быстро получить чистую debian-среду для тестов
• зайти в нее через chroot
• подготовить rescue-окружение
• запустить SSH и подключаться к этой системе отдельно
• использовать ее для восстановления основной ОС
• работать с дисками основной системы из независимого окружения

▪️ Простой пример. Устанавливаем debootstrap и разворачиваем Debian 12:


apt install debootstrap

mkdir /mnt/debootstrap

debootstrap bookworm \
/mnt/debootstrap \
http://deb.debian.org/debian


Теперь подключаем системные псевдофайловые системы:


mount --bind /dev /mnt/debootstrap/dev
mount --bind /dev/pts /mnt/debootstrap/dev/pts
mount --bind /proc /mnt/debootstrap/proc
mount --bind /sys /mnt/debootstrap/sys


И заходим внутрь:


chroot /mnt/debootstrap


Все - мы уже находимся в отдельной минимальной Debian 12.

▪️ Можно установить нужные инструменты:


passwd
apt update
apt install tmux openssh-server


▪️ При необходимости можно настроить SSH и запустить его внутри chroot. Например, изменить порт:


Port 222
PermitRootLogin yes


После запуска SSH выйти из chroot:


exit


И подключиться к новой системе:


ssh -p 222 root@10.50.20.14


Получается довольно необычная конструкция:


┌──────────────────────────────┐
│ Основная Linux-система │
│ │
│ /mnt/debootstrap │
│ │ │
│ └── Debian 12 │
│ └── chroot │
│ └── sshd │
└──────────────────────────────┘


▪️ А теперь самое интересное. chroot не является полноценной виртуализацией. Новая система использует ядро основной ОС и имеет доступ к тем ресурсам, которые ей предоставили. Поэтому такое окружение можно использовать как своеобразную аварийную систему, запущенную поверх работающего сервера. Например, можно разместить минимальную систему в tmpfs:


mkdir /mnt/rescue
mount -t tmpfs -o size=2G tmpfs /mnt/rescue


Скопировать туда подготовленное окружение, примонтировать /dev, /proc, /sys, выполнить chroot - и получить независимый userspace, который продолжает работать даже при серьезных проблемах с основной системой. Это особенно интересно для VPS и удаленных серверов, где нет нормальной KVM/IPMI-консоли и нельзя просто загрузиться с rescue ISO.

#debian #debootstrap

🧑‍💻 NetworkAdmin
👍 2
Пост от 16.10.2026 12:47
203
0
11
🤩 Как грепнуть вывод, который "не грепается"

Иногда команда что-то выводит в терминал, но обычный grep внезапно ничего не находит.

Хороший пример - проверка модулей Nginx:


nginx -V


На экране получаем длинную строку с параметрами сборки. Пробуем найти нужный модуль:


nginx -V | grep http_realip_module


И получаем пустой результат.

Причина в том, что nginx -V пишет вывод не в stdout, а в stderr. А пайп | по умолчанию передает дальше только stdout. Решение:


nginx -V 2>&1 | grep http_realip_module


Конструкция:


2>&1


перенаправляет stderr в stdout, после чего вывод уже можно нормально передавать в grep, awk, sed и другие утилиты.

Но есть еще один нюанс: параметры nginx -V обычно идут одной длинной строкой. Чтобы сделать вывод более читаемым, можно разбить его по пробелам:


nginx -V 2>&1 | tr ' ' '\n' | grep http_realip_module


Получим:


--with-http_realip_module


2>&1 - объединяем stderr и stdout
tr ' ' '\n' - заменяем пробелы переносами строк
grep - ищем нужный параметр

Тот же прием полезен не только с Nginx. Например:


command 2>&1 | grep error


Если не уверены, куда именно программа пишет данные, это хороший первый тест.

Посмотреть потоки отдельно тоже можно:


command >stdout.log 2>stderr.log


#bash #grep

🧑‍💻 NetworkAdmin
❤ 5
Пост от 15.10.2026 11:50
111
0
9
💚 Test-NetConnection: удобная диагностика сети в Windows без telnet

В PowerShell есть встроенная команда Test-NetConnection, которую удобно использовать для быстрой сетевой диагностики. У нее есть короткий alias:


tnc


1️⃣ Быстрая проверка сетевого подключения. Можно запустить просто:


tnc


PowerShell выполнит стандартную сетевую проверку и покажет полезную информацию:


ComputerName : internetbeacon.msedge.net
RemoteAddress : 13.107.4.52
InterfaceAlias : Ethernet
SourceAddress : 192.168.50.24
PingSucceeded : True
PingReplyDetails (RTT) : 28 ms


Сразу видно:

• какой интерфейс используется
• локальный IP
• удаленный IP
• проходит ли ICMP
• RTT

Это особенно удобно на ноутбуках и рабочих станциях, где одновременно могут быть активны Ethernet, Wi-Fi, VPN и несколько виртуальных адаптеров.

2️⃣ Проверка TCP-порта. Один из самых полезных сценариев:


tnc app01.pc_02.local -Port 443


Пример результата:


ComputerName : app01.pc_02.local
RemoteAddress : 10.30.10.15
RemotePort : 443
InterfaceAlias : Ethernet
SourceAddress : 192.168.50.24
TcpTestSucceeded : True


Если:


TcpTestSucceeded : True


TCP-соединение до указанного порта устанавливается. Если False - дальше уже проверяем firewall, маршрут, NAT и слушает ли сервис порт.

По сути, для обычной проверки доступности TCP это удобная замена telnet. Не нужно отдельно устанавливать Telnet Client и потом выходить из открытого соединения.

3️⃣ Трассировка маршрута


tnc 8.8.8.8 -TraceRoute


Полезно, когда нужно быстро посмотреть путь до узла без отдельного tracert. Есть и подробный режим:


tnc db01.networkadmin.local -Port 5432 -InformationLevel Detailed


А если нужен только результат проверки:


tnc db01.networkadmin.local -Port 5432 -InformationLevel Quiet


Получим просто: True

Это удобно и в скриптах:


if (tnc db01.networkadmin.local -Port 5432 -InformationLevel Quiet) {
"PostgreSQL доступен"
}


#windows #network

🧑‍💻 NetworkAdmin
❤ 3
Смотреть все посты