Вопрос или проблема
У меня есть маршрутизатор 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.