Ist wohl wie mit den Frauen... ...muss man nicht verstehen, muss man begreifen :wink:
Das wäre schonmal eine gute Vorraussetzung.
Anstatt jetzt in nem Script "zu pulen" was ich nicht hier habe und daher nicht testen kann und möchte - geb ich Dir einfach mal mein aktuelles, welches auf mehreren meiner Boxen problemlos läuft;
Code:
#!/bin/sh
# Meldung eingehender Anrufe der FB via Mail
# Rev. 04.2010 by Lemur
#############################################
# Einstellungen
VZDIR="/var/media/ftp/uStor01/fb/calllog" # Arbeitsverzeichniss
BLLOG="${VZDIR}/logs/black-log.txt" # Logfile nicht gefundener Einträge
DEBUG="OFF" # Konsolen Debug ausgabe zum testen
SMSGW="OFF" # SMS zustellung
#############################################
# 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 "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 übermittelt</b>."
if [ "$DEBUG" = "ON" ] ; then echo "Die CID 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: <b> <br />$5</b>" ; 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 tmp.htm "$url"
sleep 5 ; daten="5" ;
tbname=$(cat tmp.htm | grep "namelink" | sed 's/<[^<]*>/\ /g;s/ //;s/ /, /');
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" = "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 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 - 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="2"> Telefonsystem | Anrufinformation:</b><br /><br /> $output <br /><br /> <font color="#666666"> Status: $3 $4 <br/> Von Nummer: $CID <br /> Auf Leitung: VORWAHL$2 <br/> Um: `date -R` CET <br /><br /> <br /> <br />"
BODYFOOT="Ein Service der NAME Group 2010 </html>"
echo -e $BODYHEAD > ${VZDIR}/result.htm
echo -e $BODYFOOT >> ${VZDIR}/result.htm
#############################################
# Adressierungseinstellung
case "$2" in
MSN1 | MSN2 )
[email protected]
SMSGW="OFF"
;;
MSN3 | MSN4 | MSN5 )
[email protected]
[email protected]
;;
MSN6 | MSN7 | MSN8 | MSN9 | MSN10 | MSNA )
[email protected]
SMSGW="OFF"
;;
esac ;
if [ "$DEBUG" = "ON" ] ; then echo "E-Mail für $TOADRESS vorbereitet." ; fi
if [ -z "$TOADDRESS" ] ; then exit ; fi
#############################################
# Mailer
/sbin/mailer \
-s "Von $CID auf $MSN um `date +\"%H:%M am %d.%m.%y\"`"\
-f 'Telefonsystem | XXXXX Group <[email protected]>' \
-t "$TOADDRESS" \
-m smtp.server.tld \
-a smtp-auth \
-w smtp-pass \
-l SSL \
-i '/var/media/ftp/uStor01/fb/calllog/result.htm'
#############################################
# SMS Service
if [ "$SMSGW" = "ON" ] ; then
sed -n -f $VZDIR/html2sms.sed $VZDIR/result.htm > $VZDIR/smstext.txt
/sbin/mailer \
-s "auth|pass|gateway=1"\
-f 'Telefonsystem | XXXXX Group <[email protected]>' \
-t "$TOSMS" \
-m smtp.server.tld \
-a smtp-auth \
-w smtp-pass \
-l SSL \
-i '/var/media/ftp/uStor01/fb/calllog/smstext.txt'
fi
#############################################
# System bereinigen
if [ "$DEBUG" = "ON" ] ; then
echo "Mail verarbeitet, löschen unterbrochen."
else
rm ${VZDIR}/*.htm
rm ${VZDIR}/smstext.txt
rm tmp.htm ; rm tmp1.htm
fi
exit 0
Dieses Script hat folgende Besonderheiten:
-Anzupassen sind: Z.6-9, Z.62-72, Z.80-87, Z. 93-99
-Es wird neben dem internen TB eine "whitelist" geprüft, welche bei mir auf dem USB Verzeichnis liegt. Diese Liste enthält Einträge gem.
Code:
NUMMER;NAME, VORNAME;STR;PLZ ORT;;NOTIZ;ggf.weitere Werte mit ";" getrennt (Ein Eintrag p. Zeile)
-Wenn hier kein Eintrag ist, wird bei Klicktel gesucht
-Wenn da kein Eintrag ist, wird bei das Oertliche gesucht,
-Wenn nichts gefunden, wird das i.d. black-log.txt vermerkt
-E-Mails sind HTML kodiert
-SMS ist nach anmeldung bei your-sms.com ebenfalls möglich, dafür TOSMS Empfänger eintragen, und die Zugangsdaten im passenden Mailer ergänzen.
-Debug gibt (wenige) Meldungen auf der Konsole aus, zum Testen ganz nützlich
Ich kann aus zeitlichen Gründen
keinen Support geben, ich habe das Script auch extra ungekürzt gepostet, da ich der Meinung bin, dass es dem Verständnis des Ein oder Anderen ganz nützlich sein kann. Nutzung nach eigenem Ermessen und auf eigene Gefahr.
PS: Muss natürlich ins Calllog. Wer keinen permanenten Speicher will, legt die Pfade einfach nach /var/tmp/
Grüße Lemur