E-Mail bei geänderter IP

Ja, ist von mir und Bestandteil von DS-Mod bzw. Freetz. Mahagoni, Du hast Dir viel Arbeit gemacht, aber get_ip verwendet in einer von drei Methoden auch die Ausgabe von showdslstat, das ist als nichts Neues. Wir hängen uns an multid an beim Versand der E-Mail, weil multid selbst optional ein Skript aufruft beim Reconnect, das ist bequem und nur dann ungeeignet, wenn man die Box als IP-Client hinter einem anderen Router einsetzt, sie also gar nicht selbst die Verbindung zum Provider herstellt. Wie man damit umgehen kann, wird z.B. dort diskutiert, wo Novize ein Skript gepostet hat, das ich für ihn mal erstellt hatte.
 
E-Mail bei jedem DSL-Reconnect senden - Update 2011

Aus gegebenem Anlaß mal wieder ein Update, diesmal am Ende des Threads, um das in die Jahre gekommene Original zu erhalten: In den letzten Jahren hat sich am Handling von Onlinechanged geändert, daß in aktuellen Firmwares nicht mehr nach einem einzelnen Skript Namens /var/tmp/onlinechanged gesucht wird, sondern nach einem gleichnamigen Verzeichnis, welches wiederum beliebig viele Shellskripten zur Abarbeitung enthalten kann. Auch das Neustarten des Multid ist nicht mehr notwendig. Um die externe IP zu ermitteln, braucht man auch nicht mehr auf einen Web-Dienst zurückzugreifen, man kann das der Box direkt auf verschiedenen Wegen entlocken. Das hier schreibt man also in /var/flash/debug.cfg (wie man es dort hinein bekommt, ist hier nicht Thema):

Code:
OC_DIR=/var/tmp/onlinechanged
[ -f $OC_DIR ] && rm -f $OC_DIR
mkdir -p $OC_DIR

cat > $OC_DIR/new_ip_email << 'EOF'
#!/bin/sh
if [ "$1" = "online" ] ; then
  ip=$(/sbin/showdsldstat | sed -nr 's/0: ip ([0-9.]+).*/\1/p')
  uptime > /var/tmp/uptime.txt
  echo >> /var/tmp/uptime.txt
  free >> /var/tmp/uptime.txt
  mailer \
    -s "New IP: $ip" \
    -f "FritzBox <[email protected]>" \
    -t "[email protected], [email protected]" \
    -m "mein.mail.server" \
    -a "mail_benutzer" \
    -w "mail_passwort" \
    -i /var/tmp/uptime.txt
  rm -f /var/tmp/uptime.txt
fi
EOF
chmod +x $OC_DIR/new_ip_email

Ich zeige hier außerdem, wie man einen Dateianhang per Mailer versendet und packe gleich mal zwei Info-Happen hinein, nämlich die Uptime der Box (also die Zeit seit dem letzten Reboot) sowie die Free-Speicheranzeige. Als kleines Detail sieht man noch, daß die Mail auch an mehrere Empfänger gehen kann.
 
Hallo,

habe den neuen Code in meine rc.custom eingetragen, leider bekomme ich die gewünschte Benachrichtigung nicht.
Das script "new_ip_email" wird zwar in /var/tmp/onlinechanged erstellt allerdings bei einem IP Wechsel scheinbar nicht aufgerufen.
Die Rechte von "new_ip_email" stehen auf 755. Ich habe zu Testzwecken den letzten Befehl "rm -f /var/tmp/uptime.txt" ausdokumentiert und musste
feststellen, dass trotzdem die Datei /var/tmp/uptime.txt nach einem IP-Wechsel nicht existiert. Ich gehe deshalb davon aus, dass das script erst gar nicht ausgeführt wird.

Im Ereignisprtokol der FB steht folgendes:

26.11.11 16:40:37 Running onlinechanged: online
26.11.11 16:40:36 Internetverbindung wurde erfolgreich hergestellt. (IP Adressen wurden gelöscht)
26.11.11 16:40:36 Running onlinechanged: offline
26.11.11 16:40:35 Internetverbindung wurde getrennt.

Ich bin ja nicht der Programmierer aber kann das sein dass die erste If Abfrage < if [ "$1" = "online" ] ; then > nicht stimmt oder Teile des
codes fehlen ? Wo wird denn $1 definiert ?

Viele Grüße,
Zwierbel
 
Welche Box hast Du? Welche Firmware? Mit oder ohne Freetz? Falls Freetz, welche Version?
 
