Я использую DNSExit на своем сервере Ubuntu (Natty 11.04), установил rpm-файл ipUpdate и выполнил установку apt-get для chkconfig, чтобы включить ipUpdate.
Я хотел бы получать электронное письмо при каждом изменении IP-адреса, чтобы я мог использовать SSH в коробке с помощью PuTTY (потому что не могу, если не знаю текущий IP-адрес).
Текущий IP-адрес хранится в /tmp/dnsexit-ip.txt
, и я бы хотел, чтобы при каждом изменении этого файла отправлять содержимое этого файла и содержимое /var/log/dnsexit.log
(которое содержит историю изменений IP) на мой адрес электронной почты.
Как я могу выполнить эту задачу? Я думаю, что cronjob будет решением, но я не уверен, как это сделать.
Установите sendEmail . Это легкий почтовый клиент командной строки SMTP. Мы будем использовать его для отправки электронных писем из сценария, используя учетную запись Gmail.
sudo apt-get install sendemail libio-socket-ssl-perl libnet-ssleay-perl
Создайте файл с именем « ip-notify.sh » где-нибудь, например, в каталоге « Scripts » в вашем домашняя папка; сделайте его исполняемым и откройте для редактирования.
mkdir -p ~/Scripts && touch ~/Scripts/ip-notify.sh && chmod a+x ~/Scripts/ip-notify.sh && gedit ~/Scripts/ip-notify.sh
Вставьте следующий текст в файл:
#!/bin/bash
# Modify the following values!
SENDERNAME="Computer" # This is the name that will show in the 'From' field. Purely esthetic.
RECIPIENTNAME="Your Name" # This is the name that will show in the 'To' field. Also purely esthetic.
GMAILADDRESS="someemail@gmail.com" # This is your Gmail address.
GMAILUSER="someemail" # This is your Gmail username, without the '@gmail.com' part.
GMAILPASS="password" # This is your Gmail password.
# You can stop modifying here
DIR=/tmp/
CURIP=dnsexit-ip.txt
IPLOG=/var/log/dnsexit.log
SMTPSERVER="smtp.gmail.com:587"
if [[ $(find $DIR -mmin -2 -name $CURIP) ]];
then
echo "$CURIP has been modified in the last two minutes."
# Send an email
sendemail -u "IP Address" -m "IP address has changed!" -f "$SENDERNAME <$GMAILADDRESS>" -t "$RECIPIENTNAME <$GMAILADDRESS>" -s $SMTPSERVER -xu $GMAILUSER -xp $GMAILPASS -a $DIR$CURIP $IPLOG
fi
Как только это будет сделано, сохраните и закройте файл.
Мы будем запускать этот скрипт каждые две минуты. Откройте свой кронтаб.
crontab -e
Добавьте следующую строку в конец файла:
*/2 * * * * bash ~/Scripts/ip-notify.sh
Если все пойдет хорошо, теперь вы должны получать обновления по электронной почте, когда IP-адрес вашей машины изменится.
Если у вас установлена почта (я использую postfix ... т.е. sudo apt-get install postfix), вы можете запускать bash-скрипт в cron каждые 5 минут.
Сценарий использует 'stat', чтобы проверить, изменился ли файл за последние пять минут (300 секунд), если переменная $ diff будет равна 1.
Должно сработать нечто подобное:
#!/bin/bash
filemtime=`stat -c %Y /tmp/dnsexit-ip.txt`
currtime=`date +%s`
diff=$(( (currtime - filemtime) / 300 ))
x=1
if [ $diff -eq $x ]
then
SUBJECT="DCHP CHANGE"
EMAIL="youremail@example.com"
EMAILMESSAGE="/tmp/emailmessage.txt"
echo "Contents of dnsexit-ip.txt" >$EMAILMESSAGE
cat /tmp/dnsexit-ip.txt >> $EMAILMESSAGE
echo "Contents of dnsexit.log" >>$EMAILMESSAGE
cat /var/log/dnsexit.log >> $EMAILMESSAGE
sudo /usr/bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE
fi