Системный администратор - Сетевые технологии - Компьютерная помощь
8.35K subscribers
3.76K photos
5.14K videos
1.15K files
1.07K links
Канал для системных администраторов или те кто работает в ИТ сфере.
📚КНИГИ ПО
💠Cisco systems
💠Mikrotik
💠VoIP
💠Linux
💠 Windows server
💠 Сетевые технологии
📽Видеоуроки
🤝Поддержка
Наша группа: @SySAD
Feedback bot: @SySADbot
Download Telegram
Forwarded from Про100ИТ
[BGP] Какое состояние BGP FSM означает установленную сессию, по которой идут UPDATE?
Anonymous Quiz
55%
Established
17%
OpenConfirm
8%
Idle
20%
Active
👍1🔥1
💡Быстрый совет по Linux

Если нужно удалить пустые каталоги, команда find упрощает задачу:


$ find . -type d -empty -exec rmdir -v {} +



Опция -type d ищет каталоги,
-empty выбирает только пустые,
а -exec rmdir {} запускает команду rmdir для их удаления.

Команда rmdir дополнительно проверяет, что каталог пуст, перед удалением.

Альтернативный вариант для того же результата:


$ find . -type d -empty -delete


Подписывайтесь на наш канал в MAX и будьте в курсе!
👉 Мы в MAX

@sysadmin1
🎉2
Шпаргалка по синтаксису CRON


Формат записи:



* * * * * команда
│ │ │ │ │
│ │ │ │ └─ День недели (0–6, где 0 = воскресенье)
│ │ │ └─── Месяц (1–12)
│ │ └───── День месяца (1–31)
│ └─────── Час (0–23)
└───────── Минуты (0–59)


Специальные символы:

* — любое значение (например, каждая минута, каждый день).
, — перечисление (например, 1,15 = 1-е и 15-е число).
- — диапазон (например, 1-5 = с понедельника по пятницу).
/ — шаг (например, */10 = каждые 10 минут).
? — «неважно» (обычно в день месяца или день недели).

Примеры:

0 * * * * → запуск каждый час.
*/30 * * * * → каждые 30 минут.
0 0 * * * → в полночь каждый день.
0 8 * * 1 → каждый понедельник в 8:00.
0 18 15 * * → 15-го числа каждого месяца в 18:00.

Специальные строки:

@reboot → запуск при старте системы.
@hourly → каждый час.
@midnight → каждый день в полночь.
@monthly → каждый месяц в полночь 1-го числа.

Подписывайтесь на наш канал в MAX и будьте в курсе!
👉 Мы в MAX

@sysadmin1
🔥4
Генераторы регулярных выражений
Генераторы - полезные помощники, ускоряющие работу с регулярными выражениями. Тем не менее, чудес не бывает. Сложность семантики регэксов исключает возможность создания универсального генератора. Даже продвинутые языковые модели (вроде ChatGPT и Claude) слабоваты в этой области. Выбирайте инструмент, исходя из его специфики и узконаправленного .
rgxg
Ге­нера­тор под­держи­вает нес­коль­ко заранее задан­ных шаб­лонов: диапа­зоны чисел с раз­ным осно­вани­ем (десятич­ные, шес­тнад­цатерич­ные и дру­гие), CIDR для IPv4, спис­ки аль­тер­натив.
Ус­танов­ка rgxg:
sudo apt install rgxg
grex
Ути­лита на вход при­нима­ет при­меры иско­мых зна­чений, на их осно­ве генери­рует регуляр­ное выраже­ние. От grex не сто­ит ждать чудес. Он генери­рует прос­тые выраже­ния, которые ста­нут неп­лохой базой для стар­та.
Для уста­нов­ки дос­таточ­но ска­чать бинар­ник:
wget -O grex.tar.gz "https://github.com/pemistahl/grex/releases/download/v1.4.5/grex-v1.4.5-x86_64-unknown-linux-m

@sysadmin1
👍2
Как сделать цветной вывод, используя 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

Подписывайтесь на наш канал в MAX и будьте в курсе!
👉 Мы в MAX

