Pushnotificatie indien je externe IP-adres wijzigt

Door ThinkPad op woensdag 5 augustus 2015 21:04 - Reacties (12)
Categorie: Domotica, Views: 5.243

Zoals de meeste internetgebruikers met bijv. een Ziggo-abonnement wel bekend is, wil het nog wel eens voorkomen dat je externe IP-adres wijzigt.

Dit is soms nogal vervelend, ik heb bijvoorbeeld een backuptaak lopen tussen mijn Synology NAS en de Synology NAS die bij mijn ouders staat (offsite backup). Om dit allemaal een beetje veilig te houden staat poort 22 (SSH, nodig voor de 'NetBackup' van Synology) alleen open voor het IP-adres van m'n ouders en andersom alleen voor mijn IP-adres.

Dit adres wil dus nog wel eens wijzigen en dan krijg ik automatische mailtjes dat de backup niet voltooid kon worden. Normaal zou je zoiets met een DynDNS domeinnaam oplossen, maar dat werkt in dit geval niet (ik moet een IP-adres ingeven, domeinnaam kan niet).

Voor wat domotica gerelateerde zaken gebruikte ik al een tijdje Pushover om pushnotificaties naar m'n telefoon te sturen. Ze hebben een simpele API waarmee je gemakkelijk berichten kan sturen.
Nu leek het mij wel handig om een pushnotificatie te krijgen als mijn WAN IP-adres of dat van m'n ouders gewijzigd is. Dus even aan de slag geweest.

Grootste bron was dit script: http://nas.deadcode.net/2...en-external-ip-changed/2/
Voor het Pushover-notificatie stukje heb ik dit script gebruikt: https://github.com/fschae...h/blob/master/pushover.sh

Het uiteindelijke script ziet er zo uit:


Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/bin/bash
#
# simple script to send alert for ip changes
# version 0.1
# By Ray Chan
# http://nas.deadcode.net/2009/07/26/synology-email-alert-when-external-ip-changed/2/
# If you want a simple log file, assign 1 to log_enabled, otherwise set it to 0
log_enabled=0; #0=disable, 1=enable

# date format used by log file
datestamp=`date '+%Y-%m-%d %H:%M:%S'`

# the actual command getting the public IP
myipnow=`wget -4 -qO - icanhazip.com` 

previp="0.0.0.0";

# path of the log file, ignore if log_enabled=0
logfile="/volume1/@appstore/domoticz/var/scripts/bash/ipcheck/log.txt"

# path of the temporary file storing previous ip address
iplog="/volume1/@appstore/domoticz/var/scripts/bash/ipcheck/ip.log"

if [ -f $iplog ]; then
   previp=`cat $iplog`
fi

if [ $myipnow != $previp ]; then
   #ip changed, sending alert
   /bin/bash /volume1/@appstore/domoticz/var/scripts/bash/pushover.sh -u JOUW_USER_KEY -a JOUW_APPLICATIE_KEY -q "IP-adres thuis is gewijzigd" -m "Was $previp is nu $myipnow"


   #write the new ip to log file
   echo $myipnow > $iplog
   if [ $log_enabled = 1 ]; then
      echo "$datestamp IP changed, sending notification email. $previp | 
      $myipnow" >> $logfile
   fi
else
   if [ $log_enabled = 1 ]; then
      echo "$datestamp IP is same, skipping notification. $previp | 
      $myipnow" >> $logfile
   fi
fi


Het bestand 'ip.log' moet je zelf nog even aanmaken volgens mij (kun je leeglaten).

Als je bent ingelogd bij Pushover maak je een key aan voor je applicatie: https://pushover.net/apps
Om het geheel er wat flitsender uit te laten zien op je telefoon kun je van https://www.iconfinder.com/ nog even een mooi icoontje halen die je bij je Pushover app upload.

Om te testen kun je het script nu een keer draaien:
sh ipcheck.sh

Als het goed is zou in het 'ip.log' bestand dan je huidige IP-adres moeten komen te staan.
Wanneer je dit vervolgens aanpast (laatste cijfers even veranderen in iets anders) en het script nog een keer draait zou je een melding op je telefoon moeten krijgen.

Je zet het script in je crontab (ik laat hem elk uur draaien):
#minute hour    mday    month   wday    who     command
0       *       *       *       *       root    sh      /volume1/@appstore/domoticz/var/scripts/bash/ipcheck/ipcheck.sh


En vervolgens zal je automatisch een melding zoals hieronder krijgen mocht je externe IP-adres onverwachts wijzigen!
http://tweakers.net/ext/f/fNlptsGDp835d0n5ZT6UdePv/full.png

Het versturen van een Pushover bericht is zoals je ziet erg simpel, dus je kunt het ook eenvoudig voor andere scripts gebruiken.

Mocht je nou een 'dom' apparaat hebben wat alleen meldingen per e-mail kan versturen en je wilt dit apparaat toch pushmeldingen laten sturen dan kan dat sinds kort ook. Tweaker 'grote_oever' tipte mij hierop in het Domoticz topic. Pushover heeft een e-mail gateway opgezet waardoor dit mogelijk is. Let er wel op dat je niet over de gebruikslimiet van 7,500 pushberichten per applicatie per maand heengaat.

Volgende: [Gmail] Filterregel instellen om nieuwsbrieven naar map te verplaatsen 12-'15 [Gmail] Filterregel instellen om nieuwsbrieven naar map te verplaatsen
Volgende: Modem automatisch powercyclen bij internetproblemen 08-'15 Modem automatisch powercyclen bij internetproblemen

Reacties


Door Tweakers user prutsger, woensdag 5 augustus 2015 21:27

Nice. Gelukkig wijzigt het ip-adres niet zo vaak maar als ie wijzigt heb je het natuurlijk eerst niet door...

Ik heb hem licht gewijzigd overgenomen. I.p.v. Pushover verstuurt ie bij mij een mail. Uiteraard naar een extern e-mailadres want als het externe ip wijzigt kan ik mijn mailserver niet bereiken op de domeinnaam en kan ik dus geenmail ophalen...

Door Tweakers user ThinkPad, woensdag 5 augustus 2015 21:44

prutsger schreef op woensdag 05 augustus 2015 @ 21:27:
Nice. Gelukkig wijzigt het ip-adres niet zo vaak maar als ie wijzigt heb je het natuurlijk eerst niet door...

Ik heb hem licht gewijzigd overgenomen. I.p.v. Pushover verstuurt ie bij mij een mail. Uiteraard naar een extern e-mailadres want als het externe ip wijzigt kan ik mijn mailserver niet bereiken op de domeinnaam en kan ik dus geenmail ophalen...
De site waar ik de basis van het script vandaan heb gehaald doet het inderdaad met mail. Via Telegram zou ook nog kunnen: http://domoticz.com/wiki/...o_Send_Messages_with_Curl

Door Tweakers user TheAncientDovah, donderdag 6 augustus 2015 00:30

Wij gebruikem thuis NoIP om een constant IP adres te behouden.

Door Tweakers user fl1p, donderdag 6 augustus 2015 12:54

TheAncientDovah schreef op donderdag 06 augustus 2015 @ 00:30:
Wij gebruikem thuis NoIP om een constant IP adres te behouden.
...om het veranderen van het IP-adres op te vangen met een dynamic dns, bedoel je :-)

Door Tweakers user gac, donderdag 6 augustus 2015 13:08

Wel bijzonder dat je oude IPv4-adres op 555 (zie je eigen screenshot) eindigde. ;-)

Door Tweakers user ThinkPad, donderdag 6 augustus 2015 13:40

gac schreef op donderdag 06 augustus 2015 @ 13:08:
Wel bijzonder dat je oude IPv4-adres op 555 (zie je eigen screenshot) eindigde. ;-)
Haha dat had ik zelf even aangepast om het script te triggeren.

Door Tweakers user Blokker_1999, donderdag 6 augustus 2015 15:43

Heb zelf gelukkig een fritz!box modem voor men VDSL. Wanneer deze een reset van de lijn opmerkt zal deze zelf een script aanroepen op mijn home server. Dat script stuurt dan weer de nodige updates naar een nameserver op het internet zodat de gelinkte domeinnaam altijd correct is.

[Reactie gewijzigd op donderdag 6 augustus 2015 15:44]


Door Tweakers user ThinkPad, donderdag 6 augustus 2015 15:52

TheAncientDovah schreef op donderdag 06 augustus 2015 @ 00:30:
Wij gebruikem thuis NoIP om een constant IP adres te behouden.
Blokker_1999 schreef op donderdag 06 augustus 2015 @ 15:43:
Heb zelf gelukkig een fritz!box modem voor men VDSL. Wanneer deze een reset van de lijn opmerkt zal deze zelf een script aanroepen op mijn home server. Dat script stuurt dan weer de nodige updates naar een nameserver op het internet zodat de gelinkte domeinnaam altijd correct is.
Daar gaat het in dit geval niet om. Een DynDNS updater zit in menig modem/NAS als standaardfunctionaliteit ingebouwd (op mijn Synology NAS bijv. ook). Maar als je het verhaal leest dan zie je dat ik echt een IP moet hebben (ivm whitelisten in firewall).

Door Tweakers user Yankovic, donderdag 6 augustus 2015 23:21

Waarom gebruik je niet een vpn verbinding? OpenVPN is tegenwoordig met twee vingers in de neus opgezet, net zo veilig en maakt het maken van de backup misschien ook wel makkelijker.. Je kan dan iniedergeval wel naar een domeinnaam verbinden :)

Door Tweakers user ThinkPad, vrijdag 7 augustus 2015 07:32

Yankovic schreef op donderdag 06 augustus 2015 @ 23:21:
Waarom gebruik je niet een vpn verbinding? OpenVPN is tegenwoordig met twee vingers in de neus opgezet, net zo veilig en maakt het maken van de backup misschien ook wel makkelijker.. Je kan dan iniedergeval wel naar een domeinnaam verbinden :)
OpenVPN gebruik ik bijna dagelijks op m'n telefoon om verbinding te maken met m'n thuisnetwerk. Dat stelt weinig voor inderdaad. Maar voor backup vind ik dat onhandig, ook omdat het er trager van wordt had ik het idee. En het is meer storingsgevoelig ;) Als ik nu één IP-adres heb ingevuld werkt het, terwijl ik anders ook met certifcaat en username/ww zit te hannessen.

Door Tweakers user yeadder, vrijdag 7 augustus 2015 13:11

Je zou ook kunnen kijken naar Crashplan.
Hierbij ook je verschillende computers via een account of via accounts van bekende met elkaar verbinden en backups of andere data met elkaar laten uitwisselen.
Crashplan zorgt voor de koppelen en houdt de ip adressen bij.

Door Tweakers user ThinkPad, maandag 24 augustus 2015 11:05

Ik kreeg zojuist een notificatie dat het IP-adres bij m'n ouders (daar heb ik dit script ook draaien op hun Synology NAS) gewijzigd is. Script werkt dus super _O_

Om te kunnen reageren moet je ingelogd zijn. Via deze link kun je inloggen als je al geregistreerd bent. Indien je nog geen account hebt kun je er hier één aanmaken.