Quick'n'Dirty: SMS-Benachrichtigung bei eingehenden Anrufen

ok, danke, jetzt hats endlich "klick" gemacht :)
Ich dachte, man braucht eine separate Software "vi", ich habe nicht verstanden dass man im Telnet-Fenster in vi schreibt.
Für andere Neulinge: Nach "vi calllog" einfach "i" drücken, um in den Schreibmodus zu kommen. Dann (rechte Maustaste) das Script (vorher in einer txt-Datei vorbereitet) einfügen. Danach "ESC" drücken und (egal wo der Cursor grad ist) ":wq" und dann Enter. Damit ist die Datei gespeichert und kann kopiert werden. Eine Kopie-Bestätigung erhält man nicht. Aber nun funktioniert es. Vielen Dank an die Entwickler und Script-Verbesserer hier! :)
 
invers geht nicht

Hallo zusammen,

echt cooles script....

Leider funktioniert bei mir die Inversesuche nicht.
Folgende Meldung im calllog.log:
I:Sat Jul 19 19:12:01 CEST 2008
I:Internet LED flash.
I:CID/CCID: 0XXXXXXXXX/XXXXXXXX erkannt.
W:Zeile: #Line=0XXXXXXXX:MSNx nicht in /var/flash/contacte.txt gefunden. Zeile manuell nachtragen.
I:CID: 0XXXXXXXX nicht in /var/flash/contacte.txt gefunden. Inverssuche:
W:Inverssuche: erfolglos. /var/flash/contacte.txt mit 0XXXXXXXX erweitert. Manuell ergaenzen!
I:LineName:
I:name: Unbekannt
I:address: NoAddress
I:FRITZ!Anruf: Unbekannt am 19.07.2008,19:12
I:Normal: Unbekannt (0XXXXXXXX) an 0XXXXXXXX (POTS) am 19.07.2008,19:12
I:Anrufinfo an dboxen gesendet.
I:Mail an XXXXXX [email protected] via: mx.freenet.de versendet.
I:Internet LED off.
I:Sat Jul 19 19:12:07 CEST 2008

Manuell funktioniert der Aufruf der http-Adresse auch nicht.
Eintrag in callog lautet:
http://dastelefonbuch.de/?sp=55&aktion=23&ort=&cifav=0&s=a10000&stype=S&la=de&cmd=search&ort_ok=0&vert_ok=0&x=31&y=9&kw=$CID

Jemand ne Idee? Hat sich die Adresse evtl. geändert?
 
habe jetzt diese Adresse gefunden:

url="http://www1.dasoertliche.de/?form_name=search_inv&ph=$CID";

damit geht die Suche manuell, aber das calllog findet immer noch nichts.....
 
... hmm die Version ist ne Weile her... bin auch von contacts.txt abgekommen, da die aktuelle FBF-FW den Namen in $5 aus dem FBF-Telbuch liefert.

# Parameterauswertung:
Code:
if [ -z $1 ]; then # keine Rufnummer übertragen
  echo "W:keine CID erkannt." >> $CalllogLog
  CID="anonym"    # Nummer
  Line=$2         # MSN / Line
  Medium=$3       # Medium
  name="Anonym"
  FBFName=""
else
  CID=$1     # Anrufernummer
  Line=$2    # MSN / Line
  Medium=$3  # Leitungstyp: ISDN, SIP..., POTS
  FBFName=$5 # Rest ist der Name aus FBFBook
fi

# normalisieren
Code:
if [ "$CID" != "anonym" ];then # wenn CID übertragen
	case ${CID} in # normalize CID
		0049*)           CID=0${CID#*0049} ;;   # wandelt 0049... in 0...
		49????????*)     CID=0${CID#*49} ;;     # wandelt 49... 0...
		[1-9]????????*)  CID=0${CID} ;;         # setzt Null voran
		[1-9]*)          CID=${prefix}${CID} ;; # setzt Prefix voran
	esac 
fi

