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

Hallo Ratsuchender

Danke für deinen Hinweis. Hat mich etwas weiter gebracht. Ich kann nun das Script aus der Console heraus testen. Als Prio 1 hab ich mir mal die Suche bei tel.search.ch vorgenommen.

Hab mir dazu ein kleines Script gemacht:
Code:
set -xv

url=" http://tel.search.ch/api/?was=0313228535"
output=$(wget -q -O - "$url" |grep detail | sed -e 's/<[^>]*>//g' );

Somit kann ich die API anfragen mit einer Tel. Nummer. Mein Problem, die sed Abfrage. Ich werde einfach nicht schlau aus dem Syntax von sed.

Wie kann man den Namen aus dem HTML oder aus dem Atom-Feed auslesen?? Hast du da ne Ahnung??

Gruss de schwiiiizer Zerofreak
 
Wie ist denn die erwünschte Ausgabe?
Wenn ich http://tel.search.ch/api/?was=0313228535 aufrufe, sehe ich mehrere Einträge.

Vielleicht meinst du ja das
Code:
wget -qO -  "http://tel.search.ch/api/?was=0313228535&maxnum=1" | sed -n '/<entry>/,/<\/entry>/s/^.*<title[^>]*>\([^<]*\).*/\1/p'
 
Zuletzt bearbeitet:
Hallo roadman17

Ja das ist dass, was ich mir vorstelle. In dem Falle, ersetzt dies das Script vom Post #512. Mit einigem ausprobieren, hab ich es (noch) nicht fertig bekommen, es ins ganze Script einzubauen. Das Ergebnis muss nun "nur" noch in die Struktur der anderen Abfragen integriert werden. Wie und wo... bin noch am ausprobieren.

Wenn jemand da mit Hand an legen möchte, nur zu. Ich probiere weiter und werde meine Ergebnis melden.

Gruss de schwiiiizer Zerofreak
 
calllog mit WOL des VDR mit inverssuche DACH, NL, F slimserver mit Portforwarding

Hallo Forum,

hier meine Calllog Variante:

Rufweiterleitung kann aus der Ferne aktiviert werden. Hierzu muss eine MSN mit Rufnummernübermittlung angerufen werden. Ein Anruf auf eine andere MSN löscht die Anrufweiterleitung wieder.

Telefonbuch der FritzBox wird genutzt.
falls keine Einträge vorhanden ist suche in zusätzlicher Datei ( Phonebook ).
Inverssuche für die Länder: Deutschland, Österreich, Schweiz, Niederlande und Frankreich
Gefundene Treffer werden in der Phonebook Datei gespeichert.

Ausgabe des Anrufers auf Squeezeboxradio, touch, SB3 Logitech streaming Server alias slimserver
Ausgabe des Anrufers auf einem Fernseher an einem VDR ( reelbox von reel multimedia )

Wake on call des VDR Videorecorders von internen MSN und von externer Handynummer. Bei interner MSN wird der VDR geweckt. Bei externer Nr (Handy) wird der VDR geweckt und die Firewall der Fritzbox für 10 Minuten geöffnet ( Portforwarding) und danach wieder geschlossen.

Alle anrufe werden protokolliert und liegen auf der Fritzbox im MS-DOS Format vor.

Hier das calllog Script:

Code:
#!/bin/sh
# cat calllog > /var/flash/calllog 
# sh /var/flash/calllog "ANRUFERNR" "MSN" "LEITUNG" "" "TB"

ZEIT=`date +\"%H:%M\"`

echo ""$1" ;"$2" ; "$3"; "$4"; "$5";" >> /var/tmp/wol.log
# echo ""$1" ;"$2" ; "$3"; "$4"; "$5";"

caller="$1"
name="$5"

# set -e

# normalize caller
case "$caller" in
 0049*)
    caller=0${caller#*0049}
    ;;
  49????????*)
    caller=0${caller#*49}
  ;;
  [1-9]????*)
    caller=0${caller}
  ;;
  [1-9]*)
    caller=${prefix}${caller}
  ;;
esac

