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

Du hast nicht zufällig die Zeilennummern mit reinkopiert? :-Ö Geh mal bei Pastebin auf "Copy to Clipboard" und füge das Script dann aus der Zwischenablage ein.

zeig mal bitte die Ausgabe von
Code:
cat /var/flash/calllog
Danke
 
Na jetzt hast Du mir aber einen Schreck eingejagt. Habe die Zeilennummern aber nicht kopiert *puh*

Die Ausgabe wird nicht komplett in der Telnet-Box angezeigt, daher fehlt der Anfang. Die eMaildaten habe ich unkenntlich gemacht. Hier per copy/paste der Anfang aus dem editor kopiert:

------------------
[Edit frank_m24: Bitte benutzt CODE Tags für solche Ausgaben.]
Code:
#!/bin/sh

# Debug aktivieren - true/false
DEBUG="false"

# Ausgabe auf der Kommandozeile - true/false
COMMANDL="false"

# Email schicken bei Anruf - ON/OFF
MAIL="ON"

# DBox-Ausgabe der Anrufe - ON/OFF
DBOX="OFF"

--------------------

hier die Ausgabe in der Telnetbox


DBOX="OFF"

# Mail Config
TOMAILADR="[email protected]"
MAILLOGIN="mail.hostloco-adresse.de"
MAILLOGINNAME="[email protected]"
MAILLOGINPW="passwort"

# Dreambox Config
dboxip="192.168.178.250:8080"   # IP des WebIF der DreamBox
dboxUSER="root"         # Username zum Einloggen auf der DreamBox
dboxPASS="ipbox"        # Passwort der DreamBox
dboxDURATION=30         # Anzeigedauer auf der DreamBox
isE2="false"            # bei Enigma1 = false, bei Enigma2 = true

#############################################
# Script Initialisierung
#############################################
CID=$1    # CID die ruft
MSN=$2    # MSN die gerufen wird
LINE=$3   # Leitung die gerufen wird
FBTB=$5   # Name des internen Telefonbuchs, falls vorhanden

if $DEBUG; then
  # Wenn Debug, dann wird automatisch die Ausgabe auf die Kommandozeile eingesch
altet
  # egal, was oben angegeben wurde
  COMMANDL="true"

  echo "Script start mit CID=$CID , MSN=$MSN , LINE=$LINE , FBTB=$FBTB"
  echo "DBOX=$DBOX, MAIL=$MAIL"
  echo
fi

########################################################
f_dbox(){
  DBOX_DATE="$(date +%d.%h%20%H:%M)"
  if [ "$DBOX" = "ON" ] ; then
      # Leerzeichen durch %20 ersetzen
      MYNAMEDBOX="$(echo $MYNAME | sed 's/ /%20/g')"
      MYNAMEDBOX1="$(echo $MYNAME1 | sed 's/ /%20/g')"
      FBTBDBOX="$(echo $FBTB | sed 's/ /%20/g')"

      # Wenn kein Eintrag Online
      case $MYNAME in
          KEIN.EINTRAG)
              # Telefonbuch leer
              if [ -z "$FBTB" ]; then
                  DBOXMESSAGE="$CID%20--%20$DBOX_DATE"
              else
                  # Telefonbucheintrag vorhanden
                  DBOXMESSAGE="$FBTBDBOX%20--%20$CID%20--%20$DBOX_DATE"
              fi
              ;;
          anonym)
              # Anonymer Anruf
              DBOXMESSAGE="Der%20Teilnehmer%20hat%20die%20Nr.%20unterdr³ckt%20--
%20$DBOX_DATE"
              ;;
          *)
              # Normaler Anruf mit Online-Eintrag
              DBOXMESSAGE="$FBTBDBOX%20--%20$CID%20--%20$MYNAMEDBOX1$%20--%20$DB
OX_DATE"
              ;;
      esac

      # Nachrichten-Syntax f³r E1 oder E2 festlegen
      if $isE2; then
          DBOX_POPUP="http://$dboxUSER:$dboxPASS@$dboxip/web/message?text=$DBOX_
MESSAGE&type=1&timeout=$dboxDURATION"
      else
          DBOX_POPUP="http://$dboxUSER:$dboxPASS@$dboxip/cgi-bin/xmessage?captio
n=Anruf&body=$DBOXMESSAGE&timeout=$dboxDURATION"
      fi
      # Nachricht ausgeben
      wget -q -O /dev/null "$DBOX_POPUP"
      if $DEBUG ; then echo "wget -q -O /dev/null $DBOX_POPUP"; fi
    fi
}

f_mail(){
  if [ "$MAIL" = "ON" ]; then
      ALLTOGETHER="-f '"Fritz!Box" <[email protected]>' -t "$TOMAILADR
" -m $MAILLOGIN -i '/var/tmp/calllog1.txt' -a $MAILLOGINNAME -w $MAILLOGINPW"

      # Wenn eine Datei $MYNAME.vcf existiert
      if [ -f /var/tmp/$MYNAME.vcf ]; then
          /sbin/mailer \
              -s "CALL: $MYNAME $CID an $MSN `date +\"%d.%m.%y %H:%M\"` ($LINE)
$4" \
              $ALLTOGETHER \
              -d /var/tmp/$MYNAME.vcf
          rm -f /var/tmp/$MYNAME.vcf > /dev/null
      else
          /sbin/mailer \
              -s "CALL: $MYNAME $CID an $MSN `date +\"%d.%m.%y %H:%M\"` ($LINE)
$4" \
              $ALLTOGETHER
      fi
  fi
}

f_echofindings(){
    if $COMMANDL; then
        echo $MYURL
        echo $MYNAME
        echo $MYNAME1
        echo $BASEURL
        echo $SEARCHI
    fi
}

f_loadvcard(){
  wget -O /var/tmp/tmp.vcf "$BASEURL$MYURL"
  grep -v "URL;" /var/tmp/tmp.vcf | grep -v "NOTE;" | grep -v "END:VCARD" | sed
's/^N:\([a-zA-Z]*\) \([a-zA-Z]*\).*/N:\1;\2/' | tr -d '\t' >/var/tmp/$MYNAME.vcf
  grep "NOTE;" /var/tmp/tmp.vcf >$TMPF3
  cat $TMPF3 | sed 's/^.*\/?//g' | sed 's/\&mt.*//g' | sed 's/3D//g' >$TMPF4
  LAT=$( cat $TMPF4 | sed 's/lat=\([0-9]*\)\.\([0-9]*\)\&lon=\([0-9]*\)\.\([0-9]
*\).*/\1.\2/' )
  LON=$( cat $TMPF4 | sed 's/lat=\([0-9]*\)\.\([0-9]*\)\&lon=\([0-9]*\)\.\([0-9]
*\).*/\3.\4/' )
}

# Falls notwendig, pr³fe in online Vereichnis DAS TELEFONBUCH
# --> nicht aktiv!!!
#
# if [ "$daten" = "0" ]; then
#     url="http://www2.dastelefonbuch.de/?la=de&bi=15&kw=$1&cmd=search"
#     wget -q -O tmp.htm "$url"
#     sleep 5 ; daten="5" ; daten=$(cat tmp.htm | grep -c "long hide");
#     if [ "$daten" != "0" ]; then
#       echo "<b>Inhaber: </b><br />" > tmp1.htm
#       cat tmp.htm | sed -n -e '/class="long hide"/,/div/p' >> tmp1.htm
#       cat tmp.htm | sed -n -e '/class="no-icon"/,/div/p' >> tmp1.htm
#       output=$(cat tmp1.htm);
#     else
#       output="Der Anschlussinhaber konnte nicht ermittelt werden." ; echo -e "
`date +\"%y.%m.%d-%H:%M\"` - auf MSN: $MSN - no result in T - Com Database  - CI
D: $CID" >> ${BLLOG} ;
#     fi
#     if [ "$DEBUG" = "ON" ]; then echo "T-Com ergab: OUTPUT=$output , daten=$da
ten"; fi
# fi

#########################################################

if $COMMANDL; then
    echo "######################################################################
###"
    echo "`date +\"%d.%m.%y %H:%M\"` - Anruf von $CID ($FBTB) an $MSN ($LINE) $4
"
    echo
fi

if [ -z "$CID" ]; then
   MYNAME="anonym";
   if $COMMANDL; then echo "Anonymer Anruf!"; fi
else
  # Pr³fung 1 - GoYellow.de
  BASEURL="http://www.goyellow.de"
  SEARCHI="inverssuche/?TEL="
  TMPF1=/var/tmp/tmpc.txt
  TMPF2=/var/tmp/tmpcc.txt
  TMPF3=/var/tmp/maps.tmp
  TMPF4=/var/tmp/maps1.tmp
  BBMAPSURL="http://maps.BlackBerry.com"
  GMAPSURL="http://maps.google.com"
  CR='\015'

  if $COMMANDL; then
      echo "===================================="
      echo "Auswertung $BASEURL ..."
  fi
  # Online Abfrage
  wget -q -O $TMPF1 "$BASEURL/$SEARCHI$CID"
  # Visitenkarte abfragen
  cat $TMPF1 | grep "Eine Visitenkarte" | sed '2,50d' >$TMPF2
  MYURL=$( cat $TMPF2 | sed -e 's/^.*href=\"//g' | sed -e 's/\">.*//g' )
  MYNAME=$( cat $TMPF2 | sed -e 's/^.*von //g' | sed -e 's/\([a-zA-Z0-9]*\) \([a
-zA-Z0-9]*\).*/\2_\1/' )
  MYNAME1=$(echo $MYNAME | sed 's/_/ /g')

  # Wenn kein Visitenkarte vorhanden, weitere Kontaktdaten abfragen
  if [ "$MYURL" = "" ]; then
    cat $TMPF1 | grep 'title\=\"Weitere Kontaktdaten' | sed '2,50d' >$TMPF2
    MYURL1=$( cat $TMPF2 | sed 's/^<a href="\/upgrade?q=\([0-9a-z]*\).*/\1/' )

    # Wenn keine Kontaktdaten vorliegen
    if [ "$MYURL1" = "" ]; then
       FOUND="N"
       MYNAME="KEIN.EINTRAG"
       MYNAME1="Kein Eintrag"
       if $COMMANDL; then echo "kein Eintrag! - $BASEURL"; fi
    else
        # Kontaktdaten abfragen (weiterer Versuch)
        echo "next try: $BASEURL/upgrade?q=$MYURL1"
        wget -q -O $TMPF1 "$BASEURL/upgrade?q=$MYURL1"
        cat $TMPF1 | grep "Eine Visitenkarte" | sed '2,50d' >$TMPF2
        MYURL=$( cat $TMPF2 | sed -e 's/^.*href=\"//g' | sed -e 's/\".*//g' )
        MYNAME=$(cat $TMPF2 | sed -e 's/^.*von //g' | sed -e 's/\([a-zA-Z0-9]*\)
 \([a-zA-Z0-9]*\).*/\2_\1/' | sed 's/,/_/g' )
        MYNAME1="$(echo $MYNAME | sed -e 's/_/ /g')"
        FOUND="Y"
        f_echofindings

        # Visitenkarte holen
        f_loadvcard
    fi
  else
    FOUND="Y"
    f_echofindings
    f_loadvcard
  fi
fi

# Pr³fung 2
#Falls notwendig, pr³fe bei KLICKTEL
#if [ "$MYNAME1" = "Kein Eintrag" -a -z "$FBTB" ]; then
if [ "$MYNAME1" = "Kein Eintrag" ]; then
    BASEURL="http://www.klicktel.de"
    url="$BASEURL/inverssuche/index/search?method=searchSimple&_dvform_posted=1&
phoneNumber=$1"

    if $COMMANDL; then
        echo "===================================="
        echo "Auswertung $BASEURL ..."
    fi

    wget -q -O /var/tmp/tmp.htm "$url"
    #sleep 5
    #tbname=$(cat tmp.htm | grep "namelink" | sed 's/<[^<]*>/\ /g;s/  //;s/ /, /
');
    MYNAME="$(cat /var/tmp/tmp.htm | grep namelink | sed 's/<[^<]*>/\ /g; s/^[ \
t]*//g; s/\([a-zA-Z]*\) \([a-zA-Z]*\)/\2_\1/g')"

    # Falls die Variable leer ist
    if [ -z "$MYNAME" ]; then
        FOUND="N"
        MYNAME="KEIN.EINTRAG"
        MYNAME1="Kein Eintrag"
        if $COMMANDL; then echo "kein Eintrag! - $BASEURL"; fi
    else
        FOUND="Y"
        MYNAME1="$(echo $MYNAME | sed 's/_/ /g')"
    fi

    #adress=$(cat tmp.htm | sed 's!/!!g' | sed -n '/p class="data track"/,/p>/p'
 | sed '/p class="data track"/d;$d' | sed 's!<br >! <br />!g');
    #tbnum=$( cat tmp.htm | grep "phoneNumber" | sed 's/"phoneNumber" value="/ #
/;s/.*\#//;s/"/ # /;/^#/d;s/#.*$//g;s/ //g');
    #output="Inhaber: <b> <br />$tbname </b> <br />$adress <br />Tel.:$tbnum"
    #if [ -z "$tbname" ] ; then daten="0" ; output="Der Anschlussinhaber konnte
nicht ermittelt werden." ; echo -e "`date +\"%y.%m.%d-%H:%M\"` - auf MSN: $MSN -
 no result in KlickTel Database - CID: $CID" >> ${BLLOG} ; fi
    if $DEBUG ; then echo "KlickTel ergab: tbname=$tbname"; fi
fi

echo $MYNAME1 >/var/tmp/calllog1.txt
echo $CID >>/var/tmp/calllog1.txt

if [ "$FOUND" = "Y" ]; then
    echo $BBMAPSURL\?lat\=$LAT\&lon\=$LON\&z=2 >>/var/tmp/calllog1.txt

    # Visitenkarte erstellen
    echo -n NOTE\;ENCODING\=QUOTED\-PRINTABLE:$BBMAPSURL\?lat\=3D$LAT\&lon\=3D$L
ON\&z=3D2 >>/var/tmp/$MYNAME.vcf
    cat /var/flash/CRLF.txt  >> /var/tmp/$MYNAME.vcf
    echo "END:VCARD" >>/var/tmp/$MYNAME.vcf
    cat /var/flash/CRLF.txt >> /var/tmp/$MYNAME.vcf
    cat /var/flash/CRLF.txt >>/var/tmp/calllog1.txt

    echo "Alternativ Gmaps URL" >>/var/tmp/calllog1.txt
    echo $GMAPSURL/\?q\=$LAT,$LON >>/var/tmp/calllog1.txt
    cat /var/flash/CRLF.txt >>/var/tmp/calllog1.txt
#    echo "---- debug info: -------" >>/var/tmp/calllog1.txt
#    echo "$BASEURL$MYURL" >>/var/tmp/calllog1.txt
fi

# Auswertung der Online-Abfrage ausgeben
if [ "$MYNAME" = "anonym" ]; then
    if $COMMANDL; then echo "--- anonym"; fi

    f_dbox
    f_mail
    exit
fi

if [ "$MYNAME" = "KEIN.EINTRAG" ]; then
    if $COMMANDL; then echo "--- kein eintrag"; fi

    f_dbox
    f_mail
    exit
fi

if $COMMANDL; then echo "--- vcf: $MYNAME.vcf"; fi

f_dbox
f_mail#
 
Script sieht soweit gut aus. setz mal bitte DEBUG auf "true" und verbinde dich per telnet. Dann einen Testanruf machen und die Ausgabe hier posten. Bitte in Code-Tags. Ich check später mal die Zeilenumbrüche, vielleicht liegts da dran, glaub ich aber eher nicht.
 
Die ersten Zeilen sehen jetzt so aus:

#!/bin/sh

# Debug aktivieren - true/false
DEBUG="true"

# Ausgabe auf der Kommandozeile - true/false
COMMANDL="false"

# Email schicken bei Anruf - ON/OFF
MAIL="ON"

# DBox-Ausgabe der Anrufe - ON/OFF
DBOX="OFF"

Wenn ich vom Handy aus anrufe, kommt folgendes im Telnetfenster:

#
#
: not foundh/calllog: line 2:
: not foundcalllog: line 5:
: not foundcalllog: line 8:
: not foundcalllog: line 11:
: not foundcalllog: line 14:
: not foundcalllog: line 20:
: not foundcalllog: line 27:
: not foundcalllog: line 35:
/var/flash/calllog: line 56: syntax error: word unexpected (expecting "in")
Mar 20 08:41:09 telefon[1374]: SIGCHLD received!

#

Ich sehr da erstmal keine Veränderung.

Frank
 
füge mal bitte
Code:
set -xv
in die 2. Zeile des Scripts ein und versuchs nochmal. Weiß nicht, wo der Fehler liegen könnte, bei mir läuft das Script wunderbar. Was mich wundert, ist, dass es einen Fehler in Zeile 2, 5, 8, usw. gibt, da aber nix drin steht. Welchen Editor benutzt du, um die Dateien zu bearbeiten? Im Zweifelsfall Notepad++. Achte mal bitte drauf, dass Unix-Zeilenumbrüche aktiviert sind.
 
Zuletzt bearbeitet:
So, ich habe das Script wie folgt geändert:

#!/bin/sh
set -xv
# Debug aktivieren - true/false
DEBUG="true"

# Ausgabe auf der Kommandozeile - true/false
COMMANDL="false"

# Email schicken bei Anruf - ON/OFF
MAIL="ON"


Wenn ich anrufe, steht in der Telnet Box

#
# /var/flash/calllog: set: line 2: illegal option -
Mar 20 15:31:17 telefon[1374]: SIGCHLD received!

#

Welchen Editor soll ich am besten unter Windows XP nutzen und unter welcher Kodierung soll ich speichern?

Wo in Notepad++ kann ich die Unix-Zeilenumbrüche aktivieren? Ich finde die Einstellung nicht.

Frank
 
Zuletzt bearbeitet:
Hi,
es gibt den vi (VIM) auch für Windows! Mit dem kannst du nichts falsch machen ;-)

Alex
 
@Solo0815

Ist es möglich mit Deinem Script noch zusätzlich zu Vcard noch eine "Nahname.lmx" Datei per Email zu schicken? In diesem Format?

<?xml version="1.0" encoding="UTF-8"?>
<lm:lmx xmlns:lm="http://www.nokia.com/schemas/location/landmarks/1/0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nokia.com/schemas/location/landmarks/1/0 lmx.xsd">
<lm:landmarkCollection>
<lm:landmark>
<lm:name>Nachname</lm:name>
<lm:coordinates>
<lm:latitude>latitude</lm:latitude>
<lm:longitude>longitude</lm:longitude>
</lm:coordinates>
<lm:addressInfo>
<lm:country>Deutschland</lm:country>
<lm:city>Stadt</lm:city>
<lm:postalCode>PLZ</lm:postalCode>
<lm:district>Stadt</lm:district>
<lm:street>Straße</lm:street>
</lm:addressInfo>
</lm:landmark>
</lm:landmarkCollection>
</lm:lmx>
 
Zuletzt bearbeitet:
@Frank_online:
Versuch mal vi für Windows oder Notepad++
Script _neu_ reinkopieren, anpassen und speichern. Hast du nen USB-Stick an der FB?

@Heimatkanal:
Ich bau das am WE mal ein, wenn ich dazu komme ;)
 
Wenn ich es schaffe, werde ich das heute Abend nochmals mit VIM machen. Aber nochmal die Frage: Unter welcher Kodierung soll ich das speichern?

An der FB habe ich einen USB-Stick. Bisher mache ich es so, dass ich die Datei lokal auf dem Notebook ändere, dann per FTP auf den USB-Stick kopiere und dann mit cat /var/........./calllog > /var/flash/calllog kopiere. Zumindest mit dem (bis auf die Rückwärtssuche) funktionierenden Script klappt das problemlos.

Frank
 
Inverssuche geht nicht mehr..

Hallo,

aus irgendeinem Grund funktioniert die Inverssuche bei mir nicht mehr und mir ist nicht klar, weshalb:

Code:
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/|"$1"//"`;
	fi	  
 
	if [ -z "$name" ]
		then
		case "$caller" in
			0041*)
                               # geht nicht
				url="http://mobile.tel.local.ch/de/q/?what=$1&where=&type%5B%5D=restyp%5B%5D=bus";
				name=$(wget -q -O - "$url" | grep -A 1 class=\"short\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g;s/[^ -~]//g');
				echo bin in Ch $name $1 $caller
				;;
			0043*) 
                               # geht nicht
				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=\"short\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g;s/[^ -~]//g')
				echo bin in AT $name $1 $caller
					;;

			*)
						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;' | tr "\015" "\012")	
				# das Telefonbuch geht nicht !!!!
						# 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"
						# name=$(wget -q -O - "$url" | grep -A 1 class=\"short\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g;s/[^ -~]//g')
						
						# echo bin in DE1  $name $1 $caller
						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
                echo ""$name"| "$1"" >> /var/media/ftp/Corsair-FlashVoyager-01/phonebook.txt ;
		fi
	fi		
fi

Sieht einer von Euch den Fehler für dastelefonbuch?

Und wenn einer den richtigren Aufruf für Östereich oder Schweiz hat, das wäre auch toll.

Gruß und Dank
 
Zuletzt bearbeitet:
...Aufruf für CH:

url="http://mobile.tel.local.ch/de/q/?what=$callerid&where=&type%5B%5D=res&type%5B%5D=bus";

...oder einfach
url="http://mobile.tel.local.ch/de/q/?what=$callerid";

bester Gruss, James


P.S. bus in der ersten Zeile ohne Leerzeichen. Weiss nicht, warum das Forum es anders darstellt???
 
