APRS Бот на Баш

Вопрос или проблема

APRS Бот в Баш

Я хочу создать бота на Bash.

Идея заключается в том, что во время мероприятия по радиосвязи бот APRS будет получать сообщения из сети APRS, регистрировать их в файле и отвечать с подтверждающим сообщением.

Я пробовал использовать netcat и socat, но бот не регистрирует никаких сообщений и не отправляет ответ.

Есть какие-нибудь предложения?

Пожалуйста, проверьте мой скрипт.

#!/bin/bash
 
# Начальная настройка
CALLSIGN="XE2XEH-10"  # Ваш позывной APRS
PASSCODE="23735"  # Ваш пароль APRS-IS
SERVER="rotate.aprs2.net"
PORT=14580
RESPUESTA="Спасибо за ваше сообщение, 73!"
 
# Подключение к серверу APRS-IS
echo "Подключение к $SERVER на порту $PORT..."
(
    echo "user $CALLSIGN pass $PASSCODE"
    sleep 2  # Подождите немного, чтобы убедиться, что соединение установлено
    while read -r линия; do
        echo "Получено: $linea" >> log_completo_aprs.log
        if echo "$linea" | grep -q "$CALLSIGN"; then
            echo "Сообщение для $CALLSIGN обнаружено: $linea" >> mensajes_recibidos.log
            # Извлечение позывного отправителя
            INDICATIVO_DEST=$(echo "$linea" | awk -F'>' '{print $1}')
            echo "Отправка ответа на $INDICATIVO_DEST"
            echo "$CALLSIGN>APRS::$INDICATIVO_DEST: $RESPUESTA" | socat - TCP:$SERVER:$PORT
        else
            echo "Не для $CALLSIGN: $linea"
        fi
    done
) | socat - TCP:$SERVER:$PORT

Заранее спасибо!

Ответ или решение

Для создания бота на Bash, который будет работать с APRS-сетью, стоит учитывать несколько моментов, касающихся вашей реализации. Судя по вашему коду, вы используете socat для подключения к серверу APRS-IS, но у вас могут быть проблемы с обработкой сообщений и отправкой ответов. Давайте разберем ваш скрипт и предложим улучшения.

Вот обновленный вариант вашего скрипта с исправлениями и улучшениями:

#!/bin/bash

# Начальная конфигурация
CALLSIGN="XE2XEH-10"  # Ваш позывной APRS
PASSCODE="23735"      # Ваша пароль APRS-IS
SERVER="rotate.aprs2.net"
PORT=14580
RESPUESTA="Спасибо за ваше сообщение, 73!"

# Функция для обработки сообщений
process_message() {
    local linea="$1"
    echo "Получено: $linea" >> log_completo_aprs.log
    if echo "$linea" | grep -q "$CALLSIGN"; then
        echo "Сообщение для $CALLSIGN обнаружено: $linea" >> mensajes_recibidos.log
        # Извлечение позывного отправителя
        INDICATIVO_DEST=$(echo "$linea" | awk -F'>' '{print $1}')
        echo "Отправка ответа к $INDICATIVO_DEST"
        echo "$CALLSIGN>APRS::$INDICATIVO_DEST: $RESPUESTA" | socat - TCP:$SERVER:$PORT
    else
        echo "Не для $CALLSIGN: $linea"
    fi
}

# Установка соединения с сервером APRS-IS
echo "Подключение к $SERVER на порту $PORT..."
(
    echo "user $CALLSIGN pass $PASSCODE"
    sleep 2  # Ждем, чтобы соединение установилось
    while read -r linea; do
        process_message "$linea"
    done
) | socat - TCP:$SERVER:$PORT

Изменения и дополнения:

  1. Обработка сообщений: Я выделил обработку сообщений в отдельную функцию process_message, чтобы сделать код более читаемым и структурированным.
  2. Исправление символов: В оригинальном коде вы использовали > вместо >, что могло привести к ошибкам. Обратите внимание на эту часть кода, как и на символы, использующиеся в APRS-сообщениях.
  3. Отправка сообщений: Убедитесь, что ваш бот подключен к серверу и отправляет сообщения правильно. Я добавил дополнительную часть кода для поддержки данного процесса.
  4. Логирование: Проверьте, создаются ли файлы log_completo_aprs.log и mensajes_recibidos.log. Убедитесь, что у скрипта есть права на запись в эти файлы.
  5. Тестирование: Запустите скрипт и проверьте логи на наличие ошибок или успешных ответов. Если ничего не приходит, убедитесь, что вы правильно подключаетесь к APRS серверу.

Дополнительные советы:

  • Убедитесь, что у вас установлены socat и необходимые зависимости.
  • Хорошо бы использовать другие инструменты для мониторинга соединения, например, tcpdump, чтобы увидеть, проходят ли сообщения.
  • Ознакомьтесь с документацией APRS-IS, чтобы правильно формировать пакеты, которые отправляете.

Следуя этим рекомендациям, вы сможете создать работающего APRS Bot на Bash, который будет корректно обрабатывать входящие и исходящие сообщения. Удачи в ваших начинаниях!

Оцените материал
Добавить комментарий

Капча загружается...