Ja, habe die Freetz Version "Firmware-Version 29.04.87freetz-devel-7201M" auf einer FB 7170
 
Vielen Dank !!!, das scheint wohl mein Problem zu sein.

Habe meine onlinechanged.sh verglichen und tatsächlich diesen Bug gesehen.
Werde mal mit neuerer FreetzsVersion testen.
 
Why not:


Code:
ip="`/usr/bin/get_ip -d`"
 
Mein Problem liegt nicht darin die IP der Box herauszufinden, das funktioniert mit dem code von Allex enwandfrei. Mein Problim ist, dass scripte die im onlinechanged Verzeichnis stehen beim Online Status Wechsel nicht ausgeführt werden.
 
Auch vor dem von Alexander genannten Patch sollten Skripte im Verzeichnis tmp/flash/onlinechanged/ aufgerufen werden, allerdings nicht im Verzeichnis tmp/onlinechanged/.
 
Hallo!

Auf meiner FB7390 läuft freetz-1.2-stable rev. 82xx (also ziemlich aktuell).

Ich habe das Script von kriegaex in rc.custom eingetragen.
Die Datei /tmp/onlinechanged/new_ip_email wird erstellt.
Wenn ich allerdings das Script debugge, dann passiert da nix:
Code:
root@fritz:/var/mod/root# bash -x /tmp/onlinechanged/new_ip_email 
+ '[' '' = online ']'

Ich interpretiere das so, dass die Bedingung nicht erfüllt ist und somit der "wesentliche" Teil des Scripts, u.a. zum Versand einer Email, nicht durchlaufen wird.

Was ist die Ursache?
Warum ist die Variable "$1" leer?