case "$2" in
     3???MSN??)
		# RUFUMLEITUNG setzen
        if [ -z "$1" ]
			then
				echo "keine Absenderkennung" 
        else
				echo "ATH0" | nc 127.0.0.1 1011
				echo "ATD#451*"$1*"" | nc 127.0.0.1 1011
				echo "ATH0" | nc 127.0.0.1 1011
        fi
            ;;
     3?andereMSN) 
		# RUFUMLEITUNG löschen
			echo "ATH0" | nc 127.0.0.1 1011
			echo "ATD#401**#91**" | nc 127.0.0.1 1011
			echo "ATH0" | nc 127.0.0.1 1011
		    ;;
     0??WOLMSN???)
		# WOL Prüfung echo "Booting PC"
		if [ $1 = "01HANDYNR" ] || [ $1 = "01andereHandyNR" ] || [ $1 = "0dritteHandynr" ] || [ $1 = "0interneMSN" ]
			then
				/usr/bin/ether-wake -b 00:e0:f4:1f:6b:32
				sleep 1
				/usr/bin/ether-wake -b 00:E0:F4:1F:6B:32
				echo wol gesendet
				if [ $1 = "01Handynr" ] || [ $1 = "01anderehandnr" ] || [ $1 = "01drittehandynr" ]
				then
				echo "$ZEIT REMOTE WOL !!!!" | /var/media/ftp/Corsair-FlashVoyager-01/bin/busybox1.9.0 unix2dos >> /var/media/ftp/Corsair-FlashVoyager-01/user/pub/notice/info/anrufe.txt
				/var/media/ftp/Corsair-FlashVoyager-01/bin/reelon.sh &
				
				fi
        exit 0
        fi    
			;;
			
      *)
             echo "Falsche MSN" >/dev/null 2>/dev/null
            ;;
esac

