

- Главная
- Каталог
- Интернет технологии
- Системный администратор
Системный администратор
Все для системного администратора. Мануалы, книги, полезные статьи по настройке сетевого оборудования, серверного оборудования.
Статистика канала
Полная статистикаchevron_righttop в Linux по умолчанию отображается только имя команды, запустившей процесс, но можно изменить отображение, чтобы увидеть полный командный путь.
Для этого в top выполните следующие шаги:
1. Запустите top:
top
{}
2. Нажмите клавишу c (латинская c), находясь в top. Это переключит отображение с имени команды на полный путь запуска команды (вместе с аргументами).
Теперь в колонке COMMAND вы увидите полную строку запуска процесса, а не только его имя.
Для возврата к отображению только имени команды снова нажмите c.
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 на имя пользователя, чтобы увидеть количество открытых файлов этим пользователем.
bash (и других оболочках Unix) разница между командами export VAR="VALUE" и VAR="VALUE" связана с областью видимости переменной:
1. VAR="VALUE":
- Это обычное объявление переменной в текущей оболочке (сессии).
- Переменная VAR будет доступна только внутри текущей сессии, и не будет передаваться дочерним процессам, запущенным этой сессией.
- Например, если вы запустите новую команду или скрипт из текущей оболочки, VAR не будет доступна в этом дочернем процессе.
2. export VAR="VALUE":
- Команда export делает переменную VAR доступной для всех дочерних процессов текущей оболочки.
- То есть, VAR будет установлена и доступна не только в текущей сессии, но и во всех процессах, запущенных из этой сессии.
- Это полезно, когда необходимо передать значение переменной в другие программы или скрипты, запущенные из текущей оболочки.
Для примера
# Присвоение переменной без export
VAR="Hello"
bash -c 'echo $VAR' # Ничего не выведет, так как VAR не экспортирована
# Присвоение переменной с export
export VAR="Hello"
bash -c 'echo $VAR' # Выведет "Hello", так как VAR экспортирована
{}
Таким образом, export используется для того, чтобы переменная была доступна в дочерних процессах, тогда как обычное присвоение без export ограничивает переменную только текущей сессией.
/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;
}
{}
$servers = @("Server01", "Server02", "Server03") # список серверов
$newPass = ConvertTo-SecureString "Новый_Сложный_Пароль!" -AsPlainText -Force
foreach ($srv in $servers) {
Invoke-Command -ComputerName $srv -ScriptBlock {
param($pass)
$user = [ADSI]"WinNT://./Administrator,User"
$user.SetPassword($pass)
} -ArgumentList $newPass
}
{}
⚡️ Важно: убедись, что у тебя есть права на все машины и открыт WinRM!
Если хочется более гибко, можно расширить скрипт, добавить логирование или рандомизацию паролей.
👉 @win_sysadmin
#!/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.
Отзывы канала
всего 40 отзывов
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Системный администратор — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 26.3K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 52.6, количество отзывов – 40, со средней оценкой 4.9.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 13986.0 ₽, а за 209 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий