Запустите команду и отправьте вывод по электронной почте с темой, используя msmtp.

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

У меня есть маршрутизатор OpenWRT, установлен msmtp. Я бы хотел написать команду (или файл .sh), которая отправляла бы мне текущий публичный IP-адрес, и чтобы cron выполнял её каждые 15 минут.

Я нашел публикацию: Запустить команду и отправить результат по электронной почте

и попробовал сделать то же самое с msmtp, и это сработало: Я сделал следующее

kdig +short myip.opendns.com @resolver1.opendns.com | msmtp
[email protected]

и получил электронное письмо с текущим публичным IP-адресом, но без темы, конечно, потому что я ничего не указал. Теперь, для msmtp, способ задать тему заключается в следующем:

echo "Subject: Current Public IP" | msmtp [email protected]

Но я не имею представления, как я мог бы объединить эти две вещи… Я был бы очень признателен за вашу помощь!

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

kdig +short myip.opendns.com @resolver1.opendns.com |{
    SUBJ="A Subject"
    echo "From: \"name\"<[email protected]>"
    echo "To: \"me\"<[email protected]>"
    echo "Subject: ${SUBJ}"
    # Теперь повторяем то, что было передано 
    cat
} | msmtp [email protected]

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

Для того чтобы настроить автоматическую отправку текущего публичного IP-адреса через OpenWRT с использованием msmtp, можно воспользоваться следующим скриптом. Этот процесс включает выполнение команды и отправку вывода на электронную почту с заданной темой. Ниже приведён подробный пример реализации этого задания.

Шаги настройки

Шаг 1: Создайте скрипт для отправки IP-адреса

Создайте файл скрипта на вашем роутере, например, send_ip.sh, с содержимым:

#!/bin/sh

# Получение текущего публичного IP-адреса
ip_address=$(kdig +short myip.opendns.com @resolver1.opendns.com)

# Настройка заголовков и тела сообщения
subject="Текущий публичный IP"
from_email="ваш_адрес@example.com"
to_email="получатель@example.com"

{
    echo "From: \"Отправитель\" <$from_email>"
    echo "To: \"Получатель\" <$to_email>"
    echo "Subject: $subject"
    echo
    echo "Ваш текущий публичный IP-адрес: $ip_address"
} | msmtp --host=smtp.example.com --port=587 --auth=on --tls=on --user=ваш_адрес@example.com --password=ваш_пароль $to_email

Шаг 2: Настройте права доступа

Убедитесь, что файл скрипта исполняемый:

chmod +x /путь/к/send_ip.sh

Шаг 3: Настройте cron для выполнения скрипта

Откройте редактор crontab:

crontab -e

Добавьте запись для выполнения скрипта каждые 15 минут:

*/15 * * * * /путь/к/send_ip.sh

Дополнительные заметки

  • Безопасность: Для повышения безопасности используйте файл конфигурации msmtp для хранения учётных данных, а не в скрипте напрямую.

  • Файлы конфигурации: Сконфигурируйте msmtp в соответствующем конфигурационном файле, например /etc/msmtprc, чтобы учётные данные не хранились открыто в скрипте.

  • Отладка: Протестируйте скрипт вручную, чтобы убедиться, что он работает корректно, прежде чем настраивать cron.

Таким образом, ваш роутер OpenWRT будет регулярно отправлять текущий публичный IP-адрес на вашу электронную почту с указанной темой, что поможет вам всегда быть в курсе изменений IP.

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

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