if [ -z "$1" ] 
	then
		caller="Anonym";
		name="Anonym";
	else

	if [ -z "$name" ]
		then
			name=`cat /var/media/ftp/Corsair-FlashVoyager-01/phonebook.txt | fgrep "$1" | sed "s/|\ [0-9\ ]*//"`;
	 fi
 
	if [ -z "$name" ]
		then
		case "$caller" in
			0031*)
            # echo Niederlande;
            url="http://www.detelefoongids.nl/en/$1/11-2/?oWhat=$1&oWhere=";
						name=$(wget -q -O - "$url" | grep -A 1 class=\"hidden\ fullName\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/[^! -~]//g;s/*//g;');
						;;
			0033*)
              # echo Frankreich, hier nur Nummern ohne Landeskennung;
              url="http://www.118218.fr/recherche/?q=$(echo $1 | sed -e 's/0033/0/g')&rewrited=&rewritedLocality=&address=&b=0&typ=r&st=I";
              name=$(wget -q -O - "$url" | grep -e 'arg1\[0\] = \"'| sed -e 's/arg1\[0\]\ =//;s/";//g;s/"//g');
						;;
			0041*)
   					# echo bin in Schweiz;
   					url="http://allversal.ch/telsearch.php?tel=$1";
   					name=$(wget -q -O - "http://allversal.ch/telsearch.php?tel=$1" );
						;;
			0043*) 
						# echo bin in AUSTRIA;
						url="http://www.telefonabc.at/result.aspx?what=$1&where=&exact=false&firstname=&lastname=&street=&appendix=&telpre=&telnr=&branch=&p=0&l=&sid=&did=&cc="
						name=$(wget -q -O - "$url" | grep -A 1 class=\"given-name\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g;s/[^! -~]//g;s/-//g;s/!//g;s/ <//g')
						;;
			*)
						url="http://www.dasoertliche.de/Controller?la=de&kw=$1&form_name=search_nat"
						name=$(wget -q -O - "$url" | grep class=\"preview | sed -e 's/\ / /g;s/[	]//g;s/^[ ]//g;s/<[^<]*>//g;s/&nbsp;/ /g;' | tr "\015" "\012")	
						if [ -z "$name" ] 
							then
								url="http://www.klicktel.de/inverssuche/index/search?method=searchSimple&_dvform_posted=1&phoneNumber=$1"
								name=$(wget -q -O - "$url" | grep "namelink" | sed 's/<[^<]*>/\ /g;s/  //;s/ /, /');
								# echo bin in DE2  $name $1 $caller
						fi	
					;;
		esac

		if [ -z "$name" ] 
			then
				name="Unbekant";
			else
               squezname="$(echo "$squezname" | sed -e "N;s/\n//g")";
               echo ""$name"| "$1"" >> /var/media/ftp/Corsair-FlashVoyager-01/phonebook.txt ;
		fi
	fi		
fi

echo "$ZEIT Anrufer $name $1" | /var/media/ftp/Corsair-FlashVoyager-01/bin/busybox1.9.0 unix2dos >> /var/media/ftp/Corsair-FlashVoyager-01/user/pub/notice/info/anrufe.txt

	squezname="$(echo "$name" | sed -e "s/ /_/g")" 
	unten="$squezname%20ruft%20an"
	oben="Anruf%20von%20"$1""
	urlsquez="http://IPnr.Squezeboxserver_UND_VDR:9000/status.txt?p0=display&p1='$oben'&p2='$unten'&p3=15&player=*"
	wget -s $urlsquez


if [ "$?" -ne "0" ]; then
  echo "VDR down" >/dev/null 2>/dev/null
  
else
	# echo "VDR läuft"
	echo -e "MESG Anruf von "$name" $1 an $2 \n quit" | busybox nc 192.IPnr.Squezeboxserver_UND_VDR.3 2001
	sleep 5
	echo -e "MESG Anruf von "$name" $1 an $2 \n quit" | busybox nc 192.IPnr.Squezeboxserver_UND_VDR.3 2001
	sleep 5	
	echo -e "MESG Anruf von "$name" $1 an $2 \n quit" | busybox nc 192.IPnr.Squezeboxserver_UND_VDR.3 2001
	sleep 5	
	echo -e "MESG Anruf von "$name" $1 an $2 \n quit" | busybox nc 192.IPnr.Squezeboxserver_UND_VDR.3 2001
  
	wget -s $urlsquez
fi

exit 0

Hier das Script das nach dem Wake On Call das Portforwarding aktiviert und nach 540 Sekunden wieder zu macht.

reelon.sh

Code:
#!/bin/sh

# wait till server is reachable
while !(ping -c 1 192.IP.VDR.3); do
sleep 10
done

# /var/media/ftp/Corsair-FlashVoyager-01/bin/rules.sh 80 80 1 tcp 192.IP.VDR.3 HTML
ctlmgr_ctl w forwardrules settings/rule0/activated 1
# echo aktiviere 
sleep 540
# /var/media/ftp/Corsair-FlashVoyager-01/bin/rules.sh 80 80 0 tcp 192.IP.VDR.3 HTML
ctlmgr_ctl w forwardrules settings/rule0/activated 0
exit

Hier das Script welches die ar7.cfg entsprechend ändert Wird nicht mehr benötigt siehe folgenden Hinweis:

ACHTUNG: WER sich vertippt zerstört seine ar7.cfg und hat dann ein echtes Problem mit der FritzBox! ZWEITENS. DER EINTRAG für die Portweiterleitung muss zuvor manuell in der GUI der Fritzbox richtig eingetragen werden!!! Dieses Script hatte ich im Internet mal gefunden. Deshalb sind da noch Teile die nicht genutzt werden.

rules.sh

Code:
#!/bin/sh

# DIESES script wird nicht mehr benötigt!!!

REAL="/var/flash/ar7.cfg"
TEMP="/var/tmp/ar7.tmp"
TEMPNEU="/var/tmp/ar7NEU.tmp"

if [ "$1" != "" ]; then
   echo "Commandline OK! Performing Action"
  else
   echo ""
   echo "Usage: rule [SPort] [DPort] [0|1] [udp|tcp] [ip] [service]"
   echo ""
   echo "[SPort]   = Incoming Port"
   echo "[DPort]   = Outgoing Port"
   echo "[0|1]     = 1 for set, 0 for delete"
   echo "[udp|tcp] = UDP or TCP"
   echo "[ip]      = IP address to forward"
   echo "[service] = Identify"
   echo ""
   echo "sample: rule 22 22 1 tcp 192.168.178.253 SSH"
   exit
fi

#auslesen ob es diesen Eintrag schon gibt

cat $REAL > $TEMP

grep -e "# tcp 0.0.0.0:8080 192.IP.VDR.3:80 0 # HTTP-Server" $REAL
CHECKoff=$?
echo $CHECKoff

grep -e "tcp 0.0.0.0:8080 192.IP.VDR.3:80 1 # HTTP-Server" $REAL
CHECKon=$?
echo $CHECKon

# off und aus prüfen
if [ "$CHECKoff" = "0" ] && [ "$3" = "0" ]; then
       echo "Eintrag bereits deaktiv. Nichts zu tun!"
 #      exit
fi

# on und an prüfen
if [ "$CHECKon" = "0" ] && [ "$3" = "1" ]; then
       echo "Eintrag bereits aktiv. Nichts zu tun!"
 #      exit
fi

# anschalten wenn off
if [ "$CHECKoff" = "0" ] && [ "$3" = "1" ] ; then
        echo "Eintrag wird aktiviert"
        sed -e "s/# tcp 0.0.0.0\:8080 192.IP.VDR.3\:80 0 # HTTP-Server/tcp 0.0.0.0\:8080 192.IP.VDR.3\:80 1 # HTTP-Server/g" $TEMP > $TEMPNEU
        echo 'rule "'$4' 0.0.0.0:'$1' '$5':'$2' 0 # '$6'"; added to ar7.cfg'  
        cat $TEMPNEU > $REAL             
fi

# ausschalten wenn on
if [ "$CHECKon" = "0" ] && [ "$3" = "0" ] ; then
        echo "Eintrag wird DEaktiviert"
        sed -e "s/tcp 0.0.0.0\:8080 192.IP.VDR.3\:80 1 # HTTP-Server/# tcp 0.0.0.0\:8080 192.IP.VDR.178.3\:80 0 # HTTP-Server/g" $TEMP > $TEMPNEU
        echo 'rule "'$4' 0.0.0.0:'$1' '$5':'$2' 0 # '$6'"; removed from ar7.cfg'
        cat $TEMPNEU > $REAL
fi



#Änderungen übernehmen
dsld -I
exit

Kleiner Tipp am Rande, ich prüfe beim Neustarten der FritzBox ob die Portweiterleitung geschaltet sein sollte und falls JA, wird diese sofort geschlossen. Dies ist für den Fall, dass ich die Portfreischaltung aktiviere und aus irgendeinem Grunde die Fritzbox einen Neustart macht!!!

reeloff.sh

Code:
#!/bin/sh
# /var/media/ftp/Corsair-FlashVoyager-01/bin/rules.sh 80 80 0 tcp 192.IP.VDR.3 HTML
ctlmgr_ctl w forwardrules settings/rule0/activated 0
exit

Und hier noch die BINARY Dateien welche auf meiner 7270 V1 ohne Probleme laufen:

Anhang anzeigen busybox1.9.zip

Ich hoffe, einer kann es brauchen und natürlich bin ich für Anmerkungen dankbar.
Viele Codeschnipsel habe ich mir hier im Forum gesucht und verwendet. Danke nochmals für alle die mir geholfen hatten.

Insgesamt werden einige MSN benötigt!

Über die Portweiterleitung kann ich aus der Ferne den Videorecorder programmieren. Bitte im VDR Web Frontend des VDRADMIN noch die Passwortabfrage einschalten !!!!!
Schönes Wochenende.
 
Zuletzt bearbeitet:
...

Hier das Script welches die ar7.cfg entsprechend ändert.

ACHTUNG: WER sich vertippt zerstört seine ar7.cfg und hat dann ein echtes Problem mit der FritzBox! ZWEITENS. DER EINTRAG für die Portweiterleitung muss zuvor manuell in der GUI der Fritzbox richtig eingetragen werden!!! Dieses Script hatte ich im Internet mal gefunden. Deshalb sind da noch Teile die nicht genutzt werden.

rules.sh

Code:
#!/bin/sh
REAL="/var/flash/ar7.cfg"
TEMP="/var/tmp/ar7.tmp"
TEMPNEU="/var/tmp/ar7NEU.tmp"

if [ "$1" != "" ]; then
   echo "Commandline OK! Performing Action"
  else
   echo ""
   echo "Usage: rule [SPort] [DPort] [0|1] [udp|tcp] [ip] [service]"
   echo ""
   echo "[SPort]   = Incoming Port"
   echo "[DPort]   = Outgoing Port"
   echo "[0|1]     = 1 for set, 0 for delete"
   echo "[udp|tcp] = UDP or TCP"
   echo "[ip]      = IP address to forward"
   echo "[service] = Identify"
   echo ""
   echo "sample: rule 22 22 1 tcp 192.168.178.253 SSH"
   exit
fi

#auslesen ob es diesen Eintrag schon gibt

cat $REAL > $TEMP

grep -e "# tcp 0.0.0.0:8080 192.IP.VDR.3:80 0 # HTTP-Server" $REAL
CHECKoff=$?
echo $CHECKoff

grep -e "tcp 0.0.0.0:8080 192.IP.VDR.3:80 1 # HTTP-Server" $REAL
CHECKon=$?
echo $CHECKon

# off und aus prüfen
if [ "$CHECKoff" = "0" ] && [ "$3" = "0" ]; then
       echo "Eintrag bereits deaktiv. Nichts zu tun!"
 #      exit
fi

# on und an prüfen
if [ "$CHECKon" = "0" ] && [ "$3" = "1" ]; then
       echo "Eintrag bereits aktiv. Nichts zu tun!"
 #      exit
fi

# anschalten wenn off
if [ "$CHECKoff" = "0" ] && [ "$3" = "1" ] ; then
        echo "Eintrag wird aktiviert"
        sed -e "s/# tcp 0.0.0.0\:8080 192.IP.VDR.3\:80 0 # HTTP-Server/tcp 0.0.0.0\:8080 192.IP.VDR.3\:80 1 # HTTP-Server/g" $TEMP > $TEMPNEU
        echo 'rule "'$4' 0.0.0.0:'$1' '$5':'$2' 0 # '$6'"; added to ar7.cfg'  
        cat $TEMPNEU > $REAL             
fi

# ausschalten wenn on
if [ "$CHECKon" = "0" ] && [ "$3" = "0" ] ; then
        echo "Eintrag wird DEaktiviert"
        sed -e "s/tcp 0.0.0.0\:8080 192.IP.VDR.3\:80 1 # HTTP-Server/# tcp 0.0.0.0\:8080 192.IP.VDR.178.3\:80 0 # HTTP-Server/g" $TEMP > $TEMPNEU
        echo 'rule "'$4' 0.0.0.0:'$1' '$5':'$2' 0 # '$6'"; removed from ar7.cfg'
        cat $TEMPNEU > $REAL
fi



#Änderungen übernehmen
dsld -I
exit
....
Hi, ich denke du kannst die Portweiterleitung mittlerweile einfacher gestalten:
http://www.ip-phone-forum.de/showthread.php?t=84407&p=1890015&viewfull=1#post1890015
Auch hier muss die Weiterleitung in der FritzBox GUI zuvor erstellt werden.
 
Danke Spoon3er,

habe Deinen Hinweis entsprechend eingebaut.

Gruß
 
Hallo,
Dieser Thread hat mich inspiriert diesen Mechanismus zu nutzen um WoL/httpd/dropbear an/auszuschalten.
Dabei wurmt mich die Frage wie ich das absichern kann.
So kann ja jeder VOIP'ler z.B. seine angezeigte Runummer faken/fälschen.* **
*(hab ich mal vernommen)
**(kann aber auch von Vorteil sein: versch. Nummerncodes wie bei GSM sind dann möglich)
Was haltet ihr davon?

/var/calllog
Code:
#! /bin/sh
# Welche Nummern erlauben irgendetwas auf der Fritz!Box zu tun?
allowed="0123456789" # Anrufernummer
allowed_MSN="9876543210" # Eine MSN Nummer der Fritz!Box

check_call () {
if [ "$1$2" = "$allowed$allowed_MSN" ]
then
return 0
fi
return 1
}

echo "`date +\"%d.%m.%y %H:%M\"` - Anruf von $1 zu $2"
check_call $1 $2
# check_call liefert bei erfolg 0 sonst 1 zurück, also prüfen wir jetzt...
if [ "$?" = "0" ]
then
echo "Yes, you can!"
# Hier den Code rein der noch ausgeführt werden soll.
else
echo "No, you cant!"
# Nichts machen.
fi
#EOF
Die Funktion dropbear (oder was auch immer) zu starten/stoppen und ein EMail-Push (Start/Stop, öffentliche IP)
käme dann später rein, wahrscheinlich als toggle-Funktion.
Ein Anruf schaltet ein, der nächste aus, u.s.w.
(Ich ruf mich sonst nie mit dem Mobile an, allerdings könnte es auch eine extra Prepaid sein ;) )
 
Zuletzt bearbeitet:
Gibt es auch ein einfaches Skript, bei dem nur die Inverssuche aufgerufen wird und per eMail verschickt wird?
 
Ganz am Anfang des Threats steht was dazu wie man halt mailer dazu nutzt.
Aber "gibt es" gibts wahrscheinlich auch, nur, Code ist Code und ist wiederrum nur Text.
Drag and Drop, Copy und Paste und pass es an. Musst du so oder so machen.
 
Hallo zusammen,

ich habe mir alles hier bis zu dem letzten Beitrag durchgelesen - es schluckt echt viel Zeit - über ein Tag war ich beschäftigt, da es für mich Neuland ist (UNIX und diese Fritz!Box-Innereien).

Lemur, die Rückwärtssuche deines Scripts (aus dem Beitrag #411: http://www.ip-phone-forum.de/showthread.php?t=98161&p=1559796&viewfull=1#post1559796) funktioniert nicht mehr, da die beiden Rückwärtssuch-Anbieter die Ausgabe ihrer Seiten geändert haben. Das wurden schon mal hier erwähnt, jedoch keine Lösung bisher.
Poste mal bitte die beiden aktuellen hierfür relevanten Abschnitte (mit grep, sed usw.).
Über paar Tipps wie die Anpassung in Zukunft selbstständig vorgenommen werden könnte (mit grep, sed ...) wäre auf jeden Fall hilfreich, um dich dann etwas zu entlasten. Ohne Grundkenntnisse blickt man nicht durch.

Fast vergessen: nur nach dem Befehl
Code:
sh -x /var/flash/calllog "CID" "MSN"
wird eine E-Mail versendet, jedoch nicht bei einem echten Anruf.

Gruß
evin
 
Zuletzt bearbeitet:
Ich bin auf folgende Fallstricke gestoßen:

Die MSNs sind im Gegensatz zur klassischen Telefonie teilweise inklusive Ortsvorwahl (sipgate) oder sogar Landesvorwahl (Easybell), die genaue MSN kann man in der Oberfläche der Fritzbox einsehen. Sie ist in meinen Fällen jeweils der Benutzername. MSNs, die nicht exakt übereinstimmen matchen nicht und führen dann zur Fehlermeldung "quit, no notification for this MSN".

Die Sache mit der Rückwärtssuche wird hier in meinen Augen viel zu überbewertet, meist weiß ich ohnehin wer das ist, oder die Preson ist nicht für Rückwärtssuche freigegeben.
Ärgerlich ist auch, dass eine kleine Änderung der Webseite direkt wieder eine ganze Menge Skript-Arbeit bedeutet.

Ich habe es mir daher einfach gemacht und versende eine HTML E-Mail mit einem Link zur Rückwärtssuche. Wenn dieser sich ändert, bekomme ich das mit der Firefox -> Rechtslick -> "Ein Schlüsselwort für diese Suche hinzufügen" in 5 min wieder gefixt. D.h. ich muss auf meinem 720p Smartphone einmal mehr klicken, aber das ich davon gebrauch mache, kommt ja ohnehin selten vor. Dafür erspare ich mir viel rumschreiberei.

Positiver Nebeneffekt: Die HTML E-Mail erstellt mir auch gleich einen Link für die Telefonnummer.

Die entsprechenden Code-Stellen. Wichtig ist, dass der output als HTML und nicht als TXT gespeichert wird. Dann wird automatisch eine HTML Mail generiert:


Code:
output="<html><head></head><body>Von: <a href="tel:$callerid">$callerid</a> <br/> Anruf Zeit: $DATE <br/><br/> $invisible <br/> Auf Leitung: $2 <br/><br/> <a href="http://mobil.dasoertliche.de/go_rueckwaertssuche?number=$callerid">Inhabersuche zu $callerid</a></body></html>"\ 

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


Code:
DATE="`date +\"um %H:%M am %d.%m.%y\"`"
callerid=$1
name=$5
if [ -z "$callerid" ]
  then
    callerid="Unbekannt";
    invisible="\r\n Die Rufnummer des Anrufers wurde unterdrueckt.\r\n"
fi


        case "$2" in
                                x)
                                TOADDRESS=a
                                STATE=BUSINESS
                                ;;
                                esac

        case "$2" in
                                y)
                                TOADDRESS=a,b
                                STATE=PRIVAT
                                ;;
                                esac

         output="<html><head></head><body>Von: $STATE - <a href="tel:$callerid">$callerid</a> <br/> Anruf Zeit: $DATE <br/><br/> $invisible <br/> Auf Leitung: $2 <br/><br/> <a href="http://mobil.dasoertliche.de/go_rueckwaertssuche?number=$callerid">Inhabersuche zu $callerid</a></body></html>"\


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


if [ -z "$TOADDRESS" ]
then
echo "quit, no notification for this MSN"
        exit
fi

/sbin/mailer \
          -s "Von $STATE $callerid $DATE "\
          -f "FritzBox | $STATE Anruf <a>" \
          -t "$TOADDRESS" \
          -m 'mail.gmx.net' \
          -a 'a' \
          -w 'xxx' \
          -i '/var/tmp/calllog.html'

2> /dev/null
 
Zuletzt bearbeitet:
Moin

Nett, dankeschön.
Das werd ich bei Gelegenheit mal antesten.
Bei Code wäre es hilfreich, wenn du vor den [ CODE ] Tags noch den Dateinamen,
und vielleicht noch den Dateipfad setzt. So etwa...

/var/callog
Code:
!/bin/bum
# Bla bla...
# ..usw
 
Keine Mail bei einem eingehenden Anruf, sondern nur nach Befehl

kein Script von allen hier aufgezählten funktioniert bei einem echten eingehenden Anruf.
Nur nach einem Befehl wie
Code:
sh /var/flash/calllog "EingehendeRufnummer" "MeineMSN"
bzw.
Code:
sh -x /var/flash/calllog "EingehendeRufnummer" "MeineMSN"
wird die E-Mail versendet.

Bei einem echten Anruf bekomme ich in der Konsole nur die folgende Rückmeldung:
Code:
Nov 30 13:48:40 telefon[626]: SIGCHLD received!
und das war's

PS:
Liegt es eventuell am Router (7170, mit der letzten originalen Firmware)?
Jede calllog wurde jeweils in dem Verzeichnis "/var/calllog" abgelegt.
 
Solange du uns nicht verrätst, was bei dir in der Datei /var/flash/calllog steht, kann dir leider nicht geholfen werden.

Joe
 
wie bereits geschrieben habe ich absolut alle hier veröffentlichten Scripts ausprobiert.
Nehmen wir z. B. den letzten Code von @creon, aus dem Beitrag #551 (http://www.ip-phone-forum.de/showthread.php?t=98161&p=1966555&viewfull=1#post1966555).

In jedem Code passe ich nur die MSNs und den Mailer an (E-Mail des Absenders, SMTP-Server, E-Mail des Empfängers, Passwort usw.).
Soll ich dir doch einen Code hier einfügen?

Alle Scripts funktionieren an sich gut, jedoch nur bei einem manuellen Aufruf (mit einem Befehl wie oben erwähnt). Jedoch bei einem echten Anruf bekomme ich in der Konsole nur die eine kurze Rückmeldung (siehe oben), aber keine E-Mail wird versendet. Anscheinend wird Calllog bei einem echten Anruf gar nicht angesprochen.
Was könnte ich noch prüfen?

Gruß
Evin
 