könnte man noch einen msn filter einbauen?

meine damit msn 1 --- > email an adresse 1
msn 2 email an adresse 2
 
Hallo,

ich habe ein Paar Probleme mit der Darstellung der Email.

Mein Code der calllog lautet
Code:
# Einstellungen
#VZDIR="/var/tmp"  
VZDIR="/var/media/ftp/cnmemory-cnmemory-01"        # Arbeitsverzeichniss
TMPDIR="/var/tmp/calllog"        # Tempdir
BLLOG="${VZDIR}/black-log.txt"                # Logfile nicht gefundener Einträge
DEBUG="ON"                                        # Konsolen Debug ausgabe zum testen
SMSGW="OFF"                                        # SMS zustellung
VORWAHL="xxxx"
#############################################
# Script Variabeln
CID=$1                                            # CID die ruft
MSN=$2                                            # MSN die gerufen wird
LINE=$3                                            # Leitung die gerufen wird
FBTB=$5                                            # Name des internen Telefonbuchs, falls vorhanden
#############################################
# Script Initialisierung
if [ "$DEBUG" = "ON" ] ; then echo "touch tmp.htm + touch tmp1.htm + smstext.txt" ; fi
if [ -d ${TMPDIR} ] ; then if [ "$DEBUG" = "ON" ] ; then echo "Verzeichnis /var/tmp/calllog schon vorhanden" ; fi ; else mkdir ${TMPDIR}; fi
touch ${TMPDIR}/tmp.htm 
touch ${TMPDIR}/tmp1.htm 
touch ${TMPDIR}/smstext.txt 
touch ${TMPDIR}/result.htm

if [ "$DEBUG" = "ON" ] ; then echo "Script start mit CID=$1 , MSN=$2 , LINE=$3 , FBTB=$5" ; fi

if [ "$CID" = "" ] ; then 
    CID="Unbekannt"
    output="<b>Der Anrufer hat seine Telefonnummer nicht &uuml;bermittelt</b>."
    if [ "$DEBUG" = "ON" ] ; then echo "Die Rufnummer wurde nicht übergeben - Suche übersprungen." ; fi
    else
    # Prüfe in Whitelist & internem Telefonbuch
    daten=$(cat ${VZDIR}/whitelist.txt | grep -c $1);
    if [ "$daten" != "0" ] ; then output=$(cat ${VZDIR}/whitelist.txt | grep $CID | sed 's/;/+/g;s/[^+]*+//;s/^/Inhaber: <br><b>/;s!+!</b>+!;s!+!<br />!g'); fi
    if [ "$daten" = "0" ] ; then output="Inhaber: $5" ; fi
    if [ "$5" != "" ] ; then daten="1" ; fi
    if [ "$DEBUG" = "ON" ] ; then echo "Whitelist ergab: Output=$output , Daten=$daten" ; fi
    # Falls notwendig, prüfe in online Vereichnis KLICKTEL
    if [ "$daten" = "0" ] ; then url="http://www.klicktel.de/inverssuche/index/search?method=searchSimple&_dvform_posted=1&phoneNumber=$1" ; wget -q -O ${TMPDIR}/tmp.htm "$url" 
            sleep 5 ; daten="5" ;
            tbname=$(cat ${TMPDIR}/tmp.htm | grep "namelink" | sed 's/<[^<]*>/\ /g;s/  //;s/ /, /');
            adress=$(cat ${TMPDIR}/tmp.htm | sed 's!/!!g' | sed -n '/p class="data track"/,/p>/p' | sed '/p class="data track"/d;$d' | sed 's!<br >! <br />!g');
            tbnum=$( cat ${TMPDIR}/tmp.htm | grep "phoneNumber" | sed 's/"phoneNumber" value="/ #/;s/.*\#//;s/"/ # /;/^#/d;s/#.*$//g;s/ //g');
            output="Inhaber: <b> <br />$tbname </b> <br />$adress <br />Tel.:$tbnum"
            if [ -z "$tbname" ] ; then daten="0" ; output="Der Anschlussinhaber konnte nicht ermittelt werden." ; echo -e "`date +\"%y.%m.%d-%H:%M\"` - auf MSN: $MSN - no result in KlickTel Database - CID: $CID" >> ${BLLOG} ; fi
    if [ "$DEBUG" = "ON" ] ; then echo "KlickTel ergab: OUTPUT=$output , daten=$daten" ; fi
    fi
    # Falls notwendig, prüfe in online Vereichnis DAS TELEFONBUCH
    if [ "$daten" = "0" ] ; then url="http://www2.dastelefonbuch.de/?la=de&bi=15&kw=$1&cmd=search" ; wget -q -O ${TMPDIR}/tmp.htm "$url" 
            sleep 5 ; daten="5" ; daten=$(cat ${TMPDIR}/tmp.htm | grep -c "long hide");
                if [ "$daten" != "0" ] ; then 
                echo "<b>Inhaber: </b><br />" > ${TMPDIR}/tmp1.htm
                cat ${TMPDIR}/tmp.htm | sed -n -e '/class="long hide"/,/div/p' >> ${TMPDIR}/tmp1.htm
                cat ${TMPDIR}/tmp.htm | sed -n -e '/class="no-icon"/,/div/p' >> ${TMPDIR}/tmp1.htm
                output=$(cat ${TMPDIR}/tmp1.htm);
                else output="Der Anschlussinhaber konnte nicht ermittelt werden." ; echo -e "`date +\"%y.%m.%d-%H:%M\"` - auf MSN: $MSN - no result in T - Com Database  - CID: $CID" >> ${BLLOG} ;
                fi
            if [ "$DEBUG" = "ON" ] ; then echo "T-Com ergab: OUTPUT=$output , daten=$daten" ; fi
    fi