@sysadmin1
🔥2
Forwarded from Про100ИТ
[STP/RSTP] Каков шаг изменения приоритета моста в классическом PVST+/STP?
Anonymous Quiz
15%
100
43%
4096
29%
1024
14%
256
Подборка полезных скриптов для Mikrotik

Сгенерировать резервную копию и отправить её по электронной почте

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

Обратите внимание, что сервер SMTP должен быть настроен перед использованием этого скрипта. Смотрите настройки в разделе /tool e-mail.


/system backup save name=email_backup
/tool e-mail send file=email_backup.backup to="me@test.com" body="See attached file" \
subject="$[/system identity get name] $[/system clock get time] $[/system clock get date] Backup")


Файл резервной копии содержит конфиденциальную информацию, такую как пароли. Поэтому, чтобы получить доступ к созданным файлам резервной копии, у скрипта или планировщика должна быть политика "sensitive" (чувствительная).

Использование строки в качестве функции


:global printA [:parse ":local A; :put \$A;" ];
$printA



Проверка пропускной способности и добавление ограничений
Этот скрипт проверяет, не превышает ли загрузка на интерфейсе 512 кбит/с, если это так, то добавляется очередь для ограничения скорости до 256 кбит/с.


:foreach i in=[/interface find] do={
/interface monitor-traffic $i once do={
:if ($"received-bits-per-second" > 0 ) do={
:local tmpIP [/ip address get [/ip address find interface=$i] address] ;
# :log warning $tmpIP ;
:for j from=( [:len $tmpIP] - 1) to=0 do={
:if ( [:pick $tmpIP $j] = "/") do={
/queue simple add name=$i max-limit=256000/256000 dst-address=[:pick $tmpIP 0 $j] ;
}
}
}
}
}



Заблокировать доступ к определённым веб-сайтам
Этот скрипт полезен, если вы хотите заблокировать некоторые сайты, но не хотите использовать веб-прокси.

В этом примере проверяются записи "Rapidshare" и "youtube" в DNS-кэше, и IP-адреса добавляются в список адресов с именем "restricted". Прежде чем начать, необходимо настроить маршрутизатор для перехвата всех DNS-запросов.


/ip firewall nat
add action=redirect chain=dstnat comment=DNS dst-port=53 protocol=tcp to-ports=53
add action=redirect chain=dstnat dst-port=53 protocol=udp to-ports=53



и добавьте брандмауэр


/ip firewall filter
add chain=forward dst-address-list=restricted action=drop



Теперь мы можем написать сценарий и запланировать его выполнение, скажем, каждые 30 секунд.
Код сценария:


:foreach i in=[/ip dns cache find] do={
:local bNew "true";
:local cacheName [/ip dns cache all get $i name] ;
# :put $cacheName;

:if (([:find $cacheName "rapidshare"] >= 0) || ([:find $cacheName "youtube"] >= 0)) do={

:local tmpAddress [/ip dns cache get $i address] ;
# :put $tmpAddress;

# if address list is empty do not check
:if ( [/ip firewall address-list find list="restricted" ] = "") do={
:log info ("added entry: $[/ip dns cache get $i name] IP $tmpAddress");
/ip firewall address-list add address=$tmpAddress list=restricted comment=$cacheName;
} else={
:foreach j in=[/ip firewall address-list find list="restricted"] do={
:if ( [/ip firewall address-list get $j address] = $tmpAddress ) do={
:set bNew "false";
}
}
:if ( $bNew = "true" ) do={
:log info ("added entry: $[/ip dns cache get $i name] IP $tmpAddress");
/ip firewall address-list add address=$tmpAddress list=restricted comment=$cacheName;
}
}
}
}


Подписывайтесь на наш канал в MAX и будьте в курсе!
👉 Мы в MAX

@sysadmin1
❤1🔥1
В чем разница между объявлением переменной export VAR="VALUE" и VAR="VALUE" в bash?

В 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 ограничивает переменную только текущей сессией.


Подписывайтесь на наш канал в MAX и будьте в курсе!
👉 Мы в MAX

@sysadmin1