Логотип

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

Все для системного администратора.

Реклама: https://t.me/evgenycarter
Подписчики
905
За 24 часа
+46
19:43 12-12-2025
19:43 12-12-2025
19:43 12-12-2025
19:43 12-12-2025
19:43 12-12-2025
👩‍💻 Коллекция шпаргалок по bash

👉 @i_odmin
22:15 11-12-2025
find в Linux как инструмент для администрирования

find — утилита поиска файлов по имени и другим свойствам, используемая в UNIX‐подобных операционных системах. С лохматых тысячелетий есть и поддерживаться почти всеми из них.

Базовый синтаксис ключей

-name — искать по имени файла, при использовании подстановочных образцов параметр заключается в кавычки. Опция -name различает прописные и строчные буквы; чтобы использовать поиск без этих различий, воспользуйтесь опцией -iname;
-type — тип искомого: f=файл, d=каталог, l=ссылка (link), p=канал (pipe), s=сокет;
-user — владелец: имя пользователя или UID;
-group — владелец: группа пользователя или GID;
-perm — указываются права доступа;
-size — размер: указывается в 512-байтных блоках или байтах (признак байтов — символ «c» за числом);
-atime — время последнего обращения к файлу (в днях);
-amin — время последнего обращения к файлу (в минутах);
-ctime — время последнего изменения владельца или прав доступа к файлу (в днях);
-cmin — время последнего изменения владельца или прав доступа к файлу (в минутах);
-mtime — время последнего изменения файла (в днях);
-mmin — время последнего изменения файла (в минутах);
-newer другой_файл — искать файлы созданные позже, чем другой_файл;
-delete — удалять найденные файлы;
-ls — генерирует вывод как команда ls -dgils;
-print — показывает на экране найденные файлы;
-print0 — выводит путь к текущему файлу на стандартный вывод, за которым следует символ ASCII NULL (код символа 0);
-exec command {} \; — выполняет над найденным файлом указанную команду; обратите внимание на синтаксис;
-ok — перед выполнением команды указанной в -exec, выдаёт запрос;
-depth или -d — начинать поиск с самых глубоких уровней вложенности, а не с корня каталога;
-maxdepth — максимальный уровень вложенности для поиска. «-maxdepth 0» ограничивает поиск текущим каталогом;
-prune — используется, когда вы хотите исключить из поиска определённые каталоги;
-mount или -xdev — не переходить на другие файловые системы;
-regex — искать по имени файла используя регулярные выражения;
-regextype тип — указание типа используемых регулярных выражений;
-P — не разворачивать символические ссылки (поведение по умолчанию);
-L — разворачивать символические ссылки;
-empty — только пустые каталоги.

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

Ищем все файлы, начиная с текущей директории, название которых начинается на iodmin:
find . -name 'iodmin*'

Найти все файлы, начиная с корневой директории, название которых начинается на iodmin:
find / -name 'iodmin*'

Поиск в директориях /usr/local/man и /opt/local/man файлов, название которых начинается на iodmin:
find /usr/local/man /opt/local/man -name 'iodmin*'

Ищем графические файлы, начиная с текущего каталога (см.на кавычки):
find . -type f -regex ".*\.\(jpg\|jpeg\|gif\|png\|JPG\|JPEG\|GIF\|PNG\)"

Вывести список файлов (см. на / ) во всей файловой системе, чей размер больше 100 Мб:
find / -size +100M -print

Ищем файлы в указанных каталогах:
find /var/spool/postfix/{deferred,active,maildrop,incoming}/ -type f

👉 @i_odmin
17:54 10-12-2025
TUI 🌙

Показывает фазу Луны в виде ASCII-арта прямо в вашем терминале. Минималистично, гиковски и приятно.

https://github.com/rockydd/ascii_moon

👉 @i_odmin
15:15 10-12-2025
Ravada - Менеджер удаленных виртуальных рабочих столов

Это программа, позволяющая пользователю подключаться к удаленному виртуальному рабочему столу. Ravada предназначена для системных администраторов, имеющих некоторый опыт работы с GNU/Linux и желающих развернуть проект VDI.

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

Требования к клиенту следующие: наличие web-браузера и программы удаленного просмотра, поддерживающей протокол spice.
В текущем релизе мы используем гипервизоры KVM: KVM в качестве бэкенда для виртуальных машин. Поддержка LXC находится в стадии разработки.

https://github.com/UPC/ravada

👉 @i_odmin
10:46 10-12-2025
🕵️‍♂️ Мониторим изменения на сайтах как профи: Zabbix Browser Item

Забудьте о простых проверках статус-кода 200. Если вам нужно знать, обновился ли контент на странице, не пропала ли кнопка «Купить» или корректно ли отрендерился динамический блок на JS - новый Browser Item в Zabbix (начиная с версии 7.0) меняет правила игры.

Раньше для сложного веб-мониторинга требовались внешние скрипты или Selenium. Теперь Zabbix умеет запускать браузер «под капотом» (через Zabbix Browser Monitoring и Playwright).

Что умеет Browser Item:
✅ Рендеринг JS: Видит страницу так же, как пользователь, включая весь динамический контент.
✅ Сценарии на JavaScript: Можно прописать логику - зайти на сайт, нажать кнопку, подождать загрузки элемента и сравнить его текст.
✅ Контроль изменений: Сравнение хеш-суммы контента или поиск конкретных ключевых слов в DOM-дереве.
✅ Производительность: Сбор метрик загрузки (Core Web Vitals) прямо в процессе проверки.

Как это работает:
1. Настраиваете Zabbix Web Service.
2. Создаете Browser Item и пишете небольшой JS-сценарий (например, page.goto, page.textContent).
3. Парсите результат и вешаете триггер на изменение текста или структуры.

Это идеальное решение для мониторинга витрин интернет-магазинов, отслеживания обновлений ПО на сайтах вендоров или проверки работоспособности сложных личных кабинетов.

📖 https://blog.zabbix.com/monitoring-website-changes-with-zabbix-browser-item/31684/

👉 @i_odmin
21:33 09-12-2025
Работает и ладно 😀

👉 @i_odmin
17:34 08-12-2025
Как сделать цветной вывод, используя grc (Generic Colourizer)

Он работает с множеством инструментов «из коробки» (df, lsblk, free, ps и другие).

Вы можете быстро установить его с помощью вашего менеджера пакетов, например:

$ sudo dnf install grc
Добавьте эти строки в ваш файл ~/.bashrc, если вы используете Bash:

GRC_ALIASES=true
[[ -s "/etc/profile.d/grc.sh" ]] && source /etc/profile.d/grc.sh

Затем перезагрузите вашу оболочку:

$ source ~/.bashrc

Для Zsh, добавьте это в ваш ~/.zshrc:

[[ -s "/etc/grc.zsh" ]] && source /etc/grc.zsh

Затем перезагрузите:

$ source ~/.zshrc

👉 @i_odmin
20:50 04-12-2025
Голый Линукс — запуск ядра-одиночки

Итак, Linux - не операционная система, а только ядро для неё. Всё остальное приходит от проекта GNU (и других). И вот интересно - на что годится ядро само по себе?

