Seite 1 von 1
Script - SendIPmail.sh
Verfasst: So 8. Mai 2011, 10:25
von feissmaik
IPC ERWEITERUNG
Prüft anhand myip.ch oder checkip.dyndns.org die aktuelle Internet IP und verschickt eine Email sobald sich diese ändert
Unabhängig davon ob DynDNS eingerichtet ist oder nicht
Kann auch dazu dienen wenn man zb unterwegs is, die DynDNS ggf auch manuell aktuallisiern zu können fals der Router mal wieder spinnt...
wurde "damals" im DEB als IPC zusatz requestet...
Re: Script - SendIPmail.sh
Verfasst: So 10. Jul 2011, 12:42
von Osaft
Huhu,
funktioniert das noch ? Bekomme immer eine leere Mail wo nur AG steht ? was mache ich falsch?
Grüße
Re: Script - SendIPmail.sh
Verfasst: So 10. Jul 2011, 13:06
von feissmaik
Bitte mehr Infos...
Poste mal bitte die komplette Email die du erhälst und verrat mir bitte auch wie/wo du es startest und als welcher Benutzer und in Verbindung mit Debian & IPC oder standalone.... Und wenn standalone, haste auch die SMTP Einstellungen richtig vorgenommen?
Was kommt wenn du das Script mit "now" ausführst?
Re: Script - SendIPmail.sh
Verfasst: So 10. Jul 2011, 13:49
von Osaft
feissmaik hat geschrieben:Bitte mehr Infos...
Poste mal bitte die komplette Email die du erhälst und verrat mir bitte auch wie/wo du es startest und als welcher Benutzer und in Verbindung mit Debian & IPC oder standalone.... Und wenn standalone, haste auch die SMTP Einstellungen richtig vorgenommen?
Was kommt wenn du das Script mit "now" ausführst?
root@debian /bin > sendipmail.sh now
LASTIP: AG - CURRENTIP:
AG
Verschicke Email...
done
root@debian /bin >
das ist der Inhalt und so kommt die Mail an. Führe es standalone aus, habe es in rc.local reingepackt.
Hier die Mail:
debian.fritz.box hat sich neu eingewaehlt und eine neue IP erhalten
Last IP: AG
Current IP:
AG
das verschicken funktioniert ja, aber die Mail ist halt ohne Ip-adressen.
Danke schonmal . Grüße
Re: Script - SendIPmail.sh
Verfasst: So 10. Jul 2011, 14:50
von feissmaik
debian.fritz.box? Ist das ne fritzbox?
soweit ich das bisher beurteilen kann scheint er leider neuerdings Probleme zu haben die IP von myip.ch auszulesen...
wenn ichs hier lokal ansurfe kommt:
Current IP Address: 1.2.3.4
Powered by Micro Solutions AG
aber wenn ich es über wget abrufe ( wget -q -O -
http://www.myip.ch ) dann steht da nurnoch
</html> by <a href="http://www.microsolutions.ch">Micro Solutions AG</a>
wiederhol ich das aber, funktioniert es auf einmal.... also scheint myip.ch Probleme zu machen
Bearbeite also mal das Script und änder CHECKURL= in CHECKURL2=
und CHECKURL2= in CHECKURL= ... also sodass er die IP über dyndns ermittelt
Re: Script - SendIPmail.sh
Verfasst: So 10. Jul 2011, 15:24
von feissmaik
evtl. gehts auch hiermit, hab ich aber noch nicht testen können:
Code: Alles auswählen
#!/bin/bash
#
# Prueft anhand myip.ch oder checkip.dyndns.org die Internet IP und
# verschickt ne Email sobald sich diese aendert...
#
# Benoetigt: apt-get install sendEmail
#
# v0.4
### CONFIG - START
# Maileinstellung -> einkommentiern ODER ueber " ipc cfg " einstellen
#SMTPFROM="`hostname`@fqdn.net"
#SMTPTO='admin@fqdn.net'
#SMTPSERVER='mail.fqdn.net'
#SMTPUSER=''
#SMTPPASS=''
# Zeit in Sekunden zwischen den Abfragen
EVERY="300"
### CONFIG - END
# -------------------------------------------------------------- #
# >>> >> > DO NOT MESS WiTH ANYTHiNG BELOW THiS LiNE! < << <<< #
# -------------------------------------------------------------- #
[ -z "$SMTPSERVER" ] && source /var/emu/conf/ipc.cfg
CHECKIPURL["myip"]="http://www.myip.ch/"
CHECKIPURL["dyndns"]="http://checkip.dyndns.org/"
srcn=$(basename $0)
IPFILE=/tmp/.$srcn
CHKURLc=0
if [ ! -f /usr/bin/sendEmail ] ; then
echo -e "\033[1;31mMailbenachrichtigung wurde aktiviert, jedoch ist sendEmail nicht installiert!\033[0m"
echo ""
exit 1
fi
get_CURRENTIP() {
OK=0
for i in ${!CHECKIPURL[*]}; do
[ "$OK" = "1" ] && break
wget -q --timeout=10 -O ${IPFILE}_currentip $CHECKIPURL[$i]
if [ "$i" == "myip" ]; then
CURRENTIP=$(cat ${IPFILE}_currentip | grep "IP Address" | cut -d ' ' -f4)
else
CURRENTIP=$(cat ${IPFILE}_currentip | cut -d ' ' -f 6 | cut -d '<' -f 1)
fi
if [ -z "$CURRENTIP" -o "$CURRENTIP" = " *" -o "$CURRENTIP" = "*1.0 *" ]; then
[ ! -z "$1" ] && echo "Hmm... $CHECKIPURL seems to be down?!"
else
OK=1
fi
done
[ "$OK" = "0" ] && echo "Error: Cant get current ip!" && CURRENTIP=0
#rm -f ${IPFILE}_currentip
}
save_CURRENTIP() {
[ -z "$CURRENTIP" ] && get_CURRENTIP
echo $CURRENTIP > $IPFILE
}
get_LASTIP() {
if [ -f "$IPFILE" ]; then
LASTIP=$(cat $IPFILE)
else
LASTIP=0
fi
}
check_interval() {
echo $(pidof -x $0) >/tmp/.pid.$srcn
save_CURRENTIP
while true; do
get_CURRENTIP
get_LASTIP
if [ "$LASTIP" != "$CURRENTIP" ]; then
send_Email
save_CURRENTIP
fi
sleep $EVERY
done
}
send_Email() {
SUBJECT="IPC CS-Server IP change"
echo "`hostname -f` hat sich neu eingewaehlt und eine neue IP erhalten" >/tmp/mail
echo "" >>/tmp/mail
echo "Last IP: $LASTIP" >>/tmp/mail
echo "Current IP: $CURRENTIP" >>/tmp/mail
echo "" >>/tmp/mail
sed -e 's/$/\r/' /tmp/mail >/tmp/mail.txt
sendEmail -f $SMTPFROM -t $SMTPTO -u "$SUBJECT" -o message-file=/tmp/mail.txt -s $SMTPSERVER\
-xu $SMTPUSER -xp $SMTPPASS >/dev/null 2>&1
rm -f /tmp/mail && rm -f /tmp/mail.txt >/dev/null 2>&1
}
kill_script() {
counter="5"
PID=$(cat /tmp/.pid.$srcn)
if [ -z "$PID" ]; then
PID=$(pidof -x $srcn)
fi
if [ ! -z "$PID" ]; then
PID="$PID `pidof -x sleep`"
kill -9 $PID >/dev/null 2>&1
echo "${1}ed: $PID"
else
echo "Nothing to $1!"
fi
sleep 5
if [ ! -z `pidof -x $srcn` ]; then
while [ $counter -gt 0 ]; do
counter=$(expr $counter - 1)
echo "...Retrying to $1 script! (retrys left: $counter , PID: $PID)"
kill -9 $PID >/dev/null 2>&1
PID=$(pidof -x $srcn)
PID="$PID `pidof -x sleep`"
done
fi
echo "Should be killed..."
rm -f /tmp/.pid.$srcn
}
case "$1" in
"")
check_interval
;;
[aA][uU][tT][oO])
$0 &
;;
[sS][tT][oO][pP]|[kK][iI][lL][lL])
kill_script $1
;;
[nN][oO][wW])
get_CURRENTIP
get_LASTIP
echo "LASTIP: $LASTIP - CURRENTIP: $CURRENTIP"
echo "Verschicke Email..."
send_Email
echo "done"
save_CURRENTIP
;;
[hH][eE][lL][pP]|[hH][iI][lL][fF][eE]|?)
echo "Usage: $0 [now|auto|kill|help]"
echo "$0 now -> Sofortiges abfragen und sendern der Email"
echo "$0 auto -> Ueberprueft alle $EVERY Sekunden"
echo "$0 kill -> Script wird beendet"
echo "$0 help -> Zeigt diese Hilfr..."
;;
*)
echo "Usage: $0 [now|auto|kill|help]"
;;
esac
exit 0
Re: Script - SendIPmail.sh
Verfasst: Di 12. Jul 2011, 19:31
von Osaft
feissmaik hat geschrieben:debian.fritz.box? Ist das ne fritzbox?
soweit ich das bisher beurteilen kann scheint er leider neuerdings Probleme zu haben die IP von myip.ch auszulesen...
wenn ichs hier lokal ansurfe kommt:
Current IP Address: 1.2.3.4
Powered by Micro Solutions AG
aber wenn ich es über wget abrufe ( wget -q -O -
http://www.myip.ch ) dann steht da nurnoch
</html> by <a href="http://www.microsolutions.ch">Micro Solutions AG</a>
wiederhol ich das aber, funktioniert es auf einmal.... also scheint myip.ch Probleme zu machen
Bearbeite also mal das Script und änder CHECKURL= in CHECKURL2=
und CHECKURL2= in CHECKURL= ... also sodass er die IP über dyndns ermittelt
Super, damit hats geklappt

Danke