Vielen Dank für dieses Script - sehr hilfreich !
Ich habe es noch etwas geändert:
1. Ich brauche kein SMS - unnötige kosten, lieber bekomme ich die nachricht nur per Mail, bzw, auf meinem Blackberry
2. Das lookup im lokalen Telefonbuch habe ich abgeschaltet, da ich lieber sehen möchte wer anruft, bevor ich drangehe (kann aber natürlich leicht wieder eingeschaltet werden durch Entfernung der Kommentarzeichen)
3. Statt nur den Namen, so das die Auskunft hergibt, ist eine VCard besser - mit Strasse, PLZ und Ort, denn, Die kann man gleich in sein Adressbuch importieren.
Anbei Script, hoffentlich funktionierts auch bei anderen:
Code:
export REQUEST_METHOD="POST"
export REMOTE_ADDR="192.168.x.y"
export CONTENT_TYPE="application/x-www-form-urlencoded"
POST_DATA="login:command/password=secret"
export CONTENT_LENGTH=${#POST_DATA}
#echo -n "$POST_DATA" | /usr/www/html/cgi-bin/webcm > /dev/null
#/usr/bin/wget -O /dev/null "http://192.168.x.y/cgi-bin/webcm?getpage="../html/de/menus/menu2.html\&var:lang=de\&var:menu=fon\&varagenam e=foncalls""
#echo "nun 5s warten"
#sleep 5
#! /bin/sh
CID=$1
name=""
FOUT="/var/tmp/calllog.vcf"
SFILE=/var/tmp/stra.txt
TFILE=/var/tmp/tel.html
ParseTelefonbuch() {
export REQUEST_METHOD="GET"
export REMOTE_ADDR="192.168.x.y"
export QUERY_STRING="getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=fon&var:pagename=fonbuch"
# cd /usr/www/html/cgi-bin
# ./webcm |
# sed -n 's/^.*document.write(TrFon(.*", "\(.*\)", ".*'$*'.*/\1/p'
}
if [ -z "$CID" ]
then
CID="unbekannt";
name="-"
echo "BEGIN:VCARD" >$FOUT
echo "VERSION:3.0" >>$FOUT
echo "N:unknown;;;;" >>$FOUT
echo "FN:unknown" >>$FOUT
echo "TEL;type=WORK;unknown" >>$FOUT
echo "END:VCARD" >>$FOUT
VCFN=/var/tmp/anonymous.vcf
else
name=`ParseTelefonbuch $CID`
if [ -z "$name" ]
then
url="http://www.dasoertliche.de/?form_name=search_inv&page=RUECKSUCHE&context=RUECKSUCHE&action=STANDARDSUCHE&la=de&rci=no&ph=$CID"
wget -q -O - "$url" >$TFILE;
name=$(cat $TFILE | grep class=\"entry\" | sed -e 's/<[^<]*>/\ /g;s/^[^a-zA-Z0-9]*//;s/ /, /g');
cat $TFILE | sed -n -e '/\"entry\"/,/<br\/>/p' | sed -n -e '/<br\/>/p' | sed -e 's/ / /g;s/<br\/>//g' >$SFILE;
STR=$(sed -e 's/,.*//g;s/^[^a-zA-Z0-9]*//' $SFILE);
ORTP=$(sed -e 's/^.*,//g;s/^[^a-zA-Z0-9]*//' $SFILE);
PLZ=$(echo $ORTP | sed -e 's/ .*$//g');
ORT=$(echo $ORTP | sed -e 's/^.* //g');
if [ -z "$name" ]
then
name="kein Eintrag"
echo "BEGIN:VCARD" >$FOUT
echo "VERSION:3.0" >>$FOUT
echo "N:$CID;;;;" >>$FOUT
echo "FN:$CID" >>$FOUT
echo "TEL;type=WORK:$CID" >>$FOUT
echo "END:VCARD" >>$FOUT
VCFN=/var/tmp/unknown.vcf
else
echo "BEGIN:VCARD" >$FOUT
echo "VERSION:3.0" >>$FOUT
echo "N:$name;;;;" >>$FOUT
echo "FN:$name" >>$FOUT
echo "TEL;type=WORK:$CID" >>$FOUT
echo "ADR;type=WORK;type=pref:;;$STR;$ORT;;$PLZ;">>$FOUT
echo "END:VCARD" >>$FOUT
VCFN=/var/tmp/$(echo $name | sed -e 's/ /\./g').vcf
fi
fi
fi
echo $name >/var/tmp/calllog1.txt
echo "#########################"
echo "`date +\"%d.%m.%y %H:%M\"` - Anruf von $CID ($name) an $2 ($3) $4"
echo
mv /var/tmp/calllog.vcf $VCFN
/sbin/mailer \
-s "CALL: $name $CID an $2 `date +\"%d.%m.%y %H:%M\"` ($3) $4" \
-f '"Fritz!Box" <[email protected]>' \
-t "[email protected]" \
-m mailserver.domain.com \
-a username \
-w "password" \
-i '/var/tmp/calllog1.txt' \
-d $VCFN
rm -f $VCFN
# 2> /dev/null
EDIT: Da habe ich noch einen Bug gefunden:
Bitte, die zeile ( 2te von unten) ergänzen (rm -f $VCFN). Das stand am Anfang nicht drin.
Sonst wird das /Var/tmp irgendwann mal voll mit .vcf Leichen sein.