/* СТИЛИ */

[#DCBEELINEKZ] БИЛАЙН ХАБЫ КАЗАХСТАН

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » [#DCBEELINEKZ] БИЛАЙН ХАБЫ КАЗАХСТАН » [OPENWRT/LEDE ] » Скрипт уведомления о новых устройствах в сети. Openwrt


Скрипт уведомления о новых устройствах в сети. Openwrt

Сообщений 1 страница 2 из 2

1

Для создания скрипта уведомления о новых устройствах в сети на 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) и т.д.

0

2

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

### 1. Уведомления через Telegram
Telegram — популярный мессенджер, поддерживающий API для отправки сообщений. Для этого вам потребуется создать бота через BotFather и получить токен доступа.

#### Шаги:
1. Создайте бота через BotFather в Telegram.
2. Получите токен доступа вашего бота.
3. Используйте следующий код для отправки сообщения через Telegram:

```bash
#!/bin/bash

BOT_TOKEN="YOUR_BOT_TOKEN_HERE"
CHAT_ID="YOUR_CHAT_ID_HERE"
MESSAGE="New device detected!"

curl -s -X POST https://api.telegram.org/bot$BOT_TOKEN/sendMessage \
-d chat_id=$CHAT_ID \
-d text="$MESSAGE"
```

#### Как найти CHAT_ID?
Чтобы узнать свой `CHAT_ID`, вы можете отправить сообщение вашему боту и посмотреть ответ через URL:
```bash
https://api.telegram.org/bot<BOT_TOK … getUpdates
```

### 2. Push-уведомления через Pushover
Pushover — сервис для отправки push-уведомлений на мобильные устройства и компьютеры. Вам нужно зарегистрироваться на сайте и получить API-токены.

#### Шаги:
1. Зарегистрируйтесь на Pushover и получите ваши API-токены (`USER_KEY` и `API_TOKEN`).
2. Используйте следующий код для отправки push-уведомлений:

```bash
#!/bin/bash

PUSHOVER_API_TOKEN="YOUR_API_TOKEN_HERE"
PUSHOVER_USER_KEY="YOUR_USER_KEY_HERE"
MESSAGE="New device detected!"

curl -s \
-F "token=$PUSHOVER_API_TOKEN" \
-F "user=$PUSHOVER_USER_KEY" \
-F "message=$MESSAGE" \
https://api.pushover.net/1/messages.json
```

### 3. Уведомление через SMS
Вы можете настроить отправку SMS-сообщений через различные сервисы, такие как Twilio или Clickatell. Например, используя Twilio:

#### Шаги:
1. Зарегистрируйтесь на Twilio и получите свои учетные данные (`ACCOUNT_SID`, `AUTH_TOKEN`, `FROM_NUMBER`).
2. Установите библиотеку `twilio`:
   ```bash
   pip install twilio
   ```
3. Используйте следующий код для отправки SMS:

```python
from twilio.rest import Client

account_sid = 'YOUR_ACCOUNT_SID'
auth_token = 'YOUR_AUTH_TOKEN'
from_number = '+12345678901'  # Ваш номер Twilio
to_number = '+9876543210'     # Номер получателя

client = Client(account_sid, auth_token)

message = client.messages.create(
    body='New device detected!',
    from_=from_number,
    to=to_number
)

print(message.sid)
```

### 4. Уведомление через Slack
Slack — популярная платформа для командной коммуникации. Вы можете отправлять уведомления в канал Slack с помощью Webhook.

#### Шаги:
1. Создайте Webhook-интеграцию в вашем канале Slack.
2. Скопируйте URL Webhook.
3. Используйте следующий код для отправки сообщения в Slack:

```bash
#!/bin/bash

SLACK_WEBHOOK_URL="YOUR_SLACK_WEBHOOK_URL_HERE"
MESSAGE="New device detected!"

curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$MESSAGE\"}" $SLACK_WEBHOOK_URL
```

### 5. Уведомление через Matrix/Riot
Matrix — децентрализованная коммуникационная платформа с открытым исходным кодом. Вы можете отправлять уведомления в комнаты Matrix с помощью API.

#### Шаги:
1. Зарегистрируйте аккаунт на сервере Matrix.
2. Получите доступный токен доступа.
3. Используйте следующий код для отправки сообщения в комнату Matrix:

```bash
#!/bin/bash

MATRIX_ACCESS_TOKEN="YOUR_MATRIX_ACCESS_TOKEN_HERE"
MATRIX_ROOM_ID="!ROOM_ID:HOMESERVER:ORG"
MATRIX_HOMESERVER="https://matrix.example.org"
MESSAGE="New device detected!"

curl -X POST -d '{"msgtype":"m.text","body":"'"$MESSAGE"'"}' \
-H "Authorization: Bearer $MATRIX_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
"$MATRIX_HOMESERVER/_matrix/client/r0/rooms/$MATRIX_ROOM_ID/send/m.room.message"
```

### Заключение
Эти методы позволяют значительно расширить возможности вашей системы уведомлений. Выбор метода зависит от ваших предпочтений и доступности сервисов. Вы также можете комбинировать разные методы для достижения максимальной гибкости и надежности.

0


Вы здесь » [#DCBEELINEKZ] БИЛАЙН ХАБЫ КАЗАХСТАН » [OPENWRT/LEDE ] » Скрипт уведомления о новых устройствах в сети. Openwrt