Script - SendIPmail.sh

Fragen oder Probleme?
feissmaik
Entwickler Team
Beiträge: 2576
Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:

Script - SendIPmail.sh

Beitrag 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...
Dateianhänge
sendipmail.sh.rar
(1.41 KiB) 182-mal heruntergeladen
Du musst nicht kämpfen um zu siegen
Osaft
IPC Neuling
Beiträge: 7
Registriert: Di 21. Jun 2011, 21:36
Kontaktdaten:

Re: Script - SendIPmail.sh

Beitrag von Osaft »

Huhu,

funktioniert das noch ? Bekomme immer eine leere Mail wo nur AG steht ? was mache ich falsch?

Grüße
feissmaik
Entwickler Team
Beiträge: 2576
Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:

Re: Script - SendIPmail.sh

Beitrag 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?
Du musst nicht kämpfen um zu siegen
Osaft
IPC Neuling
Beiträge: 7
Registriert: Di 21. Jun 2011, 21:36
Kontaktdaten:

Re: Script - SendIPmail.sh

Beitrag 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
feissmaik
Entwickler Team
Beiträge: 2576
Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:

Re: Script - SendIPmail.sh

Beitrag 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
Du musst nicht kämpfen um zu siegen
feissmaik
Entwickler Team
Beiträge: 2576
Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:

Re: Script - SendIPmail.sh

Beitrag 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
Du musst nicht kämpfen um zu siegen
Osaft
IPC Neuling
Beiträge: 7
Registriert: Di 21. Jun 2011, 21:36
Kontaktdaten:

Re: Script - SendIPmail.sh

Beitrag 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
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast