Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
💡Быстрый совет по Linux
Если нужно удалить пустые каталоги, команда find упрощает задачу:
Подписывайтесь на наш канал в MAX и будьте в курсе!
👉 Мы в MAX
@sysadmin1
Если нужно удалить пустые каталоги, команда find упрощает задачу:
$ find . -type d -empty -exec rmdir -v {} +
Опция -type d ищет каталоги,
-empty выбирает только пустые,
а -exec rmdir {} запускает команду rmdir для их удаления.
Команда rmdir дополнительно проверяет, что каталог пуст, перед удалением.
Альтернативный вариант для того же результата:
$ find . -type d -empty -delete
Подписывайтесь на наш канал в MAX и будьте в курсе!
👉 Мы в MAX
@sysadmin1
🎉2
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉2
Шпаргалка по синтаксису CRON
Формат записи:
Специальные символы:
Примеры:
Специальные строки:
Подписывайтесь на наш канал в MAX и будьте в курсе!
👉 Мы в MAX
@sysadmin1
Формат записи:
* * * * * команда
│ │ │ │ │
│ │ │ │ └─ День недели (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:
grex
Утилита на вход принимает примеры искомых значений, на их основе генерирует регулярное выражение. От grex не стоит ждать чудес. Он генерирует простые выражения, которые станут неплохой базой для старта.
Для установки достаточно скачать бинарник:
@sysadmin1
Генераторы - полезные помощники, ускоряющие работу с регулярными выражениями. Тем не менее, чудес не бывает. Сложность семантики регэксов исключает возможность создания универсального генератора. Даже продвинутые языковые модели (вроде ChatGPT и Claude) слабоваты в этой области. Выбирайте инструмент, исходя из его специфики и узконаправленного .
rgxg
Генератор поддерживает несколько заранее заданных шаблонов: диапазоны чисел с разным основанием (десятичные, шестнадцатеричные и другие), CIDR для IPv4, списки альтернатив.
Установка rgxg:
sudo apt install rgxggrex
Утилита на вход принимает примеры искомых значений, на их основе генерирует регулярное выражение. От 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉2❤1
Как сделать цветной вывод, используя grc (Generic Colourizer).
Он работает с множеством инструментов «из коробки» (df, lsblk, free, ps и другие).
Вы можете быстро установить его с помощью вашего менеджера пакетов, например:
Затем перезагрузите вашу оболочку:
Затем перезагрузите:
Подписывайтесь на наш канал в MAX и будьте в курсе!
👉 Мы в MAX
@sysadmin1
Он работает с множеством инструментов «из коробки» (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
14%
100
42%
4096
30%
1024
13%
256
Подборка полезных скриптов для Mikrotik
Сгенерировать резервную копию и отправить её по электронной почте
Этот скрипт создаёт файл резервной копии и отправляет его на указанный адрес электронной почты. В теме письма содержится имя маршрутизатора, текущая дата и время.
Обратите внимание, что сервер SMTP должен быть настроен перед использованием этого скрипта. Смотрите настройки в разделе /tool e-mail.
Файл резервной копии содержит конфиденциальную информацию, такую как пароли. Поэтому, чтобы получить доступ к созданным файлам резервной копии, у скрипта или планировщика должна быть политика "sensitive" (чувствительная).
Использование строки в качестве функции
и добавьте брандмауэр
Теперь мы можем написать сценарий и запланировать его выполнение, скажем, каждые 30 секунд.
Код сценария:
Подписывайтесь на наш канал в MAX и будьте в курсе!
👉 Мы в MAX
@sysadmin1
Сгенерировать резервную копию и отправить её по электронной почте
Этот скрипт создаёт файл резервной копии и отправляет его на указанный адрес электронной почты. В теме письма содержится имя маршрутизатора, текущая дата и время.
Обратите внимание, что сервер 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
В чем разница между объявлением переменной export VAR="VALUE" и VAR="VALUE" в bash?
В
1.
- Это обычное объявление переменной в текущей оболочке (сессии).
- Переменная
- Например, если вы запустите новую команду или скрипт из текущей оболочки,
2.
- Команда
- То есть,
- Это полезно, когда необходимо передать значение переменной в другие программы или скрипты, запущенные из текущей оболочки.
Для примера
Подписывайтесь на наш канал в MAX и будьте в курсе!
👉 Мы в MAX
@sysadmin1
В
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