Для создания скрипта уведомления о новых устройствах в сети на OpenWRT можно использовать несколько подходов. Один из них заключается в использовании системного мониторинга сетевых интерфейсов и отправке уведомлений через электронную почту или мессенджеры при обнаружении нового устройства. Вот пример простого скрипта на Bash:
#!/bin/bash
# Настройки
INTERFACE="br-lan" # Интерфейс для мониторинга
LOG_FILE="/tmp/network_devices.log" # Файл логирования MAC-адресов устройств
EMAIL_TO="your@email.com" # Адрес электронной почты для отправки уведомлений
SMTP_SERVER="smtp.yourserver.com" # SMTP-сервер для отправки писем
SMTP_PORT=587 # Порт SMTP-сервера
SMTP_USER="username" # Имя пользователя SMTP
SMTP_PASS="password" # Пароль SMTP
# Функция для отправки email
send_email() {
echo "Subject: New Device Detected on $INTERFACE" | sendmail -f "$SMTP_FROM" -s "$SMTP_SERVER:$SMTP_PORT" -au "$SMTP_USER" -ap "$SMTP_PASS" -t "$EMAIL_TO"
}
# Получаем список текущих MAC-адресов на интерфейсе
current_macs=$(ip neigh show dev $INTERFACE | awk '{print $5}')
# Читаем старые MAC-адреса из файла лога
old_macs=""
if [ -f "$LOG_FILE" ]; then
old_macs=$(cat "$LOG_FILE")
fi
# Сравниваем текущие и старые MAC-адреса
new_macs=$(comm -13 <(echo "$old_macs") <(echo "$current_macs"))
# Если есть новые MAC-адреса, отправляем уведомление и обновляем файл лога
if [ ! -z "$new_macs" ]; then
echo "New devices detected:" > /dev/stderr
for mac in $new_macs; do
echo "$mac" >> /dev/stderr
echo "$mac" >> "$LOG_FILE"
done
send_email
else
echo "No new devices." > /dev/stderr
fi
### Объяснение работы скрипта:
1. Настройка параметров:
- INTERFACE: интерфейс, который будет мониториться (например, br-lan).
- LOG_FILE: путь к файлу, где будут храниться известные MAC-адреса.
- EMAIL_TO, SMTP_SERVER, SMTP_PORT, SMTP_USER, SMTP_PASS: параметры для отправки email через SMTP-сервер.
2. Функция send_email(): используется для отправки email с уведомлением о новом устройстве.
3. Получение списка текущих MAC-адресов: команда ip neigh show dev $INTERFACE выводит информацию об ARP-записях для указанного интерфейса, а затем фильтруется с помощью awk, чтобы оставить только MAC-адреса.
4. Сравнение старых и новых MAC-адресов: с использованием команды comm сравниваются списки известных и новых MAC-адресов, чтобы определить новые устройства.
5. Отправка уведомления и обновление лог-файла: если обнаружены новые устройства, они добавляются в лог-файл и отправляется email с уведомлением.
### Установка и запуск:
1. Сохраните скрипт в файл, например, /usr/bin/check_new_devices.sh.
2. Сделайте скрипт исполняемым:
chmod +x /usr/bin/check_new_devices.sh
3. Добавьте задание в cron для регулярного выполнения скрипта, например, каждую минуту:
crontab -e
* * * * * /usr/bin/check_new_devices.sh
Этот скрипт является базовым примером и может быть расширен дополнительными функциями, такими как получение информации о производителе устройства по MAC-адресу, включение поддержки других методов уведомлений (например, Telegram) и т.д.