Ich denke nicht dass es am "fehlerhaften" onlinechanged.sh liegt (http://freetz.org/changeset/7419), denn dort steht drin:
Code:
#execute onlinechanged scripts                                             
eventadd 1 "Running onlinechanged: $OC_STATE"                 
log "approved"                                      
for i in /etc/onlinechanged/* /tmp/onlinechanged/* /tmp/flash/onlinechanged/*; do
        [ ! -s "$i" ] && continue
        log "executing $i"
        sh "$i" "$OC_STATE" 2>&1 | while read line; do [ -n "$line" ] && log " * $line";
done

THX
 
Zuletzt bearbeitet:
Mit "onlinechanged online" testest Du das gesamte Onlinechanged-Verhalten. Ansonsten siehe meine Anmerkungen zu Alternativen im anderen Thread.
 
Danke!

Das Debuggen des Scripts funktioniert jetzt.
Die Ursache dafür, dass ich keine Email erhalte liegt also def. nicht an der Script-Logik, sondern vermeintlich am "mailer"-Befehl.

Kann ich irgendwie tracen, warum keine Email versendet wird?
Von OpenDD erhalte ich eine Email, die hierbei verwendeten Email-Parameter sind identisch.

Idee?

Update:
Trifft es zu, dass der Parameter -t keine 2 unterschiedlichen Email-Adressen interpretieren kann?
Also
mailer -t <[email protected]>,<[email protected]>
geht nicht?

Update2:
Versand an 2 unterschiedliche Email-Adressen mit mailer funktioniert.
Ich habe das Script /tmp/onlinechanged/new_ip_email jetzt im Terminal modifiziert und ausgeführt, und siehe da: die Email wird verschickt.
Jetzt hoffe ich mal, dass das Script wie es in rc.custom steht, auch funktioniert.

Update3:
Ursache identifiziert:
der Parameter -f funktioniert (zumindest) mit dem Email-Anbieter GMX nur mit dem Wert <[email protected]> und nicht FritzBox <[email protected]>.

THX
 
Zuletzt bearbeitet:
Hallo Zusammen!

Ich bin neu hier und mochte diesen Thread aufgrund meines Problems nochmals ins Leben rufen.

Ich besitze eine FB 7170 mit Image 29.04.80freetz-devel-6447M. Das Image funktioniert gut nur das Updaten der IP zu meinem DynDNS-Anbieter haut nicht immer hin.
Daraufhin habe ich diese http://www.ip-phone-forum.de/showthread.php?t=160134&p=1039511#post1039511 Anleitung genutzt und 1:1 so umgesetzt.
Leider bekam ich keine Mail nach dem IP-Wechsel geschickt.

Gibt es evtl. weitere Hilfen zu diesem Thema? Die hier angesprochenen Vorgehensweisen kann ich aufgrund meiner "Unwissenheit" in Bezug auf das Programmieren, erstellen von Scripten usw. nicht so ohne weiteres umsetzen.
Oder gibt eine funktionierende "How to do..." Anleitung die man leichtverständlich umsetzen kann?

Bin für Hilfe dankbar!


Gruss

Brandy189
 
Gibt es evtl. weitere Hilfen zu diesem Thema?
Da Du Freetz auf deiner Box hast, könntest Du als Alternative, email (z. B. auf dem USB-Stick) benutzen.
D. h., auch ohne neues Freetz-Image (... für den Fall, dass Du dein Freetz-Image aus dem Internet hast). Wenn Du die libraries nicht auf der Box hast, könntest Du email statisch gelinkt kompilieren oder statisch gelinkt kompilieren lassen. ;-)
Code:
root@fritz:/var/mod/root# ldd /var/media/ftp/uStor01/email
        libssl.so.0.9.8 => /usr/lib/freetz/libssl.so.0.9.8 (0x2aabe000)
        libm.so.0 => /lib/libm.so.0 (0x2ab0a000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2ab32000)
        libc.so.0 => /lib/libc.so.0 (0x2ab50000)
        libcrypto.so.0.9.8 => /usr/lib/freetz/libcrypto.so.0.9.8 (0x2abcb000)
        libdl.so.0 => /lib/libdl.so.0 (0x2acdc000)
        ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)
Das Versenden der email wird durch das onlinechanged-Ereignis ausgelöst. D. h. es sind auf deiner Box Einträge an den richtigen Stellen (z. B. mit dem Editor nano oder mit nvi), in das Script "/var/tmp/flash/onlinechanged-cgi" erforderlich. Siehe " cat /var/tmp/flash/onlinechanged-cgi". Beispiel für solche Einträge:
Code:
nslookup [color=red][domain.dyndns.org][/color] | sed -e "/Address 1: /!d" | sed -e "s/Address 1: \([0-9.]*\).*/\1/" | sed -e "\$!d" > /tmp/flash/mod/myip;
sleep 3;
/var/media/ftp/uStor01/email -s "`date`" [color=red][[email protected]][/color] < /tmp/flash/mod/myip;
Beispiel für die "email.conf"-Datei:
Code:
root@fritz:/var/mod/root# cat /var/tmp/flash/mod/email.conf
SMTP_SERVER = 'smtp.????.???'
SMTP_PORT = '25'
MY_NAME  = 'eMail von der FritzBox'
MY_EMAIL = '###@####.???'
SMTP_AUTH = 'LOGIN'
SMTP_AUTH_USER = 'xxxxxxxx'
SMTP_AUTH_PASS =  'yyyyyyyy'
USE_TLS = 'false'
Code:
root@fritz:/var/mod/root# strings /var/media/ftp/uStor01/email | grep /email.conf
/tmp/flash/mod/email.conf
Eintrag im syslog deiner Box, einsehen mit:
Code:
logread | grep email
 
Hallo @sf3978,

schönen Dank für deine Hilfe!

Leider verstehe ich nur "Bahnhof". Dass liegt jedoch an mir, da ich mich in der Materie nicht so auskenne.

Könntest du mir das anhhand einer "Anleitung" quasi Step by Step beschreiben, damit auch ein Unwissender dieses umsetzen kann?

Ich wäre sehr dankbar dafür!
 
Könntest du mir das anhhand einer "Anleitung" quasi Step by Step beschreiben, ...
Vor der Anleitung musst Du m. E. 3 Hürden überwinden:
1. Du solltest auf deiner Box einen Editor haben, den Du bedienen/benutzen kannst. Wie ist auf deiner Box (Konsole, telnet) die Ausgabe für:
Code:
which nano
?
Wenn kein nano, kannst Du nvi zum editieren von Textdateien auf der Box, benutzen?
2. Du solltest einen USB-Stick mit dem Dateisystem ext2 oder ext3 haben, ... wenn die Module auf der Box auch vorhanden sind. Wie ist auf deiner Box die Ausgabe für:
Code:
lsmod | grep ext
?
1. Du musst jemanden finden der das email-binary für dich (evtl.) statisch gelinkt kompiliert und Du musst in der Lage sein, dieses binary im binär-Modus auf deine Box (USB-Stick) zu uploaden.
 
Oh je,

leider schaffe ich keine der von dir genannten "Hürden".

Mein Stick ist "fat"-formatiert. Wenn ich "which nano" per telnet eingeben, bleibt alles so wie vorher. Also keine Änderung der Anzeige.

Tja und nun?
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.