IP Abgleich - Shell/Bash Script

Seehawk

Lieutenant
Registriert
Apr. 2012
Beiträge
954
Hallo ich möchte gerne ein IP Abgleich Skript für mein Raspberry erstellen.

Es sollte so laufen das wenn die IP aus dem Curl identisch ist mit der IP aus der Textdatei das Echo nicht ausgeführt wird.

Der Grund für das ganze ist das Ich einen Dyndns Updater für das Raspberry haben möchte, aber als Skript und dabei kein Tool oder andere Webseite nutzen will da die zu oft updaten ect.

Das Skript funktioniert soweit ganz gut, jetzt fehlt mir der Abgleich Part:

Bash:
#!/bin/sh

IP=`curl -s ipecho.net/plain`

URL="https://www.blah.de/update?&ip=$IP"

echo url="$URL" | curl -k -o ~/ip_alt.text -K -

vielleicht mag sich mir hierbei jemand erbarmen :)
Vielen Dank.


Update:
Das fand ich zufällig aber das Skript läuft nicht:

Bash:
#!/bin/bash

IPDATEI="/tmp/ipold.txt"

UPDATE=false
IPNOW=$(/usr/bin/curl https://klenzel.net/remoteip.php)

if [ ! -f $IPDATEI ] ; then
    UPDATE=true
else
    IPOLD=$(cat $IPDATEI)
    if [ "$IPOLD" != "$IPNOW" ] ; then
        UPDATE=true;
    fi
fi


if $UPDATE ; then
    echo $IPNOW > $IPDATEI

    #Hier wird das Update durchgeführt
    
fi
 
Das sollte es eigentlich tun
Bash:
#!/bin/bash

OLD_IP=$(cat old_ip.txt)
IP=$(curl -s ipecho.net/plain)

URL="https://www.blah.de/update?&ip=$IP"

if [ ! $OLD_IP = $IP ]
then
        curl $URL
fi
 
  • Gefällt mir
Reaktionen: Seehawk
In ip.txt steht deine aktuelle IP. Das grep filtert nur die IP raus und ignoriert den Rest in der Datei.
dig (über apt install dnsutils installieren) ermittelt die aktuelle IP deines DDNS Namens mittels Abfrage des DNS - also ohne externe Seite.
Bei # Mache irgendwas musst du halt deinen Updatebefehl reinpacken.

Code:
#!/bin/bash
cip=$(cat ip.txt | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
echo "Aktuelle IP:  $cip"
digIP=$(dig +short dein.ddns.name)
   echo "Ermittelte IP: $digIP"
     if [ "$digIP" != "$cip" ]
       then
          wall "IP gewechselt."
          # Mache irgendwas
       else
    echo "Keine Aenderung"
    # Mache nix
   fi
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Seehawk
Ich habe keine Domain, derzeit nutze ich DNS O Matic aber das funktioniert nicht bei allen DNS

btw. wie krieg ich den fehler weg?

Code:
cat: old_ip.txt: No such file or directory

oder auch beim 2ten

cat: ip.txt: No such file or directory

hab es auch schon als root probiert
 
liegt in dem ordner schon eine ip.txt?
sonst findet er da auch keine.

mit touch ip.txt kannst du eine leer anlegen
 
  • Gefällt mir
Reaktionen: Seehawk
Code:
#!/bin/bash


OLD_IP=$(cat old_ip.txt)
IP=$(curl -s ipecho.net/plain)


URL="https://www.blah.de/update?&ip=$IP"


if [ ! $OLD_IP = $IP ]
then
        curl $URL
fi

Das klappt jetzt, auf anhieb :) Super Danke!
 
Nur so als Hinweis: Du bist jetzt von ipecho.net "abhängig". Sollte zwar kein allzu großer Nachteil sein, aber mit dem "dig" aus meinem Script kannst du diesen Nachteil eliminieren.
 
  • Gefällt mir
Reaktionen: Seehawk
@Seehawk
Da fehlt jetzt halt noch nach dem update die neue aktuelle ip in die txt datei zu schreiben.
Nach dem curl noch ein echo "$IP" > old_ip.txt und dann hast dus.
 
  • Gefällt mir
Reaktionen: Seehawk
Ebrithil schrieb:
echo "$IP" > old_ip.txt
Hab ich dann selbst noch hinbekommen, Danke :p
DonConto schrieb:
Nur so als Hinweis: Du bist jetzt von ipecho.net "abhängig". Sollte zwar kein allzu großer Nachteil sein, aber mit dem "dig" aus meinem Script kannst du diesen Nachteil eliminieren.
Ich bekomm das Dig nicht zum laufen, bzw. holt er mir keine IP, hab das dnsutil paket aber drin. Da es schon spät war wollt ich dann aber nicht mehr lange testen und hab dann das Skript von Ebrithil genommen und war soweit zufrieden :p

Ich werde aber weiter versuchen das zu machen da du recht hast mit der IP.

Danke euch beiden, Top hilfe!
 
Seehawk schrieb:
Ich bekomm das Dig nicht zum laufen, bzw. holt er mir keine IP, hab das dnsutil paket aber drin.
Dann poste mal bitte den Auszug mit dem Befehl und dem Ergebnis. Ich kann mir gerade nicht erklären was an so etwas trivialem nicht gehen sollte?!
 
  • Gefällt mir
Reaktionen: Seehawk
Aktuelle IP: 62.xx.xx.xx
Ermittelte IP: 212.xx.xx.xx

Broadcast message from f234@raspberrypi (pts/0) (Wed Apr 14 22:09:56 2021):

IP gewechselt.
Jetzt klappt auch das, ich hatte bei "dein.ddns.name" einen Schreibfehler :)
 
Zurück
Oben