NetworkAdmin.ru – Telegram
NetworkAdmin.ru
4.75K subscribers
226 photos
25 videos
2 files
499 links
Авторский блог про сетевое и системное администрирование.

Сайт: networkadmin.ru
Реклама: @dad_admin
Биржа: https://telega.in/c/networkadminru
Download Telegram
👀 Смотрим логи systemd через браузер

Systemd умеет не только собирать и хранить логи, но и отдавать их по HTTP. Для этого есть служба systemd-journal-gatewayd, которая позволяет просматривать журнал прямо в браузере. Настраивается все буквально в пару шагов (пример для debian).

▪️ Установка и запуск. Устанавливаем пакет:


apt install systemd-journal-remote


Запускаем службу:


systemctl start systemd-journal-gatewayd.service


По умолчанию используется порт 19531.

▪️ Просмотр логов. Обзор всех логов:

http://10.25.1.55:19531/browse


Только логи текущей загрузки:


http://10.25.1.55:19531/entries?boot


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

▪️ Работа через curl. Те же данные можно забирать в JSON-формате. Например, логи для ssh.service:


curl --silent -H 'Accept: application/json' \
'http://10.25.1.55:19531/entries?UNIT=ssh.service'


▪️ Логи с удаленных машин. systemd-journal-gatewayd умеет работать не только с локальным журналом, но и с логами, собранными с других серверов. Для этого можно указать директорию с журналами:


systemd-journal-gatewayd -D /path/to/logs


#systemd #logs

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
⚙️ Настройка WinRE под свои задачи

WinRE - это встроенная среда восстановления для windows, которая запускается при проблемах с загрузкой системы или вручную через установочный носитель/средства восстановления. Обычно ее используют для диагностики и восстановления, но среду можно адаптировать под собственные задачи.

▪️ Проверка состояния WinRE. Проверим, активна ли WinRE и где она расположена:


reagentc /info


Если среда отключена, включаем ее:


reagentc /enable


▪️ Кастомизация WinRE. WinRE хранится в Winre.wim (обычно на скрытом разделе Recovery или в C:\Recovery\WindowsRE).

Создаем рабочую директорию и монтируем образ:


mkdir C:\WinRE_Mount
dism /mount-image /imagefile:C:\Recovery\WindowsRE\Winre.wim /index:1 /mountdir:C:\WinRE_Mount


Внутри смонтированного образа можно:

📍добавить свои утилиты (например, антивирусы, сетевые инструменты, скрипты диагностики);
📍заменить стандартные программы (например, cmd.exe на powershell или стороннюю оболочку);
📍внедрить драйверы и дополнительные пакеты:


dism /image:C:\WinRE_Mount /add-driver /driver:C:\Drivers\ /recurse
dism /image:C:\WinRE_Mount /add-package /packagepath:C:\Updates\update.cab


После внесенных изменений сохраняем:


dism /unmount-image /mountdir:C:\WinRE_Mount /commit


#windows #winRE

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍131
📁 Как ограничить использование inodes в linux и зачем это нужно

В linux каждый файл или каталог хранится в виде структуры данных, называемой inode (index node). Inode содержит метаданные: права доступа, владельца, временные метки и ссылки на блоки с данными.

Даже если у вас много свободного места на диске, но закончились inodes - новые файлы создать не получится. Чаще всего такая ситуация возникает на серверах, где генерируются миллионы мелких файлов (логи, временные данные, кеши).

▪️ Проверка использования inodes. Чтобы посмотреть статистику по inode на всех файловых системах:


df -i


В столбцах будет видно общее количество inode, сколько уже занято и сколько осталось.

▪️ Ограничение использования inodes

Inode создаются при форматировании файловой системы. Параметры задаются утилитой mkfs (для ext4 - mkfs.ext4). Например, создаем файловую систему с фиксированным количеством inode:


mkfs.ext4 -N 2000000 /dev/sdb1


Здесь -N задает количество inode. По умолчанию mkfs.ext4 рассчитывает их исходя из соотношения «один inode на 16К дискового пространства». Если ожидается много мелких файлов, можно увеличить плотность inode:


mkfs.ext4 -i 4096 /dev/sdb1


(один inode на каждые 4К).

▪️ Ограничение на уровне пользователей

Чтобы не допустить, что один пользователь «забьет» диск миллионами файлов, используют квоты. Включаем поддержку квот в /etc/fstab:


/dev/sdb1 /home ext4 defaults,usrquota,grpquota 0 2


Перемонтируем файловую систему:


mount -o remount /home


Создаем файлы для квот и включаем их:


quotacheck -cum /home
quotaon /home


Ограничиваем inode для пользователя:


edquota -u username


В открывшемся редакторе можно задать soft/hard limit для количества файлов (inodes).

#filesystem #inodes
Please open Telegram to view this post
VIEW IN TELEGRAM
👍131
Нет повода не доверять

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁213🔥2
🔹 Шифрование диска в linux

Если существует риск кражи носителей с данными, стоит задуматься о шифровании. На linux это проще всего реализовать через LUKS, который позволяет зашифровать раздел и работать с ним как с обычным блочным устройством.

▪️ Установка:


apt install cryptsetup # debian


▪️ Создание и подключение зашифрованного раздела
1️⃣Инициализируем шифрование (данные будут уничтожены):


cryptsetup luksFormat /dev/sdb1


2️⃣ Подключаем зашифрованный раздел:


cryptsetup luksOpen /dev/sdb1 lukscrypt


После этого появится устройство /dev/mapper/lukscrypt.

▪️ Использование. Создаем файловую систему и монтируем:


mkfs.ext4 /dev/mapper/lukscrypt
mkdir /mnt/crypt
mount /dev/mapper/lukscrypt /mnt/crypt


Теперь раздел доступен в системе, а при следующем подключении для расшифровки нужно будет выполнить cryptsetup luksOpen и ввести пароль.

#LUKS #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
🤩 Простой способ сделать вывод читаемым

Иногда команды в linux выдают данные так, что разобраться в них сложно: все идет сплошным текстом, столбцы "пляшут". В таких случаях выручает утилита column, которая форматирует вывод в аккуратные таблицы.

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

▪️ Примеры использования
1️⃣ Красивый вывод mount:


mount | column -t


Сразу видно, где какая файловая система и куда она примонтирована - читается намного удобнее.

2️⃣ Работа с произвольными разделителями. Например, файл /etc/passwd разделен двоеточиями. Сделаем его аккуратной таблицей:


column -s ":" -t /etc/passwd


Теперь строки легко обрабатывать, например, через awk. Выведем только имена пользователей:


column -s ":" -t /etc/passwd | awk '{print $1}'


Каждое имя - в отдельной строке. Отличный способ быстро собрать список, массив или передать данные.

#linux

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2
🔼 Использование tmpfs для ускорения работы системы и снижения износа SSD

tmpfs - это файловая система, которая хранит данные в оперативной памяти (RAM). Она монтируется как обычный каталог и доступна для приложений прозрачно, но при этом все записи идут не на диск, а в память.

Зачем это может быть полезно:

📍Ускорение работы - операции чтения/записи из RAM значительно быстрее, чем даже на NVMe SSD.
📍Снижение износа SSD - временные файлы не пишутся на диск, что уменьшает количество циклов записи.
📍Автоматическая очистка - содержимое tmpfs исчезает при перезагрузке.


Примеры использования tmpfs

1️⃣ Временные каталоги. Во многих дистрибутивах /tmp по умолчанию монтируется как tmpfs. Если нет - можно добавить в /etc/fstab:


tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0


2️⃣ Кэш браузеров или сборочных систем. Можно вынести тяжёлые временные каталоги (например, npm/yarn cache или /var/cache/pacman) в tmpfs.


tmpfs /var/cache tmpfs defaults,noatime,size=2G 0 0


3️⃣ Компиляция и сборка проектов. Чтобы ускорить работу make, cargo или других сборочных систем, удобно монтировать директорию build/ в RAM:


mount -t tmpfs -o size=4G tmpfs ./build


Ограничение по размеру

Размер tmpfs можно задавать вручную (size=1G), иначе по умолчанию он занимает до половины ОЗУ.

⚠️ Важные нюансы

📍Если память закончится, ядро начнет использовать swap. Это может замедлить работу, а в худшем случае - привести к OOM.
📍Все данные из tmpfs теряются при перезагрузке. Для временных файлов это нормально, но хранить там что-то важное нельзя.

#linux #SSD

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍141
Bonding vs Teaming: что выбрать для отказоустойчивости сетей в linux

Когда нужно объединить несколько сетевых интерфейсов в один для повышения отказоустойчивости или производительности, в linux есть два основных механизма: bonding и teaming. Оба решают схожие задачи, но работают по-разному.

▪️ Bonding. Классический механизм, существующий в linux уже много лет.

Основные режимы работы:

📍active-backup - один интерфейс активен, остальные в резерве.
📍balance-rr - пакеты отправляются поочерёдно через все интерфейсы.
📍802.3ad (LACP) - агрегирование каналов с поддержкой на стороне коммутатора.
📍balance-xor, broadcast, balance-alb и др.

Плюсы:

Проверенный и стабильный инструмент.
Поддерживается почти во всех дистрибутивах.
Большой выбор режимов.

Минусы:

Ограниченная масштабируемость.
Более тяжелое ядро-зависимое решение (модуль ядра).
Настройка чуть менее гибкая.

▪️ Teaming. Новый механизм (начиная с RHEL 7 и современных систем).

Особенности:

📍Управляется через teamd (пользовательский процесс).
📍Более легкий и гибкий, чем bonding.
📍Поддерживает JSON-конфигурацию и плагины (например, мониторинг линков).
📍Использует те же режимы агрегации (active-backup, roundrobin, lacp и т.д.).

Плюсы:

Гибкая настройка (json + плагины).
Легче масштабировать и управлять.
Мониторинг и логика вынесены в userspace (а не только ядро).

Минусы:

Более сложный для "быстрых правок".
В некоторых дистрибутивах bonding до сих пор по умолчанию используется чаще.

▪️ Что выбрать?

Если у вас традиционная инфраструктура (например, debian, старые centOS, небольшие серверы) - проще использовать bonding: он доступен сразу и без лишних зависимостей.

Если вы работаете с современными centOS или хотите больше гибкости (например, интеграцию с NetworkManager, плагины, мониторинг линков) - выбирайте teaming.

#network

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72
📄 Быстрая раздача файлов: Python HTTP Server и HFS

Иногда нужно быстро передать файлы по сети, без заморочек с настройкой SMB или FTP. Для этого есть два простых инструмента - один для linux, другой для windows.

🐧 Linux: встроенный веб-сервер Python

В современных дистрибутивах Python уже установлен, так что все сводится к одной команде:


cd /var/log
python3 -m http.server 8181


Открываем браузер, заходим на IP-адрес сервера с портом 8181 и сразу видим содержимое директории.
Файлы скачали - сервер остановили. Удобно и быстро.

🏠 Windows: HFS (HTTP File Server)

Для Windows есть проверенное решение - HFS.
Это небольшой исполняемый файл, который работает на любой версии windows, включая 11. Скачали → запустили → открыли в браузере IP машины.

HFS позволяет публиковать как целые директории, так и отдельные файлы, просто перетащив их в окно программы. В отличие от SMB, который постоянно требует возни с версиями протокола и учетками, HFS работает «из коробки».

▪️ Дополнительные возможности HFS:

📍аутентификация пользователей;
📍логирование;
📍кастомизация внешнего вида через HTML-шаблоны;
📍контроль пропускной способности;
📍работа в фоне.


Программа бесплатна и с открытым исходным кодом.
🔗 Официальный сайт HFS

#linux #windows #tools

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍131
А вы пробовали перезагружать ваш ролтер?

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
17😁5
↗️ Быстрый способ узнать все о системе

Если раньше для просмотра базовой информации о linux системе приходилось использовать целый набор команд вроде:


lsb_release -a
uname -a
cat /etc/os-release
cat /etc/redhat-release


- то теперь достаточно одной:


hostnamectl

Static hostname: networkadmin.ru
Icon name: computer-vm
Chassis: vm
Machine ID: ---
Boot ID: ---
Virtualization: microsoft
Operating System: Debian GNU
Kernel: Linux ---
Architecture: x86-64


Что можно увидеть

Имя хоста (static/pretty/текущее)
ОС и версия дистрибутива
Версия ядра
Аппаратная информация (chassis, архитектура)
Виртуализация или контейнеризация (VM или Docker/LXC/OpenVZ)
Machine ID и Boot ID - полезно при отладке и мониторинге


Также с помощью hostnamectl можно не только смотреть информацию, но и менять имя сервера:


hostnamectl set-hostname myserver


Изменения применяются сразу и сохраняются после перезагрузки.

#hostnamectl

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍116
👀 Мониторинг изменений файлов с помощью inotify и fswatch

В Linux есть подсистема ядра - inotify, которая умеет отслеживать изменения в файловой системе и выдавать уведомления о событиях (создание, удаление, обновление файлов и каталогов). Для работы можно воспользоваться утилитой fswatch, которая доступна почти во всех популярных ОС. В linux под капотом она использует именно inotify.

▪️ Установка:


apt install fswatch


Запуск простого мониторинга за директорией /tmp:


fswatch /tmp


Но в таком виде вывод слишком сырой. Можно сразу добавить ключи:

-x - отображать тип событий
-t - выводить временные метки


fswatch -x -t /tmp


▪️ Пример работы

В одной консоли запускаем fswatch, а в другой пробуем:


echo '123' > /tmp/file.txt
rm /tmp/file.txt


В логах получаем:


28 Sep 2025 23:27:20 MSK /tmp/file.txt Created
28 Sep 2025 23:27:20 MSK /tmp/file.txt Updated
28 Sep 2025 23:27:35 MSK /tmp/file.txt Removed


▪️ Автоматизация

Мониторинг можно запустить в фоне:


fswatch -x -t /tmp >> /var/log/fswatch.log &


или добавить автозапуск через cron:


@reboot fswatch -x -t /tmp >> /var/log/fswatch.log &


Более надёжный способ - оформить как сервис systemd: /etc/systemd/system/fswatch.service


[Unit]
Denoscription=fswatch file monitor
[Service]
ExecStart=/usr/bin/fswatch -x -t /tmp
[Install]
WantedBy=multi-user.target


Запуск:


systemctl enable --now fswatch.service
journalctl -u fswatch.service


Можно отфильтровать конкретные типы событий, например, только удаление:


fswatch --event Removed -x -t /tmp


#inotify #fswatch

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍132
✍️ Практика работы с tcpdump: фильтры и полезные примеры

tcpdump - один из самых используемых инструментов для анализа сетевого трафика прямо в консоли. С его помощью можно не только снять дамп, но и отфильтровать нужные пакеты, чтобы не утонуть в гигабайтах логов.

▪️ Базовый запуск


tcpdump -i eth0


Смотрим весь трафик интерфейса eth0. Часто этого уже достаточно для первичной диагностики.

▪️ Полезные фильтры

1️⃣ Фильтрация по IP


tcpdump host 192.168.1.10


Только пакеты от/к указанному IP.

2️⃣ Фильтрация по порту


tcpdump port 22


Видим весь SSH-трафик.

3️⃣ Только входящие или исходящие пакеты


tcpdump src host 10.0.0.5
tcpdump dst port 80


4️⃣ Комбинация условий (AND, OR, NOT)


tcpdump src host 192.168.1.100 and port 443
tcpdump not port 22


5️⃣ Фильтрация по протоколу


tcpdump icmp
tcpdump tcp
tcpdump udp


▪️ Практические примеры

1️⃣ Смотреть весь HTTP-трафик


tcpdump -i eth0 tcp port 80 -A


Ключ -A выводит полезную нагрузку пакетов в ASCII. Удобно, если нужно подсмотреть запросы.

2️⃣ Анализ TLS (SNI и handshake)


tcpdump -i eth0 tcp port 443 -vvv


С подробной детализацией можно увидеть домены, к которым идёт подключение.

3️⃣ Отследить DNS-запросы


tcpdump -i eth0 udp port 53


4️⃣ Сохранить дамп для анализа в Wireshark


tcpdump -i eth0 -w dump.pcap


А потом открыть dump.pcap в Wireshark.

5️⃣ Ограничить количество пакетов


tcpdump -c 100 -i eth0


Собираем только первые 100 пакетов.

▪️ Резюме:

Используйте -nn - чтобы ip-адреса и порты не переводились в имена (ускоряет работу).
-vvv - максимально подробный вывод.
Для длительного мониторинга всегда сохраняйте в файл (-w) и анализируйте в wireshark или tshark.

#linux #tcpdump

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Пушистый стажер, работает за вискас

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁185🔥2
🔄 strace и ltrace: отладка процессов

Часто возникает ситуация: программа подвисает, работает странно или вообще не запускается. В таких случаях на помощь приходят два инструмента - strace и ltrace. Оба они позволяют заглянуть внутрь процесса, но делают это на разных уровнях.

▪️ strace - системные вызовы. strace перехватывает системные вызовы, которые делает процесс, и возвращаемые значения. Это удобно для анализа проблем с доступом к файлам, сетевыми подключениями или зависаниями.

📍 Запуск с приложением:


strace ls /nonexistent


Вывод покажет, что ls пытается открыть директорию и получает ENOENT (нет такого файла).

📍 Подключение к уже работающему процессу:


strace -p 1234


Теперь видно, чем занимается процесс с PID 1234.