Was du schon alles mal versucht hast, spielt doch eher eine untergeordnete Rolle.
...Jede calllog wurde jeweils in dem Verzeichnis "/var/calllog" abgelegt.
Auch das deutet auf einen Fehler in der Datei /var/flash/calllog hin.
Was steht denn nun aktuell in dieser Datei? :noidea:

Joe
 
sorry, natürlich
Code:
/var/flash/calllog
wie aus den erwähnten beiden Befehlen auch ersichtlich ist.
Den letzten Code poste ich gleich (16 unterschiedliche habe ich bereits getestet)
 
Code:
#!/bin/sh
#/var/flash/calllog
#calllog
#Rufnummer des Anrufers als Link zur direkten Rückwärtssuche bei "DAS ÖRTLICHE"

DATE="`date +\"%H:%Mh, %d.%m.%y\"`"
callerid=$1
name=$5
if [ -z "$callerid" ]
  then
    callerid="Unbekannt";
    invisible="\r\n Die Rufnummer des Anrufers wurde unterdrückt.\r\n"
fi

        case "$2" in
                                12340)
                                [email protected]
                                STATE=Geschäftsanruf
								Typ=Geschäft
                                ;;
                                esac
								
        case "$2" in
                                12341)
                                [email protected]
                                STATE=Privatanruf
								Typ=Privat
                                ;;
                                esac

		output="<html><head></head><body>Von: <a href="tel:$callerid">$callerid</a><br/>$DATE<br/><br/>Auf Leitung: $2<br/><br/> <a href="http://mobil.dasoertliche.de/go_rueckwaertssuche?number=$callerid">Rückwärtssuche zu $callerid</a></body></html>"\         
		#Diese Leerzeile muss unbedingt sein (mich nicht löschen! Ansonsten erfolgt in der E-Mail keine HTML-Ausgabe)	
		echo -e $output >/var/tmp/calllog.html
		
