Я настраиваю веб-сервер, который не будет иметь статический глобальный IP-адрес. Он будет в доме моих родителей, и я не смогу подключиться к нему по SSH, когда изменится глобальная ИС. Глобальный IP-адрес будет меняться при каждом перезапуске маршрутизатора, что происходит один раз в месяц.
Мне нужен скрипт, который отправляет мне электронное письмо каждый раз, когда меняется глобальный IP. Так что я могу обновить DNS, чтобы мой сайт снова работал.
Я ничего не знаю о скриптах в Ubuntu, но я знаю основы Java и PHP.
Компьютер: сервер Ubuntu 13.10, iMac G4 Globe.
Рассматривали ли вы использование сценария / инструмента динамического обновления DNS?
Например. ddclient доступен в виде пакета Debian / Ubuntu.
Он может обновить вашу DNS-зону ИЛИ обновить вашу динамическую DNS-запись (чтобы вы могли войти в ssh) и выполнить собственный сценарий для отправки вам электронной почты.
Я использую это для проверки своего IP-адреса один раз в день.
wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' > ~/myip
Если у вас есть Linux-компьютер со статическим IP-адресом где-то, я бы сказал, просто скопируйте туда файл ~ / myip.
Если это не так, вы всегда можете использовать удобный инструмент командной строки под названием sendEmail (не путать с sendmail). Этот инструмент позволяет очень легко отправить электронное письмо с помощью однострочной команды. http://caspian.dotconf.net/menu/Software/SendEmail/
Вы можете написать что-то вроде этого:
myip=`wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'`<br>
sendEmail -f you@yourmail.com -m $myip
Основываясь на коде из , этот ответ я изменил и добавил еще несколько опций для отладки.
Мне пришлось настроить почтовый сервер и пользователя crontab -e
, чтобы он отправлял мне по электронной почте мой текущий IP-адрес. Вам также нужно будет сделать исполняемый файл скрипта и убедиться, что ваш пользователь прочитал и записал в папку, в которую вы помещаете скрипты.
#!/bin/bash
NOWIPADDR="/home/scripts/nowipaddr"
GETIPADDR="dig +short myip.opendns.com @resolver1.opendns.com"
LOG="/home/scripts/ip.log"
timestamp=$( date +%T )
curDate=$( date +"%m-%d-%y" )
if [ -f $NOWIPADDR ]; then
if [[ `$GETIPADDR` = $(< $NOWIPADDR) ]]; then
echo $curDate $timestamp " IP address check: " $(< $NOWIPADDR) >> $LOG
else
$GETIPADDR > $NOWIPADDR
mail -s "Server IP" email@gmail.com < $NOWIPADDR
fi
else
curl $GETIPADDR > $NOWIPADDR
mail -s "Server IP" email@gmail.com < $NOWIPADDR
fi
Вы можете написать простой скрипт для запуска из cron и ежедневно в определенное время.
Возьмите существующий ip в файл, а затем запустите цикл if, чтобы проверить новый ip с существующим ip, и если оба ip остаются одинаковыми, он может пропустить отправку почты. иначе, если есть изменение в IP, это должно послать почту с новым ip.
Вы можете запускать скрипт ежечасно, ежедневно, еженедельно.
NOWIPADDR="nowipaddr"
GETIPADDR="ifconfig.me"
if [ -f $NOWIPADDR ]
then
if [ `cat $NOWIPADDR` = `curl $GETIPADDR` ]
then
echo "no change in IP."
else
$GETIPADDR > $NOWIPADDR
mail -s "IP is $GETIPADDR" yourmailadd@gmail.com
fi
else
curl $GETIPADDR >> $NOWIPADDR
fi
Определенный старый поток, но это подходит довольно высоко в списке, когда Вы поиск Google, как контролировать для внешних изменений IP.
Как альтернативная опция, которая могла бы помочь Вам, я записал сценарий Python, разработанный для контроля для внешних изменений IP-адреса. Это в настоящее время сохраняет "текущий" внешний IP-адрес в файл и, когда выполнено, захватывает новый IP-адрес и затем проверяет его по старому. Это - дизайн, чтобы послать Вам по электронной почте, если изменение обнаруживается.
Это разработано для выполнения как cronjob и не работает как второстепенный демон самостоятельно.
Вот ссылка на репозиторий GitHub: https://github.com/begleysm/ipwatch
Надо надеяться, это помогает!