# inverssuche
Code:
url="http://www2.dasoertliche.de/?form_name=search_inv&page=RUECKSUCHE&context=RUECKSUCHE&action=STANDARDSUCHE&la=de&rci=no&ph=$CID"
TEMP=$(wget -q -O - "$url" | grep -A 10 class=\"entry)
nameDO=$(echo "$TEMP" | sed -n -e 's/<[^<]*>/\ /g; s/^[^a-zA-Z0-9]*//g; 1p')
addrDO=$(echo "$TEMP" | grep "&nbsp;" | sed -e 's/&nbsp;/ /g;s/<[^<]*>/ /g')
		
nameDO=`echo ${nameDO} | tr -d "\f\n\r\t\v\a\b!\"§$%&/()=" | sed 's/[^ -ü]//g' | sed "s/^\ *//g" | sed "s/\ *$//g"` # entfernt alles, was nicht zwischen $20 - $FC ist, TRIM
addrDO=`echo ${addrDO} | tr -d "\f\n\r\t\v\a\b!\"§$%&/()=" | sed 's/[^ -ü]//g' | sed "s/^\ *//g" | sed "s/\ *$//g"` # entfernt alles, was nicht zwischen $20 - $FC ist, TRIM

hoffe die Auszüge helfen ein bißchen weiter...
 
Hab deine Daten mal eingebaut, geht aber immer noch nicht.
Anbei mal meine calllog.

Code:
#!/bin/sh
# calllog vom 20.2.2008
# cd /var/media/ftp/USBMassStorageDevice-Partition-0-1/calllog/; cat calllog > /var/flash/calllog

CalllogLog="/var/tmp/calllog.log"
ContactDB1="/var/flash/contacte.txt"
ContactDB2="/var/flash/contact2.txt"
MailText="/var/flash/calllog_mail.txt"
CalllogFlag="/var/flash/calllog.flg"

MailFrom=""
MailTo=""
SMTP=""       # Server
User=""             # Mailuser
PW=""             # Passwort für User

AWS_MSN1=""
AWS_MSN2=""
MSN_Msg_On=""
MSN_PC_On=""
MSN_AWS_On=""
MSN_Callthrough=""
MSN_CallBack1=""    # ruft CID zurück
MSN_CallBack2=""    # ruft Buero_Nr zurück
MSN_Mail_AWS_Off=""

AWS_ZIEL=""
Buero_Nr=""
Admin1=""   # Meine Telnr1, die ein- und ausschalten darf.
Admin2=""    # Meine Telnr2, die ein- und ausschalten darf.
Admin3=""    # Meine Telnr3, die ein- und ausschalten darf.
Admin4=""    # Meine Telnr4, die ein- und ausschalten darf.
prefix="xxxxx"           # meine Ortsvorwahl

dbox1="" # IP von dbox 1
dbox2="" # IP von dbox 2
wolinterface="eth0"    # Fritzboxinterface an dem der PC hängt
wolmac="00:33:44:55:66:77" # MAC des PC

# Logfilehandling
if [ `grep -c "" $CalllogLog` -gt 100 ];then # mehr als 100 Zeilen, dann die ersten 20 ZEILEN löschen.
  tail +20 $CalllogLog > ${CalllogLog}_; cp ${CalllogLog}_ $CalllogLog; rm ${CalllogLog}_
fi

# Start
echo "" >> $CalllogLog; echo "I:"`date` >> $CalllogLog
echo 14,3 > /var/led; echo "I:Internet LED flash." >> $CalllogLog

CID=$1
Line=$2 # $3=ISDN, SIP..., $5=Name aus Fritzboxtelefonbuch

if [ -z "$CID" ];then # wenn keine Nummer übertragen
	 echo "I:keine CID übertragen" >> $CalllogLog
	 CID="anonym";
	 Line=$2         # MSN / Line
	 Medium=$3       # Medium
	 name="Anonym"
	 FBFName=""
	else
	 CID=$1     # Anrufernummer
	 Line=$2    # MSN / Line
	 Medium=$3  # Leitungstyp: ISDN, SIP..., POTS
	 FBFName=$5 # Rest ist der Name aus FBFBook
	fi
	# normalisieren
	if [ "$CID" != "anonym" ];then # wenn CID
	 case ${CID} in # normalize CID
	 0049*)           CID=0${CID#*0049} ;;   # wandelt 0049... in 0...
	 49????????*)     CID=0${CID#*49} ;;     # wandelt 49... 0...
	 [1-9]????????*)  CID=0${CID} ;;         # setzt Null voran
	 [1-9]*)          CID=${prefix}${CID} ;; # setzt Prefix voran
	 esac
	fi


	CCID=`echo "${CID}" | sed -e 's/^0049//; s/^49\([0-9]\{8,\}\)/\1/; s/^0//'`
		echo "I:CID/CCID: $CID/$CCID erkannt." >> $CalllogLog

		# search LineName in line list
		LineName=`cat $ContactDB1 2>/dev/null | fgrep "#line=${Line}:" | sed "s/#line=${Line}://"`
	LineName=${LineName%%\;*} # Semikolon entfernen
			if [ -z "${LineName}" ];then # LineName not found?
					Name="N.N." # Nomen Nescio
			echo "W:Zeile: #Line=$Line:MSNx nicht in $ContactDB1 gefunden. Zeile manuell nachtragen." >> $CalllogLog
		fi
	httpLineName=`echo "${LineName}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`

			# search name in LocalTelbook
	entry=`cat $ContactDB1 2>/dev/null | fgrep "#contact=${CID}:" | sed "s/#contact=${CID}://"`
	name=${entry%%\;*}
	address=${entry#*\;}
	address=${address%\;*}
	streetL=${address%%\;*}
		cityL=${address##*\;}

		if [ -z "${name}" ];then # name not found LocalTelbook? Inverssuche
			echo "I:CID: $CID nicht in $ContactDB1 gefunden. Inverssuche:" >> $CalllogLog
		# Inverssuche bei DasOertliche.de
		# url="http://www2.dasoertliche.de/?form_name=search_inv&page=RUECKSUCHE&context=RUECKSUCHE&action=STANDARDSUCHE&la=de&rci=no&ph=$CID";
		#url="http://www1.dasoertliche.de/?form_name=search_inv&ph=$CID";
		#TEMP=$(wget -q -O - "$url" | grep -A 10 class=\"entry\")
		#nameDO=$(echo "$TEMP" | sed -n -e 's/<[^<]*>/\ /g; s/^[^a-zA-Z0-9]*//g; 1p')
		#addrDO=$(echo "$TEMP" | sed -n -e 's/&nbsp;/ /g; s/<[^<]*>/ /g; s/^ *//g; $p')
		#nameDO=`echo $nameDO | tr -d "\f\n\r\t\v\a\b" | sed 's/[^ -ü]//g' | sed "s/^\ *//g" | sed "s/\ *$//g"` # entfernt alles, was nicht zwischen $20 - $FC ist, TRIM
		#addrDO=`echo $addrDO | tr -d "\f\n\r\t\v\a\b" | sed 's/[^ -ü]//g' | sed "s/^\ *//g" | sed "s/\ *$//g"` # entfernt alles, was nicht zwischen $20 - $FC ist, TRIM

		url="http://www2.dasoertliche.de/?form_name=search_inv&page=RUECKSUCHE&context=RUECKSUCHE&action=STANDARDSUCHE&la=de&rci=no&ph=$CID"
		TEMP=$(wget -q -O - "$url" | grep -A 10 class=\"entry)
		nameDO=$(echo "$TEMP" | sed -n -e 's/<[^<]*>/\ /g; s/^[^a-zA-Z0-9]*//g; 1p')
		addrDO=$(echo "$TEMP" | grep "&nbsp;" | sed -e 's/&nbsp;/ /g;s/<[^<]*>/ /g')

		nameDO=`echo ${nameDO} | tr -d "\f\n\r\t\v\a\b!\"õ$%&/()=" | sed 's/[^ -]//g' | sed "s/^\ *//g" | sed "s/\ *$//g"` # entfernt alles, was nicht zwischen $20 - $FC ist, TRIM
		addrDO=`echo ${addrDO} | tr -d "\f\n\r\t\v\a\b!\"õ$%&/()=" | sed 's/[^ -

		# Inverssuche bei dastelefonbuch.de]//g' | sed "s/^\ *//g" | sed "s/\ *$//g"` # entfernt alles, was nicht zwischen $20 - $FC ist, TRIM
		url="http://dastelefonbuch.de/?sp=55&aktion=23&ort=&cifav=0&s=a10000&stype=S&la=de&cmd=search&ort_ok=0&vert_ok=0&x=31&y=9&kw=$CID"
		nameDT=$(wget -q -O - "$url" | grep class=\"celname\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g')
		streetDT=$(wget -q -O - "$url" | grep class=\"celstreet\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g' -e 's/&nbsp;/ /g')
		cityDT=$(wget -q -O - "$url" | grep class=\"celcity\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g' -e 's/&nbsp;/ /g')
		nameDT=`echo $nameDT | tr -d "\f\n\r\t\v\a\b" | sed 's/[^ -ü]//g' | sed "s/^\ *//g" | sed "s/\ *$//g"` # entfernt alles, was nicht zwischen $20 - $FC ist, TRIM
		streetDT=`echo $streetDT | tr -d "\f\n\r\t\v\a\b" | sed 's/[^ -ü]//g' | sed "s/^\ *//g" | sed "s/\ *$//g"` # entfernt alles, was nicht zwischen $20 - $FC ist, TRIM
		cityDT=`echo $cityDT | tr -d "\f\n\r\t\v\a\b" | sed 's/[^ -ü]//g' | sed "s/^\ *//g" | sed "s/\ *$//g"` # entfernt alles, was nicht zwischen $20 - $FC ist, TRIM

		# dastelefonbuch hier bevorzugt
		# nimmt nameDO nur wenn nameDT leer, sonst Unbekannt; NoAddress
		if [ -n "$nameDO" ];then # wenn nameDT gefüllt
	  		name=$nameDO
		address="$addrDO;"
	echo "I:Inverssuche DO: erfolgreich: $name $address" >> $CalllogLog
		fi # wenn nameDO gefüllt
		if [ -n "$nameDT" ];then # wenn nameDT gefüllt
			name=$nameDT
			address="$streetDT; $cityDT"
			echo "I:Inverssuche DT: erfolgreich: $name $address" >> $CalllogLog
		fi # wenn nameDT gefüllt

		# LocalTelbook ergänzen
		if [ -n "${name}" ];then # Wenn inverssuche erfolgreich
			cat $ContactDB1 | sed -e "s/^#CONTACTSEND$/#contact=${CID}:${name};${address};#CONTACTSEND/g" | sed -e 's/#CONTACTSEND$/\n#CONTACTSEND/g' > $ContactDB2
			echo "I:Inverssuche DT: erfolgreich: $name $address $ContactDB1 ergänzt." >> $CalllogLog
		else # wenn inverssuche erfolglos
			if [ -n "$5" ];then  # CID im Fritzbox-Telefonbuch gefunden?
				name=$5
				address="NoAddress"
				echo "I:Name im FBF-Tel.buch gefunden: $name" >> $CalllogLog
			else # CID leider auch nicht im Fritzbox-Telefonbuch gefunden
				name="Unbekannt"
				address="NoAddress"
			fi # CID im Fritzbox-Telefonbuch gefunden
			# Eintrag mit Nummer in contact.txt vorbereiten
			cat $ContactDB1 | sed -e "s/^#CONTACTSEND$/#contact=${CID}:${name};;;#CONTACTSEND/g" | sed -e 's/#CONTACTSEND$/\n#CONTACTSEND/g' > $ContactDB2
			echo "W:Inverssuche: erfolglos. $ContactDB1 mit $CID $5 erweitert. Manuell ergaenzen!" >> $CalllogLog
			/sbin/mailer -s "FRITZ!Admin: contacte.txt um $CID $5 erweitert. Manuell ergaenzen!" -f "$MailFrom" -t "$MailTo" -m "$SMTP" -a "$User" -w "$PW" -i "$ContactDB2"
		fi # Wenn inverssuche erfolgreich
		cp $ContactDB2 $ContactDB1

i # name not found LocalTelbook?
fi # wenn Nummer übertragen

echo "I:LineName: $LineName" >> $CalllogLog
echo "I:name: $name" >> $CalllogLog
echo "I:address: $address" >> $CalllogLog

httpname=`echo "${CID} (${name})" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
httpLine=`echo "${Line} (${LineName})" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
httpAddress=`echo "${address}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
httpZeit=`date +"%20%d.%m.%Y%20%H%3A%M%3A%S%20Uhr"`

case "$Line" in # auf AdminAnrufe prüfen
	"$MSN_CallBack1")
		# if [ "$CID" = "$Admin1" ] || [ "$CID" = "$Admin2" ];then # CallBack mit hoher Sicherheit
		if [ "$CID" != "anonym" ];then # CallBack mit niederiger Sicherheit
			rc1=`echo "ATP3" | nc 127.0.0.1 1011 | tr -d "\n\r"`
			# sleep 5
			rc2=`echo "ATD$CID" | nc 127.0.0.1 1011 | tr -d "\n\r"`
			# sleep 40
			# echo "ATH" | nc 127.0.0.1 1011 >> $CalllogLog  # Auflegen nach 40 Sekunden
			MailBetreff="FRITZ!Admin:"
			MailDetails="CallBack1: ATP3: ($rc1) ATD$CID: ($rc2):"
			httpAdminAnruf=`echo "${MailBetreff} ${MailDetails}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
		else
			MailBetreff="FRITZ!Achtung:"
			MailDetails="CallBack1: ATP3: ($rc1) ATD$CID: ($rc2):"
		httpAdminAnruf=`echo "${MailBetreff} ${MailDetails}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
	fi
		;;
	"$MSN_CallBack2")
		# if [ "$CID" = "$Admin1" ] || [ "$CID" = "$Admin2" ];then # CallBack mit hoher Sicherheit
		if [ "$CID" != "anonym" ];then # CallBack mit niederiger Sicherheit
			rc1=`echo "ATP3" | nc 127.0.0.1 1011 | tr -d "\n\r"`
			# sleep 5
			rc2=`echo "ATD$Buero_Nr" | nc 127.0.0.1 1011 | tr -d "\n\r"`
			# sleep 40
			# echo "ATH" | nc 127.0.0.1 1011 >> $CalllogLog  # Auflegen nach 40 Sekunden
			MailBetreff="FRITZ!Admin:"
			MailDetails="CallBack2: ATP3: ($rc1) ATD$Buero_Nr: ($rc2):"
			httpAdminAnruf=`echo "${MailBetreff} ${MailDetails}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
		else
			MailBetreff="FRITZ!Achtung:"
			MailDetails="CallBack2: ATP3: ($rc1) ATD$CID: ($rc2):"
			httpAdminAnruf=`echo "${MailBetreff} ${MailDetails}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
		fi
		;;
	"$MSN_Callthrough")
		# if [ "$CID" = "$Admin1" ] || [ "$CID" = "$Admin2" ] || [ "$CID" = "$Admin3" ] || [ "$CID" = "$Admin4" ];then # CallBack mit hoher Sicherheit
		if [ "$CID" != "anonym" ];then # CallBack mit niederiger Sicherheit
			MailBetreff="FRITZ!Admin:"
			MailDetails="Callthrough:"
			httpAdminAnruf=`echo "${MailBetreff} ${MailDetails}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
		else
			MailBetreff="FRITZ!Achtung:"
			ailDetails="Callthrough:"
			tpAdminAnruf=`echo "${MailBetreff} ${MailDetails}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
		fi
		;;
	"$MSN_PC_On")
		if [ "$CID" = "$Admin1" ] || [ "$CID" = "$Admin2" ] || [ "$CID" = "$Admin3" ] || [ "$CID" = "$Admin4" ];then # WOC, Mail senden
			/bin/busybox ether-wake -i ${wolinterface} ${wolmac}
			MailBetreff="FRITZ!Admin:"
			MailDetails="WOC:"
			httpAdminAnruf=`echo "${MailBetreff} ${MailDetails}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
		else
			MailBetreff="FRITZ!Achtung:"
			MailDetails="WOC:"
			httpAdminAnruf=`echo "${MailBetreff} ${MailDetails}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
		fi
		;;
	"$MSN_Msg_On")
		if [ "$CID" = "$Admin1" ] || [ "$CID" = "$Admin2" ] || [ "$CID" = "$Admin3" ] || [ "$CID" = "$Admin4" ];then # MailCallinfo Einschalten: Flag löschen, Mail senden
			rm $CalllogFlag 2>/dev/null
			MailBetreff="FRITZ!Admin:"
			MailDetails="Callinfo AN:"
			httpAdminAnruf=`echo "${MailBetreff} ${MailDetails}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
		else
			MailBetreff="FRITZ!Achtung:"
			MailDetails="Callinfo AN:"
			httpAdminAnruf=`echo "${MailBetreff} ${MailDetails}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
		fi
		;;
	"$MSN_AWS_On")
		if [ "$CID" = "$Admin1" ] || [ "$CID" = "$Admin2" ] || [ "$CID" = "$Admin3" ] || [ "$CID" = "$Admin4" ];then # MailCallinfo Ausschalten: Flag setzen, Mail senden
			rc1=`echo "ATD*21*${AWS_ZIEL}*${AWS_MSN1}#" | nc 127.0.0.1 1011 | tr -d "\n\r"`
			rc2=`echo "ATD*21*${AWS_ZIEL}*${AWS_MSN2}#" | nc 127.0.0.1 1011 | tr -d "\n\r"`
			echo "I:AWS ON: ATD*21*${AWS_ZIEL}*${AWS_MSN1}#: ($rc1)" >> $CalllogLog
			echo "I:AWS ON: ATD*21*${AWS_ZIEL}*${AWS_MSN2}#: ($rc2)" >> $CalllogLog
			MailBetreff="FRITZ!Admin:"
			MailDetails="AWS AN (rc1=$rc1 rc2=$rc2)"
			httpAdminAnruf=`echo "${MailBetreff} ${MailDetails}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
		else
			MailBetreff="FRITZ!Achtung:"
			MailDetails="AWS AN (rc1=$rc1 rc2=$rc2)"
			httpAdminAnruf=`echo "${MailBetreff} ${MailDetails}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
		fi
		;;
	"$MSN_Mail_AWS_Off")
		if [ "$CID" = "$Admin1" ] || [ "$CID" = "$Admin2" ] || [ "$CID" = "$Admin3" ] || [ "$CID" = "$Admin4" ];then # MailCallinfo Ausschalten: Flag setzen, Mail senden
			echo "I:Admin-Anruf: Message+AWS OFF..." >> $CalllogLog
			touch $CalllogFlag # Flag setzen
			rc1=`echo "ATD*21**${AWS_MSN1}#" | nc 127.0.0.1 1011 | tr -d "\n\r"`
			rc2=`echo "ATD*21**${AWS_MSN2}#" | nc 127.0.0.1 1011 | tr -d "\n\r"`
			echo "I:AWS OFF: ATD*21**${AWS_MSN1}#: ($rc1)" >> $CalllogLog
			echo "I:AWS OFF: ATD*21**${AWS_MSN2}#: ($rc2)" >> $CalllogLog
			MailBetreff="FRITZ!Admin:"
			MailDetails="Callinfo+AWS AUS (rc1=$rc1 rc2=$rc2)"
			httpAdminAnruf=`echo "${MailBetreff} ${MailDetails}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
		else
			MailBetreff="FRITZ!Achtung:"
			MailDetails="Callinfo+AWS AUS (rc1=$rc1 rc2=$rc2)"
			httpAdminAnruf=`echo "${MailBetreff} ${MailDetails}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
		fi
		;;
	*) # Anrufe auf anderen Lines (keine Admin Line (MSN))
		MailBetreff="FRITZ!Anruf:"
		MailDetails="Normal:"
		httpAdminAnruf=`echo "${MailBetreff} ${MailDetails}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
		;;
esac # AdminAnrufe

echo "I:$MailBetreff $name am `date +\"%d.%m.%Y,%H:%M\"`" >> $CalllogLog
echo "I:$MailDetails $name ($CID) an $Line ($3) am `date +\"%d.%m.%Y,%H:%M\"`" >> $CalllogLog

if [ ! -e $CalllogFlag ];then # nur wenn FlagDatei fehlt: Mailversand und dbox-Nachricht
	# send information to DBox -> TV screen
	wget -O /dev/null "http://${dbox1}/control/message?nmsg=${httpAdminAnruf}%0AAnrufer%3A%20${httpname}%0AAdresse%3A%20${httpAddress}%0AZeit%3A%20${httpZeit}" >/dev/null 2>&1 &
	echo "I:Anrufinfo an dboxen gesendet." >> $CalllogLog

	# Mailtext zusammenbauen
	mehrParameter=`echo $4 $5 $6 $7 $8 $9 | tr -d "\f\n\r\t\v\a\b" | sed 's/[^ -ü]//g' | sed "s/^\ *//g" | sed "s/\ *$//g"` # entfernt alles, was nicht zwischen $20 - $FC ist, TRIM
	# echo "FRITZ! $CID ($name) an $Line ($3) am `date +\"%d.%m.%Y,%H:%M\"`" > $MailText
	echo "$MailDetails $name ($CID) an $Line ($3) am `date +\"%d.%m.%Y,%H:%M\"`" > $MailText
	echo "
	$mehrParameter

	Ergebnis der lokalen Suche $ContactDB1 fuer $CID:
	$name
	$address

	Ergebnis der Inverssuche dasoertliche.de fuer $CID:
	$nameDO
	$addrDO

	Ergebnis der Inverssuche dastelefonbuch.de fuer $CID:
	$nameDT
	$streetDT $cityDT

	--
	Fritz!Box: Mail send at $(date +%H:%M:%S)" >> $MailText

	# und ab die Post
	/sbin/mailer -s "$MailBetreff $CID $name am `date +\"%d.%m.%Y,%H:%M\"`" -f "$MailFrom" -t "$MailTo" -m "$SMTP" -a "$User" -w "$PW" -i "$MailText"
	echo "I:Mail an $MailTo via: $SMTP versendet." >> $CalllogLog
fi # nur wenn FlagDatei fehlt: Mailversand und dbox-Nachricht

echo 14,1 > /var/led; echo "I:Internet LED off." >> $CalllogLog
echo "I:"`date` >> $CalllogLog
# Ende

Hab ich da evtl. nen Bug drin?
 
Bei mir läuft der Vorschlag von Malilo auch nicht.
Die Rückwärtssuche will einfach nicht und schreibt immer "kein Eintrag...", auch bei bekannten Nummern (die Telefonbuch URL im Browser tuts).

Kann nicht jemand ein Script posten, das getestet funktioniert?
Könnte mir vorstellen, dass würde vielen helfen.
Danke für Eure Hilfe!

Grüße
Oliver
 
Hallo,

dieses hier läuft bei mir. Ziemlich einfach aber die Rückwärtssuche funktioniert,

Code:
#! /bin/sh

url="http://www.dasoertliche.de/?form_name=search_inv&page=RUECKSUCHE&context=RUECKSUCHE&action=STANDARDSUCHE&la=de&rci=no&ph=$1";
name=$(wget -q -O - "$url" | grep class=\"entry\" | sed -e 's/<[^<]*>/\ /g;s/^[ \t]*//;s/\ / /g')

/sbin/mailer \
   -s "`date +\"%d.%m.%y %H:%M\"` - Anruf von $1 $name" \
   -f '"Fritz!Box" <[email protected]>' \
   -t "[email protected]" \
   -m mail.gmx.net \
   -a [email protected] \
   -w "passwort" \

#2> /dev/null
 
Hi!
Mein Script informiert mich zusätzlich noch per MSN Messenger über einen Anruf.
Ich verwende dazu einen Code von Daniel Winter (http://www.fanatic.net.nz/2005/02/15/send-a-message-using-php/)

Meine simple.php sieht dann so aus:

Code:
<?php
error_reporting(E_ALL);
include('sendMsg.php');
$caller = $_GET["caller"];
$sendMsg = new sendMsg();
$sendMsg->simpleSend('[email protected]', 'MeinPasswort', '[email protected]',"Anruf von ".$caller);

//echo $sendMsg->result.' '.$sendMsg->error;
?>

Der Aufruf der simple.php erfolgt über einen einfachen wget-Aufruf der Fritzbox im calllog Script. (Teilweise kopiert von Shaitan) :)
Die PHP Scripts laufen auf meinem Webserver im Internet. Können natürlich auch lokal im Netzwerk liegen.

Code:
#! /bin/sh

url="http://www.dasoertliche.de/?form_name=search_inv&page=RUECKSUCHE&context=RUECKSUCHE&action=STANDARDSUCHE&la=de&rci=no&ph=$1";
name=$(wget -q -O - "$url" | grep class=\"entry\" | sed -e 's/<[^<]*>/\ /g;s/^[ \t]*//;s/\ / /g')

/sbin/mailer \
   -s "`date +\"%d.%m.%y %H:%M\"` - Anruf von $1 $name" \
   -f '"Fritz!Box" <[email protected]>' \
   -t "[email protected]" \
   -m mail.gmx.net \
   -a [email protected] \
   -w "passwort" \

#2> /dev/null

#Aufruf für den MSN Messenger
msncaller="$1 $name"
msnurl="http://www.MeinWebserver.de/msnphp/simple.php?caller=$msncaller"
wget -q -O - $msnurl
Und schon popt bei einem Anruf (naja, eigentlich eher erst danach, weil das Starten/Absenden der Nachricht etwas lange dauert) der Messenger hoch und zeigt mir die Nummer des Anrufers und seinen Namen (wenn gefunden).

Ein kleinen Fehler hat das ganze noch:
# Sep 5 13:53:48 mailer[662]: file read error

Woher kommt das?

Mögliche Erweiterung... zusätzlich zu dasoertliche.de noch das Telefonbuch der Fritzbox durchsuchen. Für Nummern die im internen Telefobuch stehen, aber nicht in dasoertliche.de
Ich habe aber noch keine Idee wie ich das anstellen soll.

Hat jemand eine Idee oder Info ob sowas auch für ICQ geht?

CU
Chris
 
um hier auch mal was konstruktives beizutragen...:

wenn man die zeilen oben nach den "name=" um folgendes erweitert, dann werden auch die Strasse und die Stadt, also der hinterlegte Zusatz angezeigt.
details=$(wget -q -O - "$url" | grep ';.*<br\/>' | sed -e s/' '//g -e s/\&nbsp\;/\ /g -e s/'\n'//g -e s/'\t'//g -e s/'<br\/>'// `` | grep -v 0);

@spaceguy
wenn du mal mailer --help aufrufst, dann würde ich das so interpretieren, wie dass die Option "-i inline part(s) - add text file(s) here" zwingend ist.
Kannst du das mal probieren?

vg
waldoo

@spaceguy
Ich poste mal alles, was ich gerade am laufen habe, damit wird nämlich zuerst das fritzbox Telefonbuch durchsucht.

Code:
#!/bin/sh

callerid=$1
name=$5
if [ -z "$callerid" ]
  then
    callerid="Unbekannt";
    invisible="\r\n Die Rufnummer des Anrufers wurde unterdrückt.\r\n\r\n Sofern der Anrufer eine Nachricht hinterlassen hat, erhalten Sie diese in einer separaten E-Mail.\r\n "
  else
    if [ -z "$5" ]
      then
                      
          url="http://www.dasoertliche.de/?form_name=search_inv&page=RUECKSUCHE&context=RUECKSUCHE&action=STANDARDSUCHE&la=de&rci=no&ph=$1";
          name=$(wget -q -O - "$url" | grep class=\"entry\" | sed -e 's/<[^<]*>/\ /g;s/^[ \t]*//;s/\ / /g');
          details=$(wget -q -O - "$url" | grep ';.*<br\/>' | sed  -e s/'   '//g -e s/\&nbsp\;/\ /g -e s/'\n'//g -e s/'\t'//g -e s/'<br\/>'//  `` | grep -v 0);
if [ -z "$name" ]
  then
     invisible="\r\nDer Anschlussinhaber konnte nicht ermittelt werden, oder hat einer Verzeichniseintragung widersprochen.\r\n "
     fi
  fi
fi
         
output="Informationen über eingegangenen Anruf:\r\n $invisible \r\n Inhaber: $name \r\n Details: $details \r\n Anrufer MSN: $callerid \r\n Auf Leitung: $2 ($3) $4 \r\n Anruf Zeit: `date +\"am %d.%m.%y, um %H:%M \"`"\


      echo -e $output >/var/tmp/calllog.txt
                                                                                                                      


/sbin/mailer \
          "..... wie oben ......"
          -i '/var/tmp/calllog.txt'
                                                                      
2> /dev/null
 
Zuletzt bearbeitet:
Zusammenfassung Script mit Rückwärtssuche + Mailer

Danke für die Hilfen!
Bin den Thread nochmal durchgegangen und nun geht es bei mir... Spitze!

Also was geht? Check des Fritzbox Telefonbuchs + Rückwärtssuche + Senden an beliebige Mailadresse. Ich lasse mir damit alle Anrufe aufs iPhone pushen.

Hier das Script:

Code:
#!/bin/sh

callerid=$1
name=$5
if [ -z "$callerid" ]
  then
    callerid="Unbekannt";
    invisible="\r\n Die Rufnummer des Anrufers wurde unterdrueckt.\r\n\r\n Sofern der Anrufer eine Nachricht hinterlassen hat, erhalten Sie diese in einer separaten E-Mail.\r\n "
  else
    if [ -z "$5" ]
      then
		url="http://dastelefonbuch.de/?sp=55&aktion=23&ort=&cifav=0&s=a10000&stype=S&la=de&cmd=search&ort_ok=0&vert_ok=0&x=31&y=9&kw=$1";
                sleep 5
                name=$(wget -q -O - "$url" | grep class=\"col1\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g');
                street=$(wget -q -O - "$url" | grep class=\"col2\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g' -e 's/&nbsp;/ /g');
                city=$(wget -q -O - "$url" | grep class=\"col3\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g' -e 's/&nbsp;/ /g');

if [ -z "$name" ]
  then
        invisible="\r\nDer Anschlussinhaber konnte nicht ermittelt werden, oder hat einer Verzeichniseintragung widersprochen.\r\n "
        fi
  fi
fi

         output="Informationen ueber eingegangenen Anruf:\r\n $invisible \r\n Inhaber: $name \r\n Adresse: $street \r\n PLZ Ort: $city\r\n\r\n Anrufer MSN: $callerid \r\n Auf Leitung: 02***$2 ($3) $4 \r\n Anruf Zeit: `date +\"am %d.%m.%y, um %H:%M \"`"\


         echo -e $output >/var/tmp/calllog.txt



        case "$2" in
                                Nummer1| Nummer2| Nummer3)
                                TOADDRESS=hin wo das ganze hin soll
                                ;;
                                esac
if [ -z "$TOADDRESS" ]
then
echo "quit, no notification for this MSN"
        exit
fi

.
.
.
.

/sbin/mailer \
          -s "Von $callerid auf $2 ($3) $4 um `date +\"%H:%M am %d.%m.%y\"`"\
          -f 'FritzBox | Daheim <[email protected]>' \
          -t "$TOADDRESS" \
          -m 'mail.gmx.net' \
          -a '[email protected]' \
          -w 'DeinPasswort' \
          -i '/var/tmp/calllog.txt'

2> /dev/null

Anzupassen ist folgendes:

im mittleren Teil (case $2):
Nummer1| Nummer2| Nummer3 = deine MSNs der Fritzbox (ggf. mehr oder weniger)
hin (hinter TOADDRESS) = deine Empfänger E-Mail Adresse

im unteren Bereich (mailer):
-m 'mail.gmx.net' \ = Imap Server, von dem gesendet werden soll (ggf. web.de oder was anderes)
-a '[email protected]' \ = Absender E-Mail Adresse
-w 'DeinPasswort' \ = Passwort vom IMP Server

zu ersetzen ist nur der Text zwischen '...'. Die '' müssen bleiben.

So und wie kommt das ganze nun auf die Box (falls das noch jemand braucht)?
Ich mache es ohne vi, sondern schreibe die Datei zunächst auf dem Rechner und schiebe sie dann auf die Box. Macht sich IMO besser.
Das angepasste Script als "calllog" Datei (ohne Endung) abspeichern.
Per FTP (so mach ich das) die Datei auf einen an die Box angeschlossenen USB Speicher schieben.

Nun per Telnet auf die Box (ggf. Forum checken wie das geht). Also in Konsole:

telnet 192.168.178.1
ggf. Passwort eingeben

cp /var/media/ftp/USB-Partition-0-1/calllog /var/tmp/calllog
--> Kopiert die Datei ins Box Temp Verzeichnis

nun

cat /var/tmp/calllog > /var/flash/calllog
--> schiebt die Datei fest ins Startscript... Nun sollte es schon gehen.

Ich hoffe, das hilft allen weiter, die auch am Anfang Probleme hatten. Nach zweimal durchziehen weiß man schon fast was man tut ;-)
 
Habe mal dein Script versucht, bekomme aber leider den Fehler:

: not foundh/calllog: line 2:
/var/flash/calllog: line 32: syntax error: word unexpected (expecting "in")
 
Poste doch mal den Ausschnitt aus deinem geänderten Script, oder das Ganze. Das sollte sich im einfachsten Fall über Vergleichen finden lassen...
 
Hast du einen analogen Festnetzanschluss?
dann geht das mit "case" nicht. Da dann einfach die Auswahl weglasssen und es wird bei jedem Anruf ne mail geschickt
 
Poste doch mal den Ausschnitt aus deinem geänderten Script, oder das Ganze. Das sollte sich im einfachsten Fall über Vergleichen finden lassen...

Hätte ich ja schon vorher machen können, sorry. :)

waldoo schrieb:
Hast du einen analogen Festnetzanschluss?
Nein, habe kein Festnetz mehr, bei mir geht alles über VOIP. Geht es damit nicht ?!
 

Anhänge

  • calllog.txt
    1.9 KB · Aufrufe: 30
Zuletzt bearbeitet von einem Moderator:
Hmm, ich seh da nix.

Aber lösch doch mal
case "$2" in
666962| 458845)

sollte nicht schaden...
 
Jetzt bekomme ich keine Fehlermeldungen mehr, aber es werden keine E-Mails versendet. ;)

Nachtrag:
Es lag am FTP-Programm, jetzt geht alles.

Danke ! :)
 
Zuletzt bearbeitet:
Hi,

also bei mir läuft's leider immer noch nicht, hab's folgendermaßen gemacht:


echo > /var/flash/debug.cfg
cd /var
vi calllog

Code:
#!/bin/sh

callerid=$1
name=$5
if [ -z "$callerid" ]
  then
    callerid="Unbekannt";
    invisible="\r\n Die Rufnummer des Anrufers wurde unterdrueckt.\r\n\r\n Sofern der Anrufer eine Nachricht hinterlassen hat, erhalten Sie diese in einer separaten E-Mail.\r\n "
  else
    if [ -z "$5" ]
      then
		url="http://dastelefonbuch.de/?sp=55&aktion=23&ort=&cifav=0&s=a10000&stype=S&la=de&cmd=search&ort_ok=0&vert_ok=0&x=31&y=9&kw=$1";
                sleep 5
                name=$(wget -q -O - "$url" | grep class=\"col1\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g');
                street=$(wget -q -O - "$url" | grep class=\"col2\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g' -e 's/&nbsp;/ /g');
                city=$(wget -q -O - "$url" | grep class=\"col3\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g' -e 's/&nbsp;/ /g');

if [ -z "$name" ]
  then
        invisible="\r\nDer Anschlussinhaber konnte nicht ermittelt werden, oder hat einer Verzeichniseintragung widersprochen.\r\n "
        fi
  fi
fi

         output="Informationen ueber eingegangenen Anruf:\r\n $invisible \r\n Inhaber: $name \r\n Adresse: $street \r\n PLZ Ort: $city\r\n\r\n Anrufer MSN: $callerid \r\n Auf Leitung: Vorwahl$2 ($3) $4 \r\n Anruf Zeit: `date +\"am %d.%m.%y, um %H:%M \"`"\


         echo -e $output >/var/tmp/calllog.txt



        case "$2" in
                                123456)
                                [email protected]
                                ;;
                                esac
if [ -z "$TOADDRESS" ]
then
echo "quit, no notification for this MSN"
        exit
fi

.
.
.
.

/sbin/mailer \
          -s "Von $callerid auf $2 ($3) $4 um `date +\"%H:%M am %d.%m.%y\"`"\
          -f 'FritzBox | 123456 <[email protected]>' \
          -t "$TOADDRESS" \
          -m smtp.1und1.de \
          -a [email protected] \
          -w Passwort \
          -i '/var/tmp/calllog.txt'

2> /dev/null

cat calllog>/var/flash/calllog


Gehe ich jetzt in /var/flash/ und gebe dann vi calllog ein, kommt eine leere Datei. Ist es nicht kopiert worden oder hab ich auf das Verzeichnis mit VI keinen Zugriff?

Ach ja:

Fritz!Box 7270, Firmware 54.04.63-12190, also Labor!
An der Box ist nichts gemacht ausser Telnet aktivieren.
Ist nen Komplettanschluss ohne Festnetz.

Ich denk mir mal es ist nen Anfängerfehler. Ich hab's jetzt 5 Mal versucht, auch auf leicht andere Art und Weiße und immer ist's das gleiche.

Hoffe es kann mir jemand helfen, da mir bei meinem Siemens Mobilteil am DECT der Box entgangene Anrufe logischerweiße nicht mehr angezeigt werden und da wäre ne Mail auf's iPhone doch ne Alternative.

Grüße
 

Statistik des Forums

Themen
245,753
Beiträge
2,239,186
Mitglieder
372,947
Neuestes Mitglied
jahel98
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.