📍 Фильтрация вызовов:


strace -e open,read,write -p 1234


Будут показаны только вызовы open, read, write.

▪️ ltrace - вызовы библиотек. Если strace работает с системными вызовами ядра, то ltrace отслеживает вызовы функций библиотек. Это особенно полезно, если программа спотыкается не на уровне ядра, а на уровне glibc или других библиотек.

📍 Пример:


ltrace ls


Вы увидите вызовы функций вроде malloc(), strlen(), fopen().

📍 Фильтрация по конкретным функциям:


ltrace -e malloc,free ./myprog


Будут показаны только вызовы функций управления памятью.

▪️ Совместное применение. Часто эти инструменты используют вместе:

strace → понять, что происходит на уровне системных вызовов (например, программа не может открыть файл из-за прав).
ltrace → отследить логику внутри библиотек (например, неверно передаются параметры в функцию).

▪️ Практические кейсы

📍 Отладка зависающих процессов:


strace -p <PID>


Сразу видно, ждёт ли программа I/O или зациклилась.

📍 Диагностика ошибок "файл не найден":


strace ./prog 2>&1 | grep ENOENT


Можно увидеть, какой именно файл не удаётся открыть.

📍 Поиск утечек памяти:


ltrace -e malloc,free ./prog


Если много malloc(), но мало free() - повод задуматься.

#linux #debug

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
🌟 Подводные камни при копировании файлов в linux

На первый взгляд, копирование файлов в linux выглядит элементарной задачей. Но если копать глубже, у команды cp есть несколько нюансов, которые легко могут привести к неожиданному результату.

▪️ Базовый пример. Хочется скопировать содержимое одной директории в другую:


cp /dir_a/* /dir_b


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


cp -a /dir_a/* /dir_b


Ключ -a = рекурсия + права доступа + даты + симлинки. В общем, максимально правильное копирование.

▪️ Подводные камни

Звездочка раскрывается в bash. Символ * обрабатывает сама оболочка, а не cp. То есть bash разворачивает список файлов и передаёт их в виде длинной команды:


cp -a /dir_a/file1 /dir_a/file2 ... /dir_b


Если файлов слишком много - можно упереться в ограничение длины команды.

Скрытые файлы теряются. Файлы, начинающиеся с точки (.htaccess, .env и т.п.), по умолчанию не попадут в *. В результате копирование окажется не точным.

Пустая директория = ошибка. Если в исходной папке нет файлов, то * не развернётся, и cp просто вернет ошибку.

▪️ Как сделать правильно. Лучше вообще избегать *, когда речь о копировании директорий. Надежный способ:


cp -aT /dir_a /dir_b


Здесь:

-a - копирование со всеми атрибутами
-T - воспринимать /dir_b как саму директорию назначения, а не поддиректорию внутри неё

Таким образом, копирование отрабатывает корректно: и вложенные каталоги, и скрытые файлы будут на месте.

#linux #cp

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍242🔥1😱1👌1
ℹ️ Тонкая настройка swap для производительности

Swap в linux играет роль страховочного пространства на диске для выгрузки неиспользуемых страниц памяти. Но работать с ним можно по-разному: от полного отключения до использования современных технологий сжатия. Разберем основные практики.

▪️ Проверка текущего состояния. Посмотреть активные swap-разделы и файлы можно так:


swapon --show
free -h


▪️ Полное отключение swap. Если на сервере достаточно оперативной памяти, swap часто отключают, чтобы избежать лишних задержек:


swapoff -a


Чтобы выключить swap навсегда - закомментируйте его строки в /etc/fstab.

▪️ Настройка приоритета. Если используется несколько swap-устройств (например, раздел и файл), то можно указать приоритет. Чем выше значение, тем раньше будет использоваться swap:


# swapon /swapfile --priority 100


Текущие приоритеты видно в выводе swapon --show.

▪️ Управление swappiness. Параметр vm.swappiness задает, как активно ядро будет использовать swap.

0 - максимально избегать использования swap.
60 (по умолчанию) - сбалансированный вариант.
100 - активно выгружать память в swap.

Пример настройки:


sysctl -w vm.swappiness=10


Для постоянного применения добавьте в /etc/sysctl.conf:


vm.swappiness=10


▪️ Zswap и Zram. Чтобы уменьшить нагрузку на диск и ускорить работу используют сжатие памяти:

📍 Zswap - сжатый кэш для swap в оперативке.
Активация через параметры ядра:


zswap.enabled=1


📍 Zram - сжатый блочный девайс в RAM, который можно подключить как swap. Это будет полезно на ноутбуках и в контейнерах.
Установка и включение в Debian/Ubuntu:


apt install zram-tools
systemctl enable --now zramswap.service


#linux #swap

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
🏷 Как избежать ошибок с монтированием в Linux

Когда речь заходит о работе с внешними или сетевыми хранилищами, важно проверять, что файловая система действительно подключена и смонтирована. В Linux для этого есть две удобные утилиты - findmnt и findfs.

▪️ findmnt - контроль точек монтирования. Запуск без параметров показывает все точки монтирования. Но есть и практичный режим проверки fstab:


findmnt -x

Success, no errors or warnings detected


Если в конфигурации есть ошибка - получите подробное сообщение:


findmnt -x

/mnt/backup
[E] unreachable on boot required source: UUID=151ea24d-977a-412c-818f-0d374baa5012


Также можно проверять наличие конкретной точки монтирования:


if findmnt -rno TARGET "$1" >/dev/null; then
echo "$1 mounted."
else
echo "$1 not mounted."
fi


▪️ findfs - поиск по UUID и меткам. findfs ищет файловые системы по UUID, LABEL, PARTLABEL, PARTUUID. Пример:


findfs "UUID=151ea24d-977a-412c-818f-0d374baa5013"

/dev/sda2


Выходной код тоже полезен в скриптах:

0 → устройство найдено
1 → файловая система не найдена


if findfs "UUID=$1" >/dev/null; then
echo "$1 connected."
else
echo "$1 not connected."
fi


⚠️ Почему это важно?

Если не проверить подключение, легко попасть в неприятную ситуацию:

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

#findmnt #findfs

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Покупка нового корпуса - это что-то на богатом

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁18👍3👎1
⌛️ Быстрый способ отладки bash-скриптов

Когда в скрипте что-то идет не так, часто хочется понять, какая команда выполнилась последней и какие значения получили переменные. Вместо того чтобы расставлять десятки echo, в bash есть встроенный инструмент - set -x.

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

▪️ Пример: резервное копирование файла

Создадим простой скрипт, который проверяет наличие файла и копирует его в директорию резервных копий:


#!/bin/bash
set -x

src="/etc/hosts"
dst="/tmp/backup"

mkdir -p "$dst"
timestamp=$(date +%Y%m%d_%H%M%S)
cp "$src" "$dst/hosts_$timestamp"

echo "Backup created: $dst/hosts_$timestamp"


Вывод консоли:


Запуск
# ./backup.sh
+ src=/etc/hosts
+ dst=/tmp/backup
+ mkdir -p /tmp/backup
+ date +%Y%m%d_%H%M%S
+ timestamp=20251007_121330
+ cp /etc/hosts /tmp/backup/hosts_20251007_121330
+ echo 'Backup created: /tmp/backup/hosts_20251007_121330'
Backup created: /tmp/backup/hosts_20251007_121330


Мы видим каждое действие: какие переменные подставились, как отработала команда date, куда скопировался файл.

#linux #debug

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍124
🎆 Удобная веб-панель для управления linux серверами

Cockpit - это встроенный в современные дистрибутивы инструмент, который превращает сервер в управляемый через браузер интерфейс. Вам больше не нужно все делать вручную в консоли - многие задачи можно выполнять из веб-панели.

▪️ Установка и запуск. В большинстве систем Cockpit есть прямо в репозиториях.

debian/ubuntu:


apt install cockpit -y
systemctl enable --now cockpit.socket


RHEL/centOS/fedora:


dnf install cockpit -y
systemctl enable --now cockpit.socket


После этого панель доступна по HTTPS на порту 9090: https://IP-сервера:9090

Авторизация выполняется через обычный системный логин и пароль.

📍 Возможности Cockpit

Мониторинг ресурсов (CPU, RAM, диски, сеть) в реальном времени
Управление сервисами systemd (запуск, остановка, перезапуск)
Просмотр логов journald
Управление пользователями и правами
Настройка сетевых интерфейсов и firewall
Работа с дисками, RAID и LVM
Подключение Docker/Kubernetes для управления контейнерами
Возможность администрировать несколько серверов через одну панель

📍 Почему это удобно?

Минимальная настройка: поставил и сразу работает.
Не требует сторонних агентов - все идет через systemd и встроенные механизмы.
Легко интегрируется с SELinux, firewalld и другими системными компонентами.

#linux #cockpit

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍153