LINUX.ORG.RU
ФорумAdmin

Оповещение о смене адреса


0

3

После того, как пришлось с праздника одного срочно бежать домой за недоступностью компьютера по ssh появился вопрос.

Вот есть сеть у меня дома: провайдер - рутер - моя локалка. В локалке есть комп под FreeBSD на который проброшен 22 порт.

Вопрос следующий: как сделать так, чтобы при смене ip, мне отправлялось оповещение по мылу/jabber/whatever?

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

Можно ли это написать на sh? Или проще сконпелять простую прогу при владении C/C++? Есть ли идеи получше, как организовать этот алгоритм?

ман dyndns

anonymous
()

есть, на работе валяется скрипт запускается по крону каждые 10 мин и если чтото не так на мыло скидывает новый ip адрес. Если руки дойдут закину под icq\жаба бота :) Скрипт увы - пока не скину, ключи от сервака дома валяются, а больше к нему никак не подключиться ^_^

Lwulf
()

а инет какой? дело в том что при подъёме и опускании соединения модно пригвоздить скрипты

visual ★★★
()
Ответ на: комментарий от morpheus

вот как делал я(pppoe)

/etc/ppp/peers/btk:

.... 
connect /etc/ppp/btk.sh
disconnect /etc/ppp/btkout.sh
pty "pppoe -I eth0"

/etc/ppp/btk.sh - скрипт при срабатывающий при коннекте

visual ★★★
()
Ответ на: комментарий от visual

Сеть другая: инет - рутер - комп. Компу все равно, он же за NAT, да еще сам и не управляет PPP-соединением.

morpheus
() автор топика
Ответ на: комментарий от morpheus

А чем сервисы динамического DNS (no-ip, dyndns) не нравятся? И не надо никаких костылей в виде почтовых сообщений.

KivApple ★★★★★
()
Ответ на: комментарий от morpheus

так ты посмотри может в роутер можно запихнуть.

visual ★★★
()
Ответ на: комментарий от morpheus

Ну для фряхи у DynDNS тоже должны быть клиенты, а превращать имя компьютера в IP адрес это задача DNS-серверов. А то у вас какой-то DNS over Mail получается, а это огромный костыль.

KivApple ★★★★★
()
Ответ на: комментарий от KivApple

А кто про DNS вообще говорил? Про FQDN? Чисто на адресах все.

morpheus
() автор топика

почему никто до сих пор не предложил скрипт в ip-post-up?

anonymous
()

итого, скрипт

#!/bin/sh

echo 'new-ip '$(wget -O - -q icanhazip.com)|mail -s "test" mybox@yandex.ru 

в файле /etc/mail/sendmail.cf найди и дополнить строки

O DaemonPortOptions=Name=IPv4, Family=inet, Address=127.0.0.1
O DaemonPortOptions=Name=IPv4, Family=inet, Address=127.0.0.1
ну и службу sendmail сделать запускающейся :) в слаке это делается так chmod +x /etc/rc.d/rc.sendmail && /etc/rc.d/rc.sendmail start
По личному опыту письма на яндекс приходят сразу и попадают в спам, так что оттуда 1 письмо надо будит вытащить и сказать что всё труЪ. На гугл приходят с задержкой от 10сек до 2 часов.(по протоколам все отправляется как надо). Рамблер хз как, иногда сразу приходит, иногда с задержкой, по праздникам задержка от 2 минут до 2 суток.

Lwulf
()
Ответ на: комментарий от Lwulf

исправленый скрипт my_ip.sh

#!/bin/sh
file="/home/lwulf/now_ip"
mail="mybox@yandex.ru"
myip=$(wget -O - -q icanhazip.com)
if [ -e $file ]; then
    #echo "File exists"
    oldip=`cat $file`
    if [[ $myip = $oldip ]]; then
	echo $myip > $file
    else
	echo $myip > $file
	echo 'new-ip '$myip|mail -s "new_ip" $mail
    fi
else
    #echo "File does not exists"
    echo $myip > $file
    echo 'new-ip '$myip|mail -s "test" $mail
fi

Lwulf
()
Ответ на: комментарий от Lwulf

переменная файл - указывает где лежит нужный файл с текущим ip
mail - не очень корректно названная переменная с адресом куда слать письмо
myip - текущий внешний ip адрес
oldip - старый ip адрес, лежащий в переменной file

Lwulf
()
Ответ на: комментарий от Lwulf

Ага, именно то, про что я рассказывал в начале. Спасибо, сенсей.

morpheus
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.