if [ -z "$TOADDRESS" ]
then
echo "quit, no notification for this MSN"
        exit
fi

/sbin/mailer \
          -s "$callerid > $2 ($DATE)"\
          -f "FritzBox Calllog/$STATE<[email protected]>" \
          -t "$TOADDRESS" \
          -m 'smtp.1und1.de' \
          -a '[email protected]' \
          -w 'evin%345+&' \
          -i '/var/tmp/calllog.html'

2> /dev/null

(der Code ist ANSI kodiert und das Format der Zeilenenden sind zu UNIX (LF) konvertiert)
 
Zuletzt bearbeitet:
Ich kann nicht glauben, daß du tatsächlich über die Telefonnummern 12340 (für Geschäftsanrufe) und 12341 (für Privatanrufe) verfügst und diese auch genau so von der FritzBox an dein calllog-Script übergeben werden!
Auch ist es sehr unwahrscheinlich, daß die EMail-Adressen [email protected] und [email protected] tatsächlich existieren.
Eine weitere Fehlerquelle könnte auch das &-Zeichen in deinem Passwort sein...

Wenn die Datei /var/tmp/calllog.html immer mit korrektem Inhalt erzeugt, aber nicht versendet wird, dann stimmt was mit deinen EMail-Daten nicht.

Joe
 
Gruß Joe,

danke für deine Bemühungen, jedoch deine Bemerkungen zu Echtheit der E-Mails, den MSNs und des Passwortes sind für die Funktionalität des Codes irrelevant.
Wie ich bereits im #555 geschrieben habe: "Alle Scripts funktionieren an sich gut, jedoch nur bei einem manuellen Aufruf".
D. h. die E-Mail werden erfolgreich versendet (was auch der Beweis für die Echtheit der MSNs, der E-Mails, des Passwortes u. s. ist)! Mit einer nicht existierenden MSM wird doch auf der Konsole eine Fehlermeldung angezeigt, sodass calllog nicht mal ausgeführt wird.


(alle persönlichen Daten sind in den veröffentlichten Codes hier selbstverständlich ersetzt worden und es ist nach Forumsregeln auch so erwünscht)
 
Zuletzt bearbeitet:
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.