Эта статья - очень "начального" уровня. Устроим маленький эксперимент - создадим чистую виртуальную машину и попробуем запустить ядро Linux "без всего". Или почти "без", т.к. нам понадобится загрузчик ОС - и какая-нибудь "пользовательская программа" (её мы сотворим сами). Конечно, продвинутые пользователи Linux такой "эксперимент" могут провести просто отредактировав параметры запуска при включении - но наш рассказ всё же для тех кто почти (или совсем) не в теме :)

Бонусом чуть-чуть коснёмся системных вызовов и пару слов скажем о других ядрах.

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

👉 @i_odmin
09:08 04-12-2025
Как в утилите top в Linux посмотреть какой командой был запущен процесс?

В утилите top в Linux по умолчанию отображается только имя команды, запустившей процесс, но можно изменить отображение, чтобы увидеть полный командный путь.

Для этого в top выполните следующие шаги:

1. Запустите top:

top

2. Нажмите клавишу c (латинская c), находясь в top. Это переключит отображение с имени команды на полный путь запуска команды (вместе с аргументами).

Теперь в колонке COMMAND вы увидите полную строку запуска процесса, а не только его имя.

Для возврата к отображению только имени команды снова нажмите c.

👉 @i_odmin
19:22 03-12-2025
Как найти количество открытых файлов в Linux

Чтобы узнать количество открытых файлов в Linux, можно воспользоваться следующими командами:

1. Использовать lsof (List Open Files) для подсчета открытых файлов в системе:

lsof | wc -l
Эта команда покажет общее количество открытых файлов в системе, где wc -l подсчитывает количество строк, то есть количество открытых файлов.

2. Использовать `/proc/sys/fs/file-nr` для просмотра счетчика открытых файлов:

cat /proc/sys/fs/file-nr
Этот файл содержит три числа, разделенные табуляцией:
- Первое число — текущее количество открытых файлов.
- Второе число — количество файлов, которые находятся в ожидании.
- Третье число — максимальное количество файлов, которое система может открыть.

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

lsof -p PID | wc -l
Замените PID на идентификатор процесса, который вас интересует.

4. Использовать lsof для подсчета открытых файлов конкретным пользователем:

lsof -u username | wc -l
Замените username на имя пользователя, чтобы увидеть количество открытых файлов этим пользователем.


👉 @i_odmin
10:06 03-12-2025
Linux-совет дня 💡

Запуск rm — рискованная операция.
Запуск rm с * — в 10 раз опаснее.

В некоторых случаях полезно заранее посмотреть, какую команду он выполнит после раскрытия шаблонов. Например:

$ echo rm -rf /*

Эта команда выведет в stdout уже развёрнутый результат — по сути, это «пробный запуск» (dry run) для rm -rf /*.

👉 @i_odmin
09:09 02-12-2025
Подборка полезных скриптов для Mikrotik


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

/file print file=myFile
/file set myFile.txt contents=""
Проверка, изменился ли IP на интерфейсе
Иногда провайдер выдает динамические IP-адреса. Этот скрипт проверит, изменился ли динамический IP-адрес.

:global currentIP;

:local newIP [/ip address get [find interface="ether1"] address];

:if ($newIP != $currentIP) do={
:put "ip address $currentIP changed to $newIP";
:set currentIP $newIP;
}
Удаляем сетевую маску
Этот скрипт полезен, если вам нужен IP-адрес без сетевой маски (например, для использования в брандмауэре), но команда "/ip address get [id] address" возвращает IP-адрес вместе с маской.


:global ipaddress 10.1.101.1/24

:for i from=( [:len $ipaddress] - 1) to=0 do={
:if ( [:pick $ipaddress $i] = "/") do={
:put [:pick $ipaddress 0 $i]
}
}Еще один, гораздо более простой способ:

:global ipaddress 10.1.101.1/24
:put [:pick $ipaddress 0 [:find $ipaddress "/"]]


Определяем имя хоста
Многие пользователи просят добавить возможность использовать DNS-имена вместо IP-адресов для RADIUS-серверов, правил брандмауэра и т.д.

Вот пример того, как определить IP-адрес RADIUS-сервера.
Предположим, что у нас настроен RADIUS-сервер:


/radius
add address=3.4.5.6 comment=myRadА вот скрипт, который определит IP-адрес, сравнит полученный IP с настроенным и заменит его, если они не совпадают:

/system script add name="resolver" source= {

:local resolvedIP [:resolve "server.example.com"];
:local radiusID [/radius find comment="myRad"];
:local currentIP [/radius get $radiusID address];

:if ($resolvedIP != $currentIP) do={
/radius set $radiusID address=$resolvedIP;
/log info "radius ip updated";
}

}
Добавьте этот скрипт в планировщик, чтобы он выполнялся, например, каждые 5 минут.
/system scheduler add name=resolveRadiusIP on-event="resolver" interval=5m
Записать статистику очереди в несколько файлов
Рассмотрим, что названия очередей выглядят как "some text.1", чтобы мы могли искать очереди по последнему числу сразу после точки.

:local entriesPerFile 10;
:local currentQueue 0;
:local queuesInFile 0;
:local fileContent "";
#determine needed file count
:local numQueues [/queue simple print count-only] ;
:local fileCount ($numQueues / $entriesPerFile);
:if ( ($fileCount * $entriesPerFile) != $numQueues) do={
:set fileCount ($fileCount + 1);
}

#remove old files
/file remove [find name~"stats"];

:put "fileCount=$fileCount";

:for i from=1 to=$fileCount do={
#create file
/file print file="stats$i.txt";
#clear content
/file set [find name="stats$i.txt"] contents="";

:while ($queuesInFile < $entriesPerFile) do={
:if ($currentQueue < $numQueues) do={
:set currentQueue ($currentQueue +1);
:put $currentQueue ;
/queue simple
:local internalID [find name~"\\.$currentQueue\$"];
:put "internalID=$internalID";
:set fileContent ($fileContent . [get $internalID target-address] . \
" " . [get $internalID total-bytes] . "\r\n");
}
:set queuesInFile ($queuesInFile +1);

}
/file set "stats$i.txt" contents=$fileContent;
:set fileContent "";
:set queuesInFile 0;

}


👉 @i_odmin
12:17 01-12-2025
Bash скрипт создания VPN-пользователя в MikroTik

Ниже пример скрипта, для создания VPN-пользователя в MikroTik. Мы будем использовать bash-скрипт, который подключается к устройству по SSH и добавляет нового пользователя для PPTP, L2TP или другого VPN-протокола. Перед использованием этого скрипта необходимо убедиться, что SSH-доступ к MikroTik настроен и вы можете выполнить команды от имени администратора.


Пример bash-скрипта для создания VPN-пользователя на MikroTik

#!/bin/bash

# Параметры подключения
MIKROTIK_IP="192.168.88.1" # IP-адрес MikroTik
MIKROTIK_USER="admin" # Логин администратора MikroTik
MIKROTIK_PASS="password" # Пароль администратора MikroTik
VPN_USER="newvpnuser" # Имя нового VPN-пользователя
VPN_PASS="newvpnpassword" # Пароль для нового VPN-пользователя
VPN_SERVICE="pptp" # Тип VPN (pptp, l2tp, ovpn и т.д.)

# Команда для создания VPN-пользователя
COMMAND="/ppp secret add name=$VPN_USER password=$VPN_PASS service=$VPN_SERVICE profile=default"

# Выполнение команды на MikroTik
sshpass -p "$MIKROTIK_PASS" ssh -o StrictHostKeyChecking=no $MIKROTIK_USER@$MIKROTIK_IP "$COMMAND"

if [ $? -eq 0 ]; then
echo "VPN-пользователь $VPN_USER успешно создан."
else
echo "Ошибка при создании VPN-пользователя."
fi
Описание параметров и команды

1. MIKROTIK_IP – IP-адрес устройства MikroTik.
2. MIKROTIK_USER и MIKROTIK_PASS – логин и пароль администратора.
3. VPN_USER и VPN_PASS – имя пользователя и пароль для нового VPN-пользователя.
4. VPN_SERVICE – тип VPN-сервиса, который вы используете. Возможные значения: pptp, l2tp, ovpn.

Как использовать

1. Убедитесь, что у вас установлен пакет sshpass для передачи пароля SSH (например, в Ubuntu его можно установить командой sudo apt install sshpass).
2. Сделайте скрипт исполняемым:

chmod +x create_vpn_user.sh
3. Запустите скрипт:

./create_vpn_user.sh

⚠️Замечания

- Безопасность: Для более безопасного подключения используйте SSH-ключи вместо передачи пароля в командной строке.
- Настройка профиля: Если у вас есть специальный профиль для VPN-пользователей, замените profile=default на нужный профиль, например profile=my-vpn-profile.

👉 @i_odmin
00:15 01-12-2025
Совет 💡

Как остановить выполнение скрипта в bash при возникновении ошибки в команде?

Команда set -e завершит скрипт с ошибкой, в случае, если в нижеследующем bash коде будет обнаружена ошибка. По-умолчанию bash скрипт продолжает работу, если в ходе выполнения возникла ошибка.

👉 @i_odmin
06:24 28-11-2025
Шпаргалка по PowerShell


Основные команды
- Get-Help <команда> – получить справку по команде
- Get-Command – список доступных команд
- Get-Command -Module <модуль> – команды из конкретного модуля
- Get-Alias – список псевдонимов команд
- Get-Process – список запущенных процессов
- Get-Service – список служб

Навигация по файловой системе
- Get-Location – текущий путь
- Set-Location <путь> – перейти к каталогу
- Get-ChildItem или ls – просмотр содержимого каталога
- New-Item -Path <путь> -Name <имя> -ItemType <тип> – создать файл или папку

Работа с файлами и папками
- Copy-Item -Path <источник> -Destination <назначение> – копировать файл/папку
- Move-Item -Path <источник> -Destination <назначение> – переместить файл/папку
- Remove-Item -Path <путь> – удалить файл/папку
- Rename-Item -Path <путь> -NewName <новое имя> – переименовать файл/папку

Работа с текстом и выводом
- Write-Output "текст" – вывод текста
- Write-Host "текст" – вывод текста на экран
- Read-Host -Prompt "вопрос" – ввод данных от пользователя
- Get-Content <файл> – чтение содержимого файла
- Set-Content <файл> – запись в файл
- Add-Content <файл> – добавление текста в файл

Переменные
- $<имя_переменной> = значение – создание переменной
- $var += значение – добавление к значению переменной
- $null – пустое значение

Условия и циклы
- if (<условие>) { <действие> } – условие if
- foreach ($item in $array) { <действие> } – цикл foreach
- while (<условие>) { <действие> } – цикл while

Работа с процессами и службами
- Start-Process <программа> – запуск программы
- Stop-Process -Name <имя> – завершение процесса
- Start-Service <служба> – запуск службы
- Stop-Service <служба> – остановка службы

Фильтрация и сортировка
- Where-Object { <условие> } – фильтрация объектов
- Sort-Object <свойство> – сортировка объектов

Примеры:
1. Получение списка файлов:

Get-ChildItem -Path "C:\папка"

2. Копирование файла:

Copy-Item -Path "C:\путь\файл.txt" -Destination "D:\копия\файл.txt"

3. Вывод чисел от 1 до 10:

for ($i = 1; $i -le 10; $i++) { Write-Output $i }

4. Фильтрация процессов по имени:

Get-Process | Where-Object { $_.Name -eq "notepad" }


👉 @i_odmin
18:33 26-11-2025
Сброс сетевых настроек из командной строки Windows

Сбросьте кэш DNS
ipconfig /flushdns

Сбросьте настройки WinSock
netsh winsock reset

Сброс настроек стека TCP/IP
netsh int ip reset

Для сброса настроек TCP/IPv6
netsh int ipv6 reset

Удалить все сетевые адаптеры
netcfg -d

Сброс всех правил Windows Defender Firewall
netsh advfirewall reset

👉 @i_odmin
09:30 26-11-2025
💻 Ноутбук от Sony 1986 года выпуска, а не эти ваши макбуки 😉

👉 @i_odmin
10:08 25-11-2025
htop и многое другое на пальцах

На протяжении долгого времени я не до конца понимал htop. Я думал, что средняя загрузка [load average] в 1.0 означает, что процессор загружен на 50%, но это не совсем так. Да и потом, почему именно 1.0?

Затем я решил во всём разобраться и написать об этом. Говорят, что лучший способ научиться новому — попытаться это объяснить.

Rus https://habr.com/ru/articles/316806/

Eng https://peteris.rocks/blog/htop/

👉 @i_odmin
23:36 24-11-2025
Пробрасываем USB-устройство по сети в Линуксе

В Линуксе проброс USB устройств через сеть реализован на уровне ядра, то есть это не какая-то специальная программа, которая этим занимается, а драйвер в ядре.
И если этого драйвера в ядре нет (а его может и не быть — не вкомпилировал вендор, решил что не надо — имеет право) — то работать ничего, конечно, не будет.

Можно самостоятельно пересобрать ядро ручками, но это задача не для всех, поэтому таким мы заниматься не станем.
Будем считать, что ядро нормальное.

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

👉 @i_odmin
07:21 24-11-2025
Шпаргалка по основным командам и настройкам MikroTik (RouterOS)

1. Основные команды работы с MikroTik:

Просмотр конфигурации
- /export — экспорт текущей конфигурации.
- /interface print — вывод списка интерфейсов.
- /ip address print — вывод списка IP-адресов.
- /ip route print — вывод таблицы маршрутизации.
- /ip firewall filter print — вывод правил файрвола.

Управление интерфейсами
- /interface enable [имя_интерфейса] — включить интерфейс.
- /interface disable [имя_интерфейса] — отключить интерфейс.
- /interface set [имя_интерфейса] mtu=1500 — изменение MTU на интерфейсе.

Управление IP-адресами
- /ip address add address=192.168.1.1/24 interface=[имя_интерфейса] — добавить IP-адрес на интерфейс.
- /ip address remove [номер] — удалить IP-адрес по номеру из списка.

Настройка маршрутизации
- /ip route add dst-address=0.0.0.0/0 gateway=[ip-шлюза] — добавить маршрут по умолчанию (интернет).
- /ip route remove [номер] — удалить маршрут.

2. Настройка DHCP:

Настройка DHCP-сервера
- /ip dhcp-server setup — пошаговая настройка DHCP-сервера.
- /ip dhcp-server print — просмотр текущих DHCP-серверов.
- /ip dhcp-server lease print — просмотр выданных IP-адресов (lease).
- /ip dhcp-server network add address=192.168.1.0/24 gateway=192.168.1.1 — добавить сеть для раздачи IP-адресов.

Настройка DHCP-клиента
- /ip dhcp-client add interface=[имя_интерфейса] — добавить DHCP-клиента на интерфейс.
- /ip dhcp-client print — просмотр DHCP-клиентов.

3. Настройка NAT (для интернета):

- /ip firewall nat add chain=srcnat action=masquerade out-interface=[интерфейс_WAN] — добавить правило NAT для выхода в интернет.

4. Настройка VLAN:

- /interface vlan add name=vlan10 vlan-id=10 interface=[имя_интерфейса] — создать VLAN с идентификатором 10 на интерфейсе.
- /interface bridge vlan add bridge=[имя_моста] tagged=[интерфейс] vlan-ids=10 — добавить VLAN в мост.

5. Настройка Firewall (Базовые правила):

- /ip firewall filter add chain=input action=accept connection-state=established,related — разрешить уже установленные соединения.
- /ip firewall filter add chain=input action=drop connection-state=invalid — отбросить невалидные пакеты.
- /ip firewall filter add chain=forward action=drop connection-state=invalid — запретить невалидные соединения в цепочке forward.

6. Настройка PPPoE (подключение к интернету через PPPoE):

- /interface pppoe-client add name=pppoe-out1 user=[логин] password=[пароль] interface=[WAN-интерфейс] — создать PPPoE-клиента.
- /ip route add gateway=pppoe-out1 — добавить маршрут через PPPoE.

7. Сохранение и восстановление конфигурации:

Сохранение:
- /system backup save name=[имя_файла] — сохранить полную конфигурацию.
- /export file=[имя_файла] — экспорт конфигурации в текстовый файл.

Восстановление:
- /system backup load name=[имя_файла] — загрузить сохраненную конфигурацию.
- /import file=[имя_файла] — импортировать текстовую конфигурацию.

8. Диагностика:

- /ping [ip-адрес] — пинг IP-адреса.
- /tool traceroute [ip-адрес] — трассировка до IP-адреса.
- /tool bandwidth-test address=[ip-адрес] direction=both — тест скорости соединения.

9. Работа с пользователями:

- /user add name=[имя_пользователя] group=full password=[пароль] — добавить пользователя с полными правами.
- /user remove [имя_пользователя] — удалить пользователя.
- /user print — показать список пользователей.

0. Операции с логами:

- /log print — просмотр последних логов.
- /log print where topics~"[firewall]" — просмотр логов по определенной теме, например, firewall.

👉 @i_odmin
22:44 23-11-2025
Знали ли вы, что можно открывать man-страницы из Vim?

- leader K - Нажмите курсором на любом слове, чтобы открыть man-страницу для этой команды.
- :Man command - Открыть man-страницу этой команды

👉 @i_odmin
20:56 21-11-2025
Китайская мудрость для системного администратора⁠⁠

🪩 Всех с пятницей!

👉 @i_odmin
20:19 21-11-2025
Быстрая настройка маршрутизатора MIkroTik для офиса и дома

В данном видео приводится пример по настройке маршрутизатора под управление ОС MikroTik RouterOS для малого офиса или дома. Настройка производится с помощью функции Quick Set и не занимает много времени. Полученная конфигурация обеспечивает стабильную работу и приемлемый уровень безопасности.

источник

👉 @i_odmin
13:32 20-11-2025
Шпаргалка Mikrotik Config

Я документирую процесс подключения и настройки общих сценариев здесь для всех, кто интересуется Mikrotik

https://codingpackets.com/blog/mikrotik-config-cheatsheet/

👉 @i_odmin
10:10 20-11-2025
Траблшутинг сетевых сервисов.Инструменты и утилиты для диагностики

🔹Общий вид алгоритма поиска и устранения неисправностей и корреляция с моделью ISO/OSI
🔹Диагностика физического и канального уровней модели ISO/OSI и проверка связности
🔹Диагностика сетевого уровня, если сервис за пределами локальной сети
🔹Диагностика транспорта на уровне сокетов
🔹Диагностика верхних уровней модели ISO/OSI

источник

👉 @i_odmin
08:02 19-11-2025
🔥 Современный процесс загрузки Linux

Вот как выглядит современный boot-процесс - от нажатия кнопки питания до полностью работающей ОС:

1️⃣ Power On
Сигнал запуска подаётся на оборудование - начинается инициализация.

2️⃣ BIOS/UEFI
Загружается прошивка, выполняет POST-проверки и подготавливает железо.

3️⃣ Поиск оборудования
Определяются CPU, память, диски и остальные устройства.

4️⃣ Выбор загрузочного устройства
BIOS/UEFI ищет, откуда грузиться: HDD, SSD, USB, сеть и др.

5️⃣ Поиск EFI-раздела (в UEFI-системах)
Именно здесь располагаются загрузочные файлы ОС.

6️⃣ Запуск загрузчика (обычно GRUB2)
Загрузчик предоставляет меню систем или автоматически выбирает ядро.

7️⃣ Определение ядра для загрузки
GRUB читает конфигурацию и выбирает нужное Linux-ядро.

8️⃣ Загрузка ядра в память
Ядро — сердце Linux: инициализация памяти, драйверов, управления ресурсами.

9️⃣ Инициализация структур ядра
Подготовка окружения для запуска пользовательского пространства.

🔟 Запуск init/systemd (PID 1)
Запускается первый пользовательский процесс, управляющий службами.

1️⃣1️⃣ Выполнение стартовых скриптов
Настраивается сеть, монтируются файловые системы, поднимаются службы.

1️⃣2️⃣ Рабочая система
Linux полностью загружен - пользователь может логиниться и работать

👉 @i_odmin
07:29 18-11-2025
Защита Mikrotik от внешних угроз

— Почему не хватает firewall для защиты mikrotik.
— Почему не хватает защиты в /ip services.
— Как использовать службу neighbor.
— Как использовать tool mac server.
— Общие рекомендации по защите.
— Почему у нас не взломали ни одного роутера.
— Как и когда правильно обновлять.

источник

👉 @i_odmin
11:22 17-11-2025
🔥 Продвинутые Wireshark-фильтры для VoIP/SIP/RTP

Если работаешь с телефонией, WebRTC, SIP-трафиком или качеством голоса - эти фильтры незаменимы.


📞 1. SIP-сигнализация

⚫️ sip
Показать весь SIP-трафик.

⚫️ sip.Method == "INVITE"
Начало звонка.

⚫️ sip.Method == "REGISTER"
Регистрация телефонов.

⚫️ sip.Status-Code >= 400
Ошибки SIP (4xx, 5xx, 6xx).

⚫️ sip.Authorization
Попытки авторизации — полезно при анализе взломов.

⚫️ sip.CSeq.method == "BYE"
Завершение вызова.

⚫️ sip.To.user == "1001"
Вызовы к абоненту 1001.



🎤 2. RTP - потоковая передача голоса

⚫️ rtp
Показать весь RTP-трафик.

⚫️ rtp.marker == 1
Начало речевых пакетов.

⚫️ rtp.ssrc == 0x12345678
Выбор конкретного голосового потока.

⚫️ rtp.seq < 1000
Начальная часть RTP-потока.

⚫️ udp.port == 5004
Стандартный RTP порт.



⚠️ 3. Потери пакетов, джиттер, рассинхрон

Эта часть критична для диагностики “роботизированного” голоса, пауз и обрывов.

⚫️ rtp.analysis.lost_packet
Показать потерянные RTP-пакеты.

⚫️ rtp.analysis.jitter > 30
Высокий джиттер (>30 мс).

⚫️ rtp.time_delta > 0.1
Межпакетные задержки >100 мс.

⚫️ rtp.seq_too_large_delta
Большие скачки номеров последовательности.

⚫️ udp.length < 180
Аномально маленькие голосовые пакеты.



🔒 4. SRTP - защищённый голос

⚫️ srtp
Показать SRTP-трафик.

⚫️ srtp.error
Ошибки расшифровки/валидации.

⚫️ srtp.payload.size > 200
Нетипично большие SRTP-фреймы.



📡 5. WebRTC / VoIP через браузер

⚫️ stun
STUN-трафик (установление медиа-канала).

⚫️ stun.type == 0x0001
STUN Binding Request.

⚫️ turn
TURN-трафик через relay (важно для NAT).

⚫️ webrtc-datachannel
WebRTC data channel.

⚫️ udp.port >= 10000 and udp.port <= 20000
Типичный диапазон WebRTC RTP/RTCP.



🎧 6. Полный разбор качества разговора

⚫️ rtcp
Показать RTCP-пакеты (метрики качества).

⚫️ rtcp.ssrc == 0x12345678
Анализ качества конкретного RTP-потока.

⚫️ rtcp.packet_type == 200
Sender Report.

⚫️ rtcp.packet_type == 201
Receiver Report (потери, джиттер).

⚫️ rtcp.xr
Расширенные отчёты (MOS, RTT, дисперсия джиттера).



📞 7. Поиск попыток взлома SIP

⚫️ sip.Method == "OPTIONS"
Сканы SIP-серверов.

⚫️ sip.Authorization
Брутфорс логинов.

⚫️ sip.Contact contains "sip:"
Аномальные SIP-контакты.

⚫️ sip.to.host != sip.from.host
Антиспуфинг SIP.

📲 Мы в MAX

👉 @i_odmin
09:58 16-11-2025
Сравнение SHELLs: BASH vs ZSH vs FISH

Делаем красочный и удобный терминал.

источник

👉 @i_odmin
08:36 14-11-2025
🔥 Подборка самых полезных фильтров для Wireshark

Если нужно быстро найти нужный трафик в большом дампе — эти фильтры экономят кучу времени. Сохраняй себе и используй прямо в работе!

🧩 IP-фильтрация

️ip.addr == 10.0.0.0/24 - весь трафик внутри подсети.
️ip.addr == 10.0.0.1 - весь трафик к/от конкретного хоста.
️!(ip.addr == 10.0.0.1) - исключить трафик определённого хоста.

📡 Протоколы и типы пакетов

️icmp.type == 3 - ICMP “destination unreachable”.
️tcp or udp - показать только TCP/UDP.
️http or dns - весь HTTP или DNS трафик.

🔌 TCP-фильтры

️tcp.port == 80 - трафик по порту 80.
️tcp.srcport < 1000 - исходящие порты <1000.
️tcp.flags.syn == 1 - пакеты с SYN.
️tcp.flags == 0x012 - SYN+ACK.
️tcp.analysis.retransmission - ретрансмиссии.

🌐 HTTP-фильтры

️http.request.method == "GET" - HTTP GET.
️http.response.code == 404 - ответы 404.
️http.host == "www.abc.com" - фильтр по Host.

🔐 TLS

️tls.handshake — только рукопожатие TLS.
️tls.handshake.type == 1 - Client Hello.

🔎 DNS

️dns.resp.name == cnn.com - ответы DNS для домена.

🧱 Полезные универсальные фильтры

️frame contains keyword - поиск по содержимому.
️frame.len > 1000 - пакеты >1000 байт.

🟨 DHCP

️dhcp and ip.addr == 10.0.0.0/24 - DHCP внутри подсети.
️dhcp.hw.mac_addr == 00:11:22:33:44:55 - DHCP по MAC-адресу.

🔁 Маршрутизация

️ip.src == 10.0.0.1 && ip.dst == 10.0.0.2 - трафик между двумя хостами.


👉 @i_odmin
22:29 13-11-2025
🥑 Apache Guacamole

Это шлюз для удалённого рабочего стола, не требующий установки клиентских приложений.
Он поддерживает стандартные протоколы, такие как VNC, RDP и SSH.

Он называется «клиентским-безклиентским» (clientless), потому что не требует никаких плагинов или клиентского ПО.

Благодаря HTML5, после установки Guacamole на сервер всё, что нужно для доступа к рабочим столам — это веб-браузер.

https://guacamole.apache.org/

источник

👉 @i_odmin
10:32 13-11-2025
RAID (Redundant Array of Independent Disks) — это технология, которая используется для повышения производительности и/или надежности хранения данных на дисках. Существует несколько типов RAID, каждый из которых имеет свои особенности:

1. RAID 0 (Striping)
- Особенности: Данные делятся на блоки и записываются на несколько дисков одновременно.
- Преимущества: Повышает скорость чтения и записи данных.
- Недостатки: Отсутствует защита данных. При отказе одного из дисков все данные теряются.

2. RAID 1 (Mirroring)
- Особенности: Все данные дублируются на двух или более дисках.
- Преимущества: Высокая надежность, поскольку данные сохраняются на нескольких дисках.
- Недостатки: Половина дискового пространства используется для зеркалирования, что снижает общую емкость.

3. RAID 5 (Striping with Parity)
- Особенности: Данные разделяются на блоки, а для каждого блока вычисляется контрольная сумма (паритет), которая записывается на один из дисков. Паритет распределяется по всем дискам.
- Преимущества: Позволяет восстановить данные при выходе из строя одного диска.
- Недостатки: Более сложная реализация и сниженная скорость записи по сравнению с RAID 0.

4. RAID 6 (Striping with Double Parity)
- Особенности: Аналог RAID 5, но используется двойной паритет для защиты данных.
- Преимущества: Выдерживает отказ двух дисков.
- Недостатки: Снижение производительности записи по сравнению с RAID 5.

5. RAID 10 (1+0, Mirrored Striping)
- Особенности: Комбинирует RAID 1 и RAID 0. Данные сначала зеркалируются (RAID 1), а затем разбиваются на блоки (RAID 0).
- Преимущества: Высокая производительность и высокая надежность.
- Недостатки: Требуется минимум четыре диска, и половина емкости используется для зеркалирования.

6. RAID 01 (0+1, Striping Mirrored)
- Особенности: Комбинирует RAID 0 и RAID 1, но сначала данные разбиваются на блоки (RAID 0), а затем зеркалируются (RAID 1).
- Преимущества: Высокая производительность и отказоустойчивость.
- Недостатки: Менее эффективен в использовании дисков, чем RAID 10.

7. RAID 50 (RAID 5+0)
- Особенности: Комбинирует RAID 5 и RAID 0. Данные распределяются по нескольким группам RAID 5, которые затем объединяются в RAID 0.
- Преимущества: Баланс между производительностью и отказоустойчивостью.
- Недостатки: Более сложная реализация и требуются большие ресурсы.

8. RAID 60 (RAID 6+0)
- Особенности: Комбинирует RAID 6 и RAID 0. Несколько массивов RAID 6 объединяются в один массив RAID 0.
- Преимущества: Увеличенная надежность за счет двойного паритета.
- Недостатки: Снижение производительности записи по сравнению с RAID 50.

9. RAID 2, 3, 4
- Особенности: Эти типы RAID используют разные подходы к управлению данными и паритетом, но встречаются реже.
- Преимущества и недостатки: Эти конфигурации имеют свои уникальные особенности, но не получили широкого распространения из-за ограниченных преимуществ перед более популярными RAID 5 и 6.

Каждый тип RAID подходит для разных целей: RAID 0 — для максимальной скорости, RAID 1 — для надежности, а RAID 5 и 6 — для баланса между отказоустойчивостью и эффективностью использования пространства.

👉 @i_odmin
09:23 12-11-2025
Перенос VM с Hyper-V на Proxmox

Перенос виртуальной машины (VM) с Hyper-V на Proxmox включает несколько шагов, поскольку Hyper-V и Proxmox используют разные форматы виртуальных дисков. Hyper-V использует формат VHDX, а Proxmox предпочитает формат QCOW2 или RAW. Основная задача заключается в конвертации дисков и настройке виртуальной машины на новом гипервизоре.

Шаги для переноса VM с Hyper-V на Proxmox

📌1. Подготовка виртуальной машины в Hyper-V

1. Выключите виртуальную машину в Hyper-V.
Чтобы избежать проблем с консистентностью данных, убедитесь, что VM выключена перед экспортом.

2. Экспортируйте виртуальную машину.
Откройте Hyper-V Manager и выполните экспорт виртуальной машины:
- Выберите нужную виртуальную машину.
- Нажмите "Экспортировать" и выберите директорию для сохранения экспортированных файлов.

В результате экспорт сохранит всю конфигурацию виртуальной машины и файлы дисков (обычно в формате VHD или VHDX).

📌2. Конвертация виртуального диска

Proxmox поддерживает несколько форматов виртуальных дисков, таких как QCOW2 и RAW. Вы можете использовать утилиту qemu-img для конвертации формата.

1. Перенесите диск (VHDX/VHD) на сервер Proxmox.
Скопируйте файл виртуального диска с Hyper-V на сервер Proxmox с помощью SCP или другого метода передачи файлов.

Пример использования SCP:

scp /path/to/your/disk.vhdx user@proxmox:/var/lib/vz/images/

2. Установите `qemu-utils` (если он не установлен).
Для конвертации используйте утилиту qemu-img. На Proxmox по умолчанию установлена эта утилита, но если её нет, установите:

apt-get install qemu-utils

3. Конвертируйте VHDX в формат QCOW2 или RAW.
Выполните команду для конвертации:
- В QCOW2:

qemu-img convert -f vhdx -O qcow2 /path/to/your/disk.vhdx /var/lib/vz/images/VMID/vm-disk.qcow2
- В RAW:

qemu-img convert -f vhdx -O raw /path/to/your/disk.vhdx /var/lib/vz/images/VMID/vm-disk.raw

- /path/to/your/disk.vhdx — путь к вашему файлу VHDX.
- /var/lib/vz/images/VMID/vm-disk.qcow2 — путь, куда будет сохранен новый виртуальный диск, с указанием идентификатора VM (`VMID`).

📌3. Создание новой VM на Proxmox

1. Создайте новую виртуальную машину на Proxmox.
В интерфейсе Proxmox:
- Нажмите "Создать VM".
- Укажите настройки (например, процессоры, память, сетевые адаптеры), соответствующие параметрам вашей VM на Hyper-V.
- На этапе создания жесткого диска выберите небольшой размер временного диска (он не будет использоваться).

2. Подмените созданный диск на сконвертированный.
После создания VM:
- Перейдите в директорию, где хранится диск новой VM: /var/lib/vz/images/VMID/.
- Удалите временный диск и замените его на сконвертированный диск:

mv /path/to/vm-disk.qcow2 /var/lib/vz/images/VMID/

3. Проверьте и отредактируйте конфигурацию виртуальной машины.
Откройте файл конфигурации VM, который находится по пути /etc/pve/qemu-server/VMID.conf, и убедитесь, что строка с указанием диска ссылается на ваш новый файл:

scsi0: local:VMID/vm-disk.qcow2

📌4. Запуск виртуальной машины

1. Запустите виртуальную машину в Proxmox.
В интерфейсе Proxmox запустите VM и проверьте, корректно ли она работает.

2. Установите необходимые драйвера.
Если в Hyper-V VM использовала специфичные драйвера, возможно, потребуется установить новые драйвера в ОС, чтобы она корректно функционировала в Proxmox (например, драйвера для сетевого адаптера или виртуальных дисков).

Заключение
После выполнения этих шагов виртуальная машина должна корректно работать на платформе Proxmox. Если возникнут проблемы с драйверами или загрузкой системы, возможно, потребуется дополнительно настроить параметры виртуальной машины или обновить конфигурацию ОС.

👉 @i_odmin
14:28 11-11-2025
Управление и настройка сети в Linux с помощью утилиты nmcli

Вы можете использовать различные инструменты для настройки сетевых подключений, как графических так и консольно командных, графические удобны своей простотой, а командные удобны тем что их можно использовать в различных сценариях, в этом видео вы познакомитесь с консольной утилитой nmcli (Network Manager Command Line Interface)


Настройка интерфейса
con — сокращенно от connection (можно писать сокращенно или полностью)
mod — сокращенно от modify (можно писать сокращенно или полностью)
dev — сокращенно от device (можно писать сокращенно или полностью)
ens33 — имя интерфейса
ipv4.addresses — семейство протокола ipv4


Переименовать имя соединения:
nmcli con mod "Wired connection 1" con-name "lan"

Установка адреса в ручном режиме:
nmcli con mod ens33 ipv4.method manual

Получить IP адрес автоматически через DHCP:
nmcli con mod ens33 ipv4.method auto

Установить IP адрес:
nmcli con mod ens33 ipv4.addresses 192.168.100.25/24

Удалить IP адрес:
nmcli con mod ens33 ipv4.addresses ""

Установить шлюз по умолчанию:
nmcli con mod ens33 ipv4.gateway 20.20.20.1

Удалить шлюз по умолчанию:
nmcli con mod ens33 ipv4.gateway ""

Установить DNS:
nmcli con mod ens33 ipv4.dns 8.8.8.8

Удалить DNS адрес:
nmcli con mod ens33 ipv4.dns ""

Включить интерфейс:
nmcli con up ens33

Выключить интерфейс:
nmcli con down ens33

Добавить дополнительный IP адрес:
nmcli con mod ens33 +ipv4.addresses "192.168.180.189/24"

Удалить IP адрес (второй вариант):
nmcli con mod ens33 -ipv4.addresses "192.168.8.189/24"

Добавить VLAN c тегом 21 на физический интерфейс ens33 (InterVLAN):
nmcli con add type vlan con-name VLAN21 ifname VLAN21 dev ens33 id 21

Установить IP адрес VLAN интерфейсу:
nmcli con mod VLAN21 ipv4.addresses 172.10.10.11/24

Команды диагностики
Cостояние всех интерфейсов:
nmcli dev status

Краткое состоянии всех интерфейсов:
nmcli -t dev

Cостояние физических интерфейсов и их UUID:
nmcli con show

Информация о конкретном интерфейсе:
nmcli dev show ens33

Информация о соединении интерфейса:
nmcli con show ens33

Маршрутизация
Посмотреть таблицу маршрутизации:
ip route

Добавить временный маршрут на сеть 192.168.2.0/24 через 192.168.100.1:
ip route add 192.168.2.0/24 via 192.168.100.1

Изменить временный маршрут:
ip route change 192.168.2.0/24 via 192.168.8.10

Добавить второй временный шлюз для сети 192.168.2.0/24 (балансировка маршрута):
ip route append 192.168.2.0/24 via 192.168.8.11

Удалить временный маршрут на сеть 192.168.2.0/24 через 192.168.8.12:
ip route del 192.168.2.0/24 via 192.168.8.11

Удалить временный маршрут на сеть 192.168.2.0/24 :
ip route del 192.168.2.0/24

Добавить постоянный маршрут на сеть 192.168.2.0/24 через 192.168.8.2 на интерфейсе ens33:
nmcli con mod ens33 +ipv4.routes "192.168.2.0/24 192.168.8.54"
nmcli con up ens33

Удалить маршрут на сеть 192.168.2.0/24 через 192.168.8.2 на интерфейсе ens33:
nmcli con mod ens33 -ipv4.routes "192.168.2.0/24 192.168.8.54"
nmcli con up ens33

Изменить метрику на интерфейсе:
nmcli con mod ens33 ipv4.route-metric 400
nmcli con up ens33

Изменить mtu на интерфейсе:
nmcli con mod ens33 ethernet.mtu 1600
nmcli con up ens33

источник

👉 @i_odmin
09:49 10-11-2025
OpenSSH: Разбираем туннели

Мы с примерами разбираем прямые туннели, обратные и создаем SOCKS туннели для проксирования веб траффика.

источник

👉 @i_odmin
18:11 09-11-2025
Список полезных команд для работы с telnet, которые могут помочь при подключении и отладке сетевых служб:

Основные команды telnet:
1. Подключение к удаленному хосту:

telnet <hostname> <port>
Пример:

telnet example.com 80
Подключается к хосту example.com на порту 80 (HTTP).

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

Ctrl + ] (переход в режим команд)
Затем введите:

quit

3. Отправка текстового запроса после подключения:
Если подключились к порту, например, HTTP-сервера, можно отправить запрос вручную:

GET / HTTP/1.1
Host: example.com
Это выполняет запрос к домашней странице на порту 80.

Встроенные команды telnet (используйте в режиме команд после нажатия Ctrl + ]):

1. help
Показывает список доступных команд telnet:

telnet> help

2. open
Открывает новое соединение с указанным хостом:

telnet> open <hostname> <port>

3. close
Закрывает текущее соединение:

telnet> close

4. display
Показывает текущие параметры подключения:

telnet> display

5. mode
Переключает режим работы telnet (например, line или character):

telnet> mode line

6. send
Отправляет управляющие символы (например, send escape для отправки escape-секвенции):

telnet> send escape

7. status
Показывает статус текущего соединения:

telnet> status

8. set и unset
Настраивают параметры подключения (например, установка режима эхо):

telnet> set echo
telnet> unset echo

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

1. Проверка доступности порта:
Чтобы проверить, открыт ли порт на удаленном сервере:

telnet <hostname> <port>

2. Проверка почтового сервера (SMTP):
Подключение к серверу SMTP:

telnet smtp.example.com 25
Затем можно вручную ввести SMTP-команды, такие как:

EHLO example.com

3. Проверка DNS сервера:
Можно подключиться к DNS-серверу и проверить его ответы:

telnet <dns-server> 53

Эти команды помогут вам для отладки, диагностики и проверки сетевых служб.

👉 @i_odmin
09:55 08-11-2025
Полезные команды Linux. Архивация и сжатие файлов

# gzip -9 file1
Поместить файл file1 в архив gzip с максимальной степенью сжатия

# rar a file1.rar file1 file2 dir1
Создать rar архив file1.rar, заархивировав файлы: file1, file2 и директорию: dir1

# rar a file1.rar test_file
Упаковать в rar архив file1.rar файл test_file

# rar x file.rar
Разархивировать rar архив file.rar

# bzip2 file1
Сжимает файл file1

# bunzip2 file1.bz2
Разжимает файл file1.bz2

# gzip file1
Сжимает файл file1

# gunzip file1.gz
Разжимает файл file1.gz

# tar -cvf archive.tar file1 file2 dir1
Создать tar архив archive.tar, упаковав в него файлы file1, file2 и директорию dir1

# tar -cvf archive.tar file
Упаковать в tar-архив archive.tar, файл file

# tar -tf archive.tar
Вывести содержимое tar архива

# tar -xvf archive.tar
Распаковать tar архив

# tar -xvf archive.tar -C /tmp
Распаковать архив в /tmp

# tar -cvfz archive.tar.gz dir1
Создать tar архив и сжать его с помощью программы gzip

# tar -xvfz archive.tar.gz
Разжать tar архив и распаковать его

# tar -cvfj archive.tar.bz2 dir1
Создать архив и сжать его с помощью bzip2 ( ключ -j работает не во всех *nix системах )

# tar -xvfj archive.tar.bz2
Разжать архив и распаковать его ( ключ -j работает не во всех *nix системах )

# zip file1.zip file1
Создать сжатый zip-архив

# zip -r file1.zip file1 file2 dir1
Запаковать в архив несколько файлов и/или директорий

# unzip file1.zip
Разжать и распаковать zip-архив

# unrar x file1.rar
Распаковать rar-архив

👉 @i_odmin
23:32 06-11-2025
Terminus (Tabby) – Кросс-платформенный терминал с возможностью тонкой конфигурации.

Данный терминал имеет интегрированный ssh-клиент - что делает его превосходной заменой стандартного PowerShell или PuTTY на Windows.

https://github.com/Eugeny/tabby

👉 @i_odmin
12:21 06-11-2025
Ты хочешь гарантированно ворваться в IT и начать зарабатывать? В России сегодня один из самых надежных путей в профессию - это 1С-разработка. Этот рынок растет каждый год, а 1С используют почти все компании в стране и специалистов действительно не хватает.

В Kata Academy ты пройдешь путь с нуля до трудоустройства всего за 9 месяцев.

1С это возможность работать в любой сфере бизнеса: от торговли до производства и выбирать удобный формат занятости. Карьера может развиваться в разработке, внедрении, консалтинге или управлении проектами.

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

Начни путь в IT с профессии, которая уже востребована и спрос на специалистов продолжит расти. Если хочешь стабильность и хороший доход, пора изучать 1С вместе с Kata Academy.

#реклама
О рекламодателе
09:32 06-11-2025
Сложно о простом. Все, что бы вы хотели знать о SFP модулях. Часть 2. Оптические кабели

В данной статье хотел бы с вами обсудить все, что касается оптических кабелей. От основ их устройства до практических рекомендаций по выбору.

❯ Зачем нужна эта статья?

Данная статья нам нужна для того, чтобы разобраться в базовых понятиях и разобрать:

- что такое оптическое волокно, патч-корд, пигтейл и из чего они состоят;
- симплекс и дуплекс;
- типы волокон (классы и стандарты);
- коннекторы и розетки;
- IL и RL;
- виды оболочек кабеля;
- как выбрать оптический патч-корд с практическими примерами.

https://habr.com/ru/companies/timeweb/articles/956574/

👉 @i_odmin
22:37 05-11-2025
Сложно о простом. Все, что бы вы хотели знать о SFP модулях. Часть 1. Эволюция модулей и базовые понятия

Я начинаю новый цикл статей. В нем мне бы хотелось с вами обсудить SFP‑модули. Что это такое, какие типы бывают (и чем они отличаются), какую роль играют оптические кабели и немного затронем историю их развития.

Информации очень много. Точного объема статей я пока не знаю, но обещаю разложить все по полочкам максимально емко и понятно.

https://habr.com/ru/companies/timeweb/articles/938234/

👉 @i_odmin
11:19 05-11-2025
Piu-piu-SH

Игра написана на чистом bash. Она поддерживает многопользовательские режимы «команда» и «дуэль». Для обмена данными между клиентом и сервером в многопользовательском режиме используется Netcat, поэтому он должен быть установлен в системе, если вы хотите играть с другом. Терминалы на обоих хостах должны быть одинакового размера для лучшего визуального восприятия.

В Ubuntu, начиная с версии 18.04, вы можете установить её через apt, но это не последняя версия.

sudo apt install -y piu-piu

https://github.com/vaniacer/piu-piu-SH


👉 @i_odmin
08:07 05-11-2025
Запуск команд на удаленном сервере через SSH

Запуск команд на удаленном компьютере через SSH-подключение

Протокол SSH, помимо работы в интерактивном режиме, поддерживает также разовый запуск команд или скриптов на удаленном компьютере под управлением ОС семейства Linux.

Синтаксис команды запуска удаленной команды:

ssh [пользователь]@[сервер] '[команда]'


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

Например, получим информацию об установленной на удаленном сервере операционной системе:

ssh my_name@192.168.1.77 'uname -a'


Чтобы запустить несколько команд за одно подключение, можно использовать символ “;” в качестве разделителя. Проверим время работы удаленного компьютера, его загрузку и запросим все активные сетевые подключения на удаленном компьютере:

ssh my_name@192.168.1.77 'uptime; netstat -anp tcp'


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

ssh my_name@192.168.1.77 'bash -s' < /home/user/anycript.sh

В результате скрипт в локальном файл /home/user/anyscript.sh исполнится на удаленном сервере.

👉 @i_odmin
22:19 03-11-2025
🔐 Как работает HTTPS и почему это безопасно?

Когда вы видите в адресной строке значок 🔒 - это означает, что соединение с сайтом защищено. Но как именно данные защищаются?

1) Проверка сертификата сервера

Браузер соединяется с сервером и получает SSL-сертификат.
Он проверяет, выдан ли сертификат доверенным центром (CA).
Если всё ок ✅ - продолжаем.


2) Обмен ключами

После проверки браузер и сервер договариваются, каким способом будут шифровать данные.
Создаётся общий секретный ключ - session key.
Этот ключ знают только они.


3) Шифрованный туннель

Теперь весь обмен данными происходит в зашифрованном виде.
Если кто-то перехватит трафик - он увидит лишь набор бессмысленных символов.


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

HTTPS защищает:

* 🔸 Пароли
* 🔸 Личные данные
* 🔸 Платёжную информацию
* 🔸 Сообщения и формы


👉 @i_odmin
10:36 03-11-2025
Cамые нужные команд SSH

Запускай команды быстро
Чтобы выполнить всего одну удаленную команду, совсем не обязательно подключаться к SSH, вводить команду, а затем отключаться. Можно сделать это сразу. Например, так можно посмотреть заполненность ФС удаленной машины:
$ ssh user@host df -h
А так — перезагрузить ее:
$ ssh user@host sudo reboot

Составляй списки команд и запускай их разом
Если у тебя есть целый список команд, которые следует выполнить, их можно записать в файл и скормить этот файл SSH:
$ ssh user@host "`cat file.txt`"

Редактируй удаленные файлы локальным редактором
Чтобы отредактировать файл на удаленной машине, не требуется заходить на нее и использовать консольный редактор. На самом деле файл можно открыть в твоем любимом текстовом редакторе на локальной машине (gvim заменяем на свой редактор):
$ gvim scp://user@host//путь/к/файлу

Копируй содержимое удаленного файла в буфер обмена
Если необходимо скопировать содержимое удаленного файла или вывод команды в буфер обмена, не обязательно выводить его на экран или открывать в текстовом редакторе и копировать вручную. Можно использовать следующую команду:
$ ssh user@host cat /путь/к/файлу | xclip
А так можно скопировать вывод команды:
$ ssh user@host uname -a | xclip

Сравнивай удаленный и локальный файл без копирования
Похожий прием можно использовать для сравнения двух файлов:
$ ssh user@host cat /путь/к/удаленному/файлу | diff /путь/к/лoкальному/файлу -

Работай с удаленными файлами с помощью локального файлового менеджера
Не всегда удобно работать с большим количеством файлов с помощью консольных команд или mc, запущенного на удаленной машине. Но всегда можно подключить любой каталог удаленной машины как сетевой диск. Для этого достаточно установить sshfs:
$ sudo apt-get install sshfs
Создать каталог для подключения «сетевого диска»:
$ mkdir remote_files
И подключить его:
$ sshfs user@host:/home/user ~/remote_files/
Теперь все файлы удаленного каталога /home/user будут видны в каталоге ~/remote_files/ и с ними можно работать, как с обычными.

Копируй ключи быстро
Хоть и копирование публичного ключа на удаленный сервер — задача простая, но она требует выполнения нескольких действий вручную. Если тебя это напpягает, скопировать ключ можно в автоматическом режиме:
$ ssh-copy-id user@host
При этом не обязательно копировать основной ключ, с помощью флага -i можно указать любой другой:
$ ssh-copy-id -i ~/my_key.pub user@host

Создай постоянное соединение с машиной
Если в течение дня ты часто подключаешься к одной машине, в том числе на несколько минут или секунд (чтобы просто запустить одну команду, например), есть смысл создать с ней постоянное соединение. Твой комп будет держать соединение открытым и использовать его для каждого подключения к машине. Это намного быстрее и экономичнее с точки зрения трафика и нагрузки на процессор.
Добавь следующие строки в ~/.ssh/config:
Host host
ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster no
А затем создай соединение:
$ ssh -MNf user@host

👉 @i_odmin