IP Adresse per Email mitteilen

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo zusammen!
    Ich bin mit dem PI in verschiedenen Netzwerken unter wegs. Nahezu alle davon haben eine konstande DHCP Versorgung. Wenn ich den PI dort anschmeisse, ist es immer ein Heidenaufwand die IP Adresse des PI heraus zu finden. In 99% der Fälle bin ich dort ohne Monitor vor Ort. Auf den Router schauen und die dhcp Adresse anzeigen lassen geht eben so nicht, da ich auf den / die Router meistens (ausser bei mir zu Hause) keinen Zugriff habe.

    Eine sehr gute Lösung wäre, wenn der PI mit bei einer vorhandenen Verbindung eine Email sendet mit dem Inhalt: Aktuell IP Adresse im netzwerk, die er soeben bezogen hat - if eth0 oder / und wlan0

    Gibt es schonein Script für sowas oder hat jemand eine Idee ?

    Danke schon mal für alle Antworten und Hinweise!

    beste Grüße,
    Daniel

  • ip a | mail -s "Hey bro, neue IP am start" your@mailaddress.here

    Dann musst Du aber noch ein Mailrelay angeben damit der PI auch mailen darf, sonst werden die Mails abgelehnt.
    Ich nehme dafür immer msmtp, da man dann keinen kompletten Mailserver installiert und laufen lassen muss.

    apt-get install msmtp

    In Deinem Home noch die Config hinterlegen .msmtprc

    defaults
    # tls on
    # tls_starttls on
    # tls_cert_file ~/.mutt/ssl.crt
    # tls_key_file ~/.mutt/ssl.key
    tls_certcheck off
    # /etc/ssl/certs/ca-certificates.crt
    logfile ~/.msmtp.log

    # A freemail service
    account AccountName1
    host mail.seinprovider.de
    from deine@mailadresse.de
    auth on
    user DeinUsername
    password DeinPassword

    # Set a default account
    account default : AccountName1

    Oben das ip a gibt die alles Interfaces und deren IPs aus. Wenn Du willst kannst Du da noch die IP rausfiltern damit in der Mail nur noch die stehen.

    ip a s | grep "inet " | grep -v "host lo"| awk '{print $7" "$2}'
    eth0 172.28.160.71/22
    tap0 172.18.1.29/24
    wlan0 172.17.1.29/28

    ip a s | grep "inet " | grep -v "host lo"| awk '{print $7" "$2}' | mail -s "Hey bro, neue IP am start" your@mailaddress.here

  • Zum ermitteln der aktuellen LAN IP würde auch folgendes gehen (unabhängig vom Netz):

    Code
    ifconfig | grep -i 'inet adresse:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'


    Weitere Details zum verschicken von EMails sind auch in > diesem Thread < zu finden

  • Also vielen Dank erst mal für die zahlreichen Antworten. Ich habe das ganze final nun so realisiert (die Lösung die im Bezug auf ihre Einfachheit und auch im Bezug auf die mangelnden Sicherheitsaspekte für mich völlig ausreichte...):

    Installation des SSMT Paketes:

    Code
    sudo apt-get install ssmtp mailutils mpack

    Danach die SSMTP Conf editieren:

    Code
    sudo nano /etc/ssmtp/ssmtp.conf

    und folgenden Inhalt an das Ende der Conf angefügt (ohne die spitzen Klammern):

    Code
    AuthUser=<ich@meineemailadresse.local>
    AuthPass=<meingehaimespasswort>
    FromLineOverride=YES
    mailhub=<smtp.meinprovider.de>
    UseSTARTTLS=YES
    rewriteDomain=<domainnamemeinerdomain.local>

    Um dann bei einer erfolgreichen Verbindung ins Netz und nach dem Zuweisen einer Adresse diese an mich per Email weiter zu senden (damit ich sie direkt auf meinem Smartphone sehen kann...), habe ich ein Script ( wenn man es überhaupt so nennen darf ) in die if-up Liste geschrieben:

    Code
    sudo nano /etc/network/if-up.d/tellip

    ... mit folgendem Inhalt:

    Bash
    #!/bin/sh -e
    ip a s | grep "inet " | grep -v "host lo"| awk '{print $7" "$2}' | mail -s "Raspberry1 DevWebSrv mit folgenden Ips connected:" empfaenger@email.adresse

    Und dann das Script noch ausführbar machen mit:

    Code
    sudo chmod +x /etc/network/if-up.d/tellip


    ... funktionierte wunderbar!
    Mit dem MPACK Paket können auch noch Ahänge an die Emails mit angehängt werden wie beispielsweise Log Dateien...!
    Beispielsyntax dazu:

    Code
    mpack -s "Testmail" /var/log/messages/error.log empfaenger@adresse.local


    Ich danke noch mal allen hier für die sehr sehr schnelle und konstruktive Unterstützung !

    Einmal editiert, zuletzt von derdaniel (29. August 2013 um 11:56)

  • Hi, coole Geschichte
    ich hätte noch ne Frage, wie kann ich beim Start vom Pi sagen, dass mir meine IP automatisch gesendet wird, muss ich die Datei, die mit nano geschrieben wurde in etc/modules legen oder [font="Monaco, Consolas, Courier, monospace"]rc.local[/font]

    [font="Monaco, Consolas, Courier, monospace"]oder gibt es ne cleverere Lösung[/font]

    [font="Monaco, Consolas, Courier, monospace"]MfG:helpnew:[/font]


  • ..., wie kann ich beim Start vom Pi sagen, dass mir meine IP automatisch gesendet wird, muss ich die Datei, die mit nano geschrieben wurde in etc/modules legen oder [font="Monaco, Consolas, Courier, monospace"]rc.local[/font]


    Wenn beim Start aus der "rc.local", schon Internetverbindung vorhanden ist, dann ja. Wenn nicht, dann evtl. mit einem Script
    aus den Verzeichnissen (bzw. aus einem Verzeichnis) des "/etc/network".

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (30. November 2013 um 10:42)

  • Bitte nicht in /etc/modules herum pfuschen! Da hat ein solches Vorhaben nicht mal im entferntesten etwas drin verloren! :(
    in /etc/modules werden ausschlieslich kernel modules eingetragen, wie aber auch ein Blick in die Datei verraten sollte

    Und um solch eine Frage präziser beantworten zu können müsste man wissen was mit " IP " gemeint ist: LAN IP oder Internet IP

    Ein möglicherweise passendes Script findest du > hier <

  • Wie baue ich das jetzt in folgendes ein :

    Bash
    #!/bin/sh -e
    ip a s | grep "inet " | grep -v "host lo"| awk '{print $7" "$2}' | mail -s "Raspberry1 DevWebSrv mit folgenden Ips connected:" empfaenger@email.adresse

    Ich würde nähmlich gerne die externe haben damit wenn sich die IP bei mir zuhause ändert ich trozdem zB. von der Arbeit drauf zugreifen kann ?

  • Ich habe mir ein Python script geschrieben, welches in einem Abstand von 30 Minuten, mir mitteilt ob sich die Internet IP geändert hat. Außerdem fragt er die LAN-IP zusätzlich ab. Fals kein Internet verbindung besteht, dann setzt er seine eth0 ip auf "192.168.0.1". Im Code ist alles beschrieben. ;)

    Man benötigt allerdings noch 3 externe Bibiotheken:

    ipgetter
    netifaces

    ich hab beides mit dem Befehl pip runtergeladen. (netifaces mit der setup.py zu installieren war nicht möglich, deshalb der umweg mit pip (möglicherweise war das nicht alles, hab die Anleitung verloren wie man netifaces installiert :rolleyes: )):
    Pip mit diesem Befehl installieren (Ungetestet):

    Zitat


    sudo apt-get install python-dbg
    python3 get-pip.py

    Zitat


    pip install netifaces
    pip install ipgetter

    Der Code ist relativ einfach und man könnte ihn vermutlich auch verbessern. Allerdings so funktioniert er. Übrigends ist der in Python3.2 geschrieben, also mit python3 ausführen.


    Bei Fehlern bitte eine PN an mich. Der Code wurde von mir getestet und funktioniert.

    mfg
    Trayser

    Einmal editiert, zuletzt von Trayser (10. September 2014 um 20:52)

  • Hallo,
    ich greife nochmal das Thema auf. Ich habe die Lösung von derDaniel Beitrag #7 nachgebaut, und funktioniert gut. Per mail wird dann die interne IP (LAN IP) gesendet.

    Gibt es auf diesem Weg eine Lösung für die externe IP, Router-IP??

    Würde mich über eine Lösung freuen.

    Gruß Reinald


  • ich greife nochmal das Thema auf. Ich habe die Lösung von derDaniel Beitrag #7 nachgebaut, und funktioniert gut. Per mail wird dann die interne IP (LAN IP) gesendet.

    Gibt es auf diesem Weg eine Lösung für die externe IP, Router-IP??

    Siehe Link in Beitrag#11

  • Es gibt wie immer Etliche Möglichkeiten - was ist an der in Beitrag#7 so besonderes das du unbedingt diese verwenden willst?

    Butter dir zB auch die letzte Antwort von Oerks dazu, wenn du

    Code
    wget -q -O- http://checkip.dyndns.org

    verwendest, Ausgabe:

    HTML
    <html><head><title>Current IP Check</title></head><body>Current IP Address: 8.8.8.8</body></html>

    Was bedeutet das auf den in Beitrag#7 verwendeten Befehl und was macht der überhaupt?

    Bash
    #!/bin/sh -e
    ip a s | grep "inet " | grep -v "host lo"| awk '{print $7" "$2}' | mail -s "Raspberry1 DevWebSrv mit folgenden Ips connected:" empfaenger@email.adresse

    Der hintere Teil interessiert uns nicht, der verschickt das ja nur... Der vordere Teil ist jener der die IP ermittelt:

    Code
    ip a s | grep "inet " | grep -v "host lo"| awk '{print $7" "$2}'

    Ausgabe:

    Code
    eth0 192.168.0.11/24

    Also was machen wir jetzt?
    Mit dem HTML Code ansich könn wir ja noch nicht so viel anfangen, wir wollen ja nur die IP. Da bietet sich grep für an, da kann man schön mit regulären Ausdrücken rum hantieren... Wir erweitern also den wget Befehl so das wir nur die Zahlen auslesen, und zwar damit:

    Code
    grep -Pom 1 '[0-9.]{7,15}'


    Mit dem wget Befehl würde das also so lauten:

    Code
    wget -q -O- http://checkip.dyndns.org | grep -Po '[0-9.]{7,15}'

    ..was der grep Befehl ist quasi nach Zahlen von 0 bis 9 und einem . ausschau zu halten, der Treffer sollte inkl. Punkt mindestens 7 und maximal 15 Stellen haben. -P ist "perl-regexp", -o ist "only match".
    Alles über man grep nachlesbar.

  • -----------
    Ich werf nochmal ipecho.net http://ipecho.net in den Raum

    Code
    curl -s http://ipecho.net/plain


    EDIT: http://ipecho.net/plain funktioniert nicht mehr
    -----------

    Ein weiterer Dienst den ich dafür letztens entdeckt habe ist ipify.org http://www.ipify.org/ (IPv6 support)

    Code
    curl -s http://api.ipify.org

    Bei beiden bekommt man die IP Addresse als PLAIN Text zurück, somit ist kein "Shell-Foo" mehr nötig um an die IP Addresse zu kommen. :)

    Bei ipfy.org gibt es kein Limit was die Anzahl der Requests betrifft bei ipecho.net sind diese beschränkt.
    Am besten ihr besucht einfach mal beide Seiten.


    EDIT: Weitere alternativen:
    -----------
    icanhazip.com (IPv6 support)
    IPv4

    Code
    curl -s http:/icanhazip.com


    oder

    Code
    curl -s ipv4.icanhazip.com


    IPv6

    Code
    curl -s ipv6.icanhazip.com


    -----------
    ifconfig.co (IPv6 support)
    IPv4

    Code
    curl -s -4 http://ifconfig.co


    IPv6

    Code
    curl -s -6 http://ifconfig.co


    -----------


    Grüße,
    Joh

    DON'T PANIC!

    Einmal editiert, zuletzt von joh.raspi (15. Februar 2015 um 18:20)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!