fi


BODYHEAD="<html><body><b> <font face="arial" size="3"> Telefonsystem | Anrufinformation:</b><br/><br/> $output  <br/><br/> <font color="#666666"> Von Nummer: $CID <br /> Auf Leitung:   $2 <br/>  Um: `date -R` CET <br /> Status: $3 $4 <br/><br /> <br /> <br />" 

echo -e $BODYHEAD > ${TMPDIR}/result.htm
#############################################
# Adressierungseinstellung
# Muster:
#                MSN3 | MSN4 | MSN5 )
#                [email protected]
#                [email protected]
# Statt TOSMS: SMSGW="OFF"
#                ;;
case "$2" in
                49640xxxx | 496403xxx )
                [email protected]
                SMSGW="OFF"
                ;;
                TELEFONNUMMER2 )
                [email protected]
                [email protected]
                SMSGW="OFF"
                ;;
                esac ; 
                if [ "$DEBUG" = "ON" ] ; then echo "E-Mail für $TOADDRESS vorbereitet." ; fi
                if [ -z "$TOADDRESS" ] ; then exit ; fi
#############################################
# Mailer
/sbin/mailer \
      -s "$output $CID auf $MSN um `date +\"%H:%M am %d.%m.%y\"`"\
       -f 'Fritz!Box Alex |  <[email protected]>' \
        -t "$TOADDRESS" \
         -l 465 \
      -i ${TMPDIR}/result.htm
#############################################
# SMS Service

#############################################
# System bereinigen
if [ "$DEBUG" = "ON" ] ; then 
    echo "Mail verarbeitet, löschen unterbrochen."
   else
    rm ${TMPDIR}/*.htm
    rm ${TMPDIR}/*.txt

fi
exit 0


Und zwar sieht die Email bei Anruf einer Nummer, welche im Telefonbuch der Fritz gefunden wird so aus.

Code:
Betreff: Inhaber: Wohnung 0640xxx auf 49640xxx um 10:43 am 16.04.11
Um im Text
HTML:
Telefonsystem | Anrufinformation:

Inhaber: Wohnung 

Von Nummer: 0640xxx 
Auf Leitung: 49640xxx 
Um: Sat, 16 Apr 2011 10:43:00 +0200 CET 
Status: SIP2#49640xxxx


Wenn jetzt jedoch eine Unterdrückte Nummer anruft dann sieht es so aus:
Code:
Betreff: <b>Der Anrufer hat seine Telefonnummer nicht &uuml;bermittelt</b>. Unbekannt auf 49640xxx um 11:52 am 17.04.11

Und der Text ist in Ordnung
HTML:
Telefonsystem | Anrufinformation:

Der Anrufer hat seine Telefonnummer nicht übermittelt. 

Von Nummer: Unbekannt 
Auf Leitung: 49640xxx 
Um: Sun, 17 Apr 2011 11:52:39 +0200 CET 
Status: SIP0#49640xxx


3. Fall, Nummer wurde im Telefonbuch Internet gefunden, dann kommt das große Problem.

Code:
Betreff: =?iso-8859-1?Q?Inhaber: <b> <br />=09=09Schlier ,  =09=09 </b> <br />=09=09Schifxxxx=2E 56 <br />

Und im Text:

HTML:
=09=0935XX PXXXX <br />Tel=2E:0640XXXX5 0640XXX5 auf 49640XXXX um 11:15 am 17=2E04=2E11?=
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html><body><b> <font face=3Darial size=3D3> Telefonsystem =7C Anrufinform=
ation:</b><br/><br/> Inhaber: <b> <br /> Schlier,  </b> =
<br /> SchiffenXXXX=2E 56 <br /> 35XXX PXXX <br />Tel=2E:0640XXX=
5 <br/><br/> <font color=3D=23666666> Von Nummer: 0640XXX5 <br /> Auf L=
eitung: 49640XXX <br/> Um: Sun, 17 Apr 2011 11:15:27 +0200 CET <br />=
Status: SIP0=2349640XXX <br/><br /> <br /> <br />

Es sieht also fast so aus, als würde der Betreff Text im Body weiter geschrieben werden.

Das Problem liegt wohl in der Formatierung. Könnt Ihr mir bitte helfen.

Lieben Gruss
 
Zuletzt bearbeitet:
Hallo,

scheinbar funktioniert beim (wirklich sehr schönen) Script von Lemur die Rückwärtssuche zwar noch bei Klicktel, aber nicht mehr bei www.telefonbuch.de. Nach meinen Untersuchungen sieht's folgendermaßen aus:

- Die Abfrage der Rufnummer funktioniert (in tmp.htm steht das richtige Ergebnis, also Name und Adresse des gewünschten Anschlussinhabers)
- Der anschließende grep auf den String "long hide" schlägt aber fehl, weil offensichtlich das HTML-Ergebnis der Webseite geändert wurde. Deshalb kommt das Script zum Ergebnis, dass kein Anschlussinhaber ermittelt werden konnte.

Konkret geht's um folgende Codezeilen:

if [ "$daten" = "0" ] ; then url="http://www2.dastelefonbuch.de/?la=de&bi=15&kw=$CID&cmd=search" ; wget -q -O ${VZDIR}/tmp.htm "$url"
sleep 5 ; daten="5" ; daten=$(cat ${VZDIR}/tmp.htm | grep -c "long hide");
if [ "$daten" != "0" ] ; then
echo "<b>Inhaber: </b><br />" > ${VZDIR}/tmp1.htm
cat ${VZDIR}/tmp.htm | sed -n -e '/class="long hide"/,/div/p' >> ${VZDIR}/tmp1.htm
cat ${VZDIR}/tmp.htm | sed -n -e '/class="no-icon"/,/div/p' >> ${VZDIR}/tmp1.htm
output=$(cat ${VZDIR}/tmp1.htm);
else output="Der Anschlussinhaber konnte nicht ermittelt werden." ; echo -e "`date +\"%y.%m.%d-%H:%M\"` - auf MSN: $MSN - no result in T - Com Database - CID: $CID" >> ${BLLOG} ;
fi
if [ "$DEBUG" = "ON" ] ; then echo "T-Com ergab: OUTPUT=$output , daten=$daten" ; fi
fi


Kann jemand das bestätigen, und gibt's vielleicht schon eine Lösung?

Vielen Dank...
 
Wo finde ich eine Erläuterung der Aufrufparameter von calllog?

$1 Nummer des Anrufenen
$2 Nummer des Angerufenen
$3 ???
$4 ???
$5 ???
usw.

Marcus
 
Wo finde ich eine Erläuterung der Aufrufparameter von calllog?
In den zurückliegenden Beiträgen.

Auszug aus einem fremden Script:
Code:
# Script Variablen
CID=$1                     # CID die ruft
MSN=$2                    # MSN die gerufen wird
LINE=$3                    # Leitung die gerufen wird
BUSY=$4			# BUSY if Leitung Busy on Busy
FBTB=$5                   # Name des internen Telefonbuchs, falls vorhanden
 
Zuletzt bearbeitet:
Hallo zusammen!

Kennt jemand einen Free-SMS Dienst, über den man die Anrufe auch kostenfrei aufs Handy schicken kann. Ich dachte dabei an einen HTTP-POST Aufruf, den man mit curl absetzen könnte. Hat sich damit schon mal jemand beschäftigt?
 

Zurzeit aktive Besucher

Neueste Beiträge

Statistik des Forums

Themen
244,903
Beiträge
2,220,547
Mitglieder
371,645
Neuestes Mitglied
Duki
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.