Så lenge man ikke har lyst til å bruke penger på statisk/fast ip så vil man få problemer med at ip'en forandrer seg en eller annen gang. For min del så er ikke dette så veldig ofte. Stort sett bare hvis jeg restarter routeren min (og så kan du jo spørre meg: Hvorfor i alle verden har du dynamisk ip på routeren din?). 

Jo det skal jeg fortelle deg: Det er fordi min internett-leverandør(jeg nevner ikke navn) som har levert routeren har konfigurert routeren slik at jeg kan bare bruke statisk ip i noen dager, og da slutter den å fungere. Snedige greier. Jeg syntes dette var både snedig og rart da jeg ikke skjønte hva som foregikk. Å få beskjed om at routeren din fungerer helt fint er jo ikke helt den meldingen man har lyst til å høre da. Men neida. "Vanlige" mennesker har ikke lov til å bruke denne funksjonen på deres routere. "Ikke-vanlige-brukere" er da de med bedrifts-abonnement og får levert fast ip fra internett-leverandøren. Morsom sak det der, for prisen på dette blir jo da...ja ...ganske mye mer og helt uaktuellt for en "vanlig" person/bruker.

Det finnes andre løsninger der ute som dynip.com. Men dette er ikke aktuellt for min del. Det å få fast ip fra routeren din er ikke noe problem. Det er jo bare å kjøpe din egen. Men det har jeg ikke tenkt til. Ikke aktuellt akkurat her og nå...men jeg har iallefall laget et skript som sjekker ekstern ip og lokal ip, slik at man får beskjed om at noe har skjedd, slik at man kan gå inn og gjøre de nødvendige forandringene i enten DNS-serveren eller i routeren, slik at "ting og tang" kommer til riktig maskin. Veldig greit egentlig når man kjører webservere eller annet som trengs å routes.

Min eksterne ip tror jeg ikke har forandret seg siden jeg fikk abonnementet, men den lokal ip'en forandrer seg i ny og ne. Spesiellt hvis det har skjedd en reboot av enten maskin eller router, når det gjøres en request på ip. Veldig sjeldent faktisk at ip'en på maskinen forandres bare ved en reboot. Veldig greit egentlig. En måte man kan minske dette på er å minske ip-tildelings-området til routeren. Hvis man vet at det bare er 3 maskiner på nettverket så kan man begrense ip-området dertil. Men men...

Jeg har satt skriptet mitt til å kjøres ved boot-time når runlevel 5 er nådd samt en gang om dagen. Hvordan man gjør dette (Opensuse 12.3), kan du se/lese om her.

Har lagt til kommentarer på engelsk...gammel vane:

#!/bin/bash

######    The script should only report if any local ip's  or external ip's
######    have changed. First of all: check external ip. I use curl and the
######    domain ifconfig.me. The output when using curl is the ip-addresse.
######    Clean and nice.
######    Second of all: Check local ip-adresse using ifconfig on a certain
######    interface.

#external ip flag for change. We're assuming there has been a change
xip=1
ip=1

### run curl in silent mode and redirect output to file
curl -s ifconfig.me > current_ip

### check the difference between the two files containing adresses
### and redirect anything to a file. We want to see the difference if there are any
diff current_ip prev_ip > any_difference.txt

### save the output in a variable also
any_difference=$?

if [ $any_difference == 0 ]; then
	ip=0
	xternal="External ip has not changed"
else
	#external ip has changed:
	xternal="External ip has changed"
	## if desireable change prev_ip-file with new ip
	#cat current_ip > prev_ip
fi
### get ip addresse from wlan
ifconfig wlan0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' > cur_wlan_ip

### append any difference to the file
diff cur_wlan_ip prev_wlan_ip >> any_difference.txt

any_difference2=$?

if [ $any_difference2 == 0 ]; then
	xip=0
	internal="Local ip has not changed"
else
	internal="Local ip has changed"
	## if desireable change previous ip with current
	#cat cur_wlan_ip > prev_wlan_ip
fi

if [ $xip == 0 ] && [ $ip == 0 ]; then
	echo "No changes been done. Exiting with exit code 0"
	#remove temp-files
	rm current_ip cur_wlan_ip any_difference.txt
	exit 0
else
	## append all messages to mail-message
	cat ipchange_mail_message >> send_message
	echo $xternal >> send_message
	echo $internal >> send_message

	### send mail to recipient
	mutt -s "ip changed" This email address is being protected from spambots. You need JavaScript enabled to view it. -a any_difference.txt < ipchange_mail_message
	
	### remove all temporary files
	rm send_message current_ip cur_wlan_ip any_difference.txt
	exit 1
fi

Hvis du ikke bruker wifi men fast linje så vil jo "interface" vare nos som eth0 og ikke wlan0. Dette kan du fort finne ut av ved å skrive inn "ifconfig" ved kommando-linjen. Hvis du har rettigheter til å bruke den eller liknende så vil du få beskjed om hvor "ifconfig" ligger. Jeg gjør det iallefall. Og da kan jeg kjøre programmet med absolute-path...sånn som her: 

edorf@keem:~> ifconfig
Absolute path to 'ifconfig' is '/sbin/ifconfig', so running it may require superuser privileges (eg. root).
edorf@keem:~> /sbin/ifconfig
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2171 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2171 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:307443 (300.2 Kb)  TX bytes:307443 (300.2 Kb)

wlan0     Link encap:Ethernet  HWaddr 00:22:B0:ED:BA:66  
          inet addr:192.168.1.116  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4412037 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2691092 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5789515975 (5521.3 Mb)  TX bytes:253832317 (242.0 Mb)

Enkelt og greit. Det er en annen måte og. Det er å skrive kommandoen "Ip addr". Men da får du opp alle interfaces som finnes på maskina. Også de som ikke er konfigurert. Som jeg har:

edorf@keem:~> ip addr                                                                                                                                                                                                                                                          
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN                                                                                                                                                                                                            
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00                                                                                                                                                                                                                      
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo                                                                                                                                                                                                                         
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000                                                                                                                                                                                                        
    link/ether 00:26:18:97:79:46 brd ff:ff:ff:ff:ff:ff                                                                                                                                                                                                                         
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000                                                                                                                                                                                               
    link/ether 00:22:b0:ed:ba:66 brd ff:ff:ff:ff:ff:ff                                                                                                                                                                                                                         
    inet 192.168.1.116/24 brd 192.168.1.255 scope global wlan0               

Men nok om det....

Hvorfor jeg bruker "diff" vet jeg ikke. Bare tenkte at det kan være greit på en måte. Har sjeldent gjort det og tenkte at å sammenlikne filer er like greit som noe annet. En annen ting man kan gjøre er å bruke "curl" til å forandre både ip-adresse i dns-serveren og i routeren. Jeg prøvde meg en gang å lage et skript til å forandre ip'en i dns-serveren men ... jeg synes det kan være litt risikabelt. Forandringer kan skje og da sitter man med skjegget i postkassa og tror at ting er iorden. En annen ting er at det kan være risikabelt i og med at man sender brukernavn og passord over nettet. Da må man i aller tilfelle sørge for at ting er kryptert for man gjør noe slikt. Det samme gjelder forsåvidt routeren. Men det er vel veldig sjeldent at grensesnittet skal forandre seg så mye at ting skal gå galt. Men jeg velger å forandre ting manuellt. Når man får beskjed om at ip'en har forandret så er iallefall halve jobben gjort.

Hvis du ikke vil bruke mail-programmet "mutt" så bruk "mail". Eneste grunnen til at jeg brukte mutt her var fordi jeg trodde jeg ikke kunne sette på attachments med programmet "mail". Dette er da helt usant. For det kan man. Jeg har prøvd. Jeg har med andre ord gitt ut feil informasjon. Men til min trøst så er det noen andre som hadde gitt meg feil informasjon. Etter å ha sjekket manualen så ser jeg at man kan bruke "-a" parameteren som med "mutt".