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

tzippy

Neuer User
Mitglied seit
6 Nov 2010
Beiträge
63
Punkte für Reaktionen
0
Punkte
6
Denkbar wäre auch eine Push Notification auf dem iPhone via Prowl App. Es reicht zB ein einfaches HTTP POST mit curl abzusetzen und man bekommt eine Push benachritigung mit benutzerdefinierbarem Text (als post data).
 

ar544

Neuer User
Mitglied seit
12 Jan 2017
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
Liebe Forenmitglieder,

dieser Thread ist schon sehr alt. Mir hat das calllog Script mit Rückwärtssuche immer gute Dienste erwiesen.
Allerdings hat die webseite www.das oertliche.de die Rückantwort geändert, so das ich mit meinem Nichtwissen den Namen nicht mehr auslesen kann.

<a href="http://www.dasoertliche.de/?id=2290078851607329894218&recuid=QX33ISV2AY723I7NTDUGAQJPD4SMOHCHFUXV5CYB&action=58&pagePos=1&dar=1&kw=0800123456789&form_name=detail&lastFormName=search_nat&recFrom=1&hitno=0&orderby=name&ttforderby=rel&buc=2290&showbuc=0&verlNr=102&la=de&page=78&context=11" class="name " onmouseover="" onMouseOut=""><span class="">Mustermann Max&nbsp;</span>

Kann mir einer sagen, wie ich aus diesem langen Einzeiler den Namen hier Mustermann Max auslesen kann?

Danke im Vorraus und lieben Gruß an die Leser.
 

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
12,358
Punkte für Reaktionen
306
Punkte
83
Moin

HTML-Interpreter/Anzeigeprogramm
 

creon

Neuer User
Mitglied seit
20 Jan 2005
Beiträge
107
Punkte für Reaktionen
1
Punkte
18
Du willst im Prinzip ja den Inhalt des "span"-Tag ausfiltern.
Sowas benötigst du also:
http://blog.xig.ch/In-Bash-einen-String-aus-HTML.XML-Tags-extrahieren_137.html

Im konkreten Fall musst du den String also an folgendes sed Kommando übergeben.
sed -n -e 's/.*<span class="">\(.*\)<\/span>.*/\1/p'


Das machst du, indem du ihn in eine Variable schreibst, oder irgendwie anders die Standardausgabe an dieses SED Kommando per Pipe weiterleitest:
j=...
echo $j | sed -n -e 's/.*<span class="">\(.*\)<\/span>.*/\1/p'
 

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
12,358
Punkte für Reaktionen
306
Punkte
83
Das kannste dir auch so...
Code:
view-source:https://mobil.dasoertliche.de/Themen?nummer=08003301000
...im HTML-Anzeigeprogramm angucken.
Ist das überhaupt noch (wohlgeformtes) HTML ?
...sogar mit data: Links.

Ich würde mir...
data-wipeitem=
Code:
wget -qO- http://mobil.dasoertliche.de/Themen?nummer=08003301000|grep -E -o "data-wipeitem.*}"
...vornehmen.
 
Zuletzt bearbeitet:

ar544

Neuer User
Mitglied seit
12 Jan 2017
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
Vielen Dank für die vielen Vorschläge und Hilfe.

Dank Eurer Tipps funktioniert es jetzt so bei mir

url="http://www.dasoertliche.de/Controller?la=de&kw=$caller&form_name=search_nat"
name=$(wget -q -O - "$url" | grep na: | sed -e 's/\ / /g;s/[ ]//g;s/^[ ]//g;s/<[^<]*>//g;s/na:/ /g;s/"//g' | tr "\015" "\012")

Der Name taucht auf der Seite noch ein zweites mal auf, wo das auslesen leichter ist.

Gruß und Dank
 

creon

Neuer User
Mitglied seit
20 Jan 2005
Beiträge
107
Punkte für Reaktionen
1
Punkte
18

ar544

Neuer User
Mitglied seit
12 Jan 2017
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
Liebe Leser,

für das HTTPS Problem gibt es eine Lösung:

https://www.fritzmod.net/tools/wget/

Dort gibt es für alte und neue FritzBoxen ein fertig kompiliertes wget mit SSL.

Bei mir sieht das im calllog jetzt so aus (Niederlande, frankreich, Schweiz, Austria, Deutschlane):

Code:
case "$caller" in
            0031*)
                # echo Niederlande;
                url="https://www.detelefoongids.nl/en/$1/11-2/?oWhat=$1&oWhere="
                name=$(/var/media/ftp/USBStick/bin/wget_v1.14_mipsel -q -O - --no-check-certificate --secure-protocol=auto "$url" | grep -A 1 "<span itemprop=\"name\"" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/[^! -~]//g;s/*//g;');
                ;;
            0033*)
                # echo Frankreich;
                url="https://www.pagesjaunes.fr/annuaireinverse/recherche?quoiqui=$1&proximite=0";
                name=$(/var/media/ftp/USBStick/bin/wget_v1.14_mipsel -U Polipo -q -O - --no-check-certificate --secure-protocol=auto "$url" | grep -A 1 "class=\"denomination-links" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g;s/[^ -~]//g');
                ;;
            0041*)
                # echo bin in Schweiz;
                url="https://tel.search.ch/?tel=$1";
                name=$(/var/media/ftp/USBStick/bin/wget_v1.14_mipsel -q -O - --no-check-certificate --secure-protocol=auto "$url" | grep -A 1 ";private=1" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g;s/[^ -~]//g;s/Details//');
                ;;
            0043*)
                # AUSTRIA allerdings bleiben Hochkommata im NAMEN;
                url="http://www.telefonabc.at/result.aspx?what=$1&where=&exact=False&firstname=&lastname=&appendix=&branch=&p=0&sid=&did=&cc="
                name=$(/var/media/ftp/USBStick/bin/wget_v1.14_mipsel -q -O - --no-check-certificate --secure-protocol=auto "$url" | grep -A 1 "'Lastname':" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g;s/[^! -~]//g;s/-//g;s/!//g;s/ <//g;s/Firstname//g;s/Lastname//g;s/[":]//g')
                ;;
            *)
                # Rest, also BRD;
                url="http://www.dasoertliche.de/Controller?la=de&kw=$caller&form_name=search_nat"
                name=$(wget -q -O - "$url" | grep na: | sed -e 's/\ / /g;s/[    ]//g;s/^[ ]//g;s/<[^<]*>//g;s/na:/ /g;s/"//g' | tr "\015" "\012")
                ;;
esac
Falls es jemand braucht.
In Östereich wird der Name imer in Hochkomata ausgegeben. Dafür hatte ich auf die schnelle keine Lösung gefunden.

Gruß
 

creon

Neuer User
Mitglied seit
20 Jan 2005
Beiträge
107
Punkte für Reaktionen
1
Punkte
18
Code:
# Keine Benachrichtigungen für Anrufe von Werbefritzen mit Tellow Score > 6
score=`wget -qO- http://www.tellows.de/basic/num/$1?xml=0&partner=test&apikey=test123`
score=`echo $score | sed -n -e 's/.*<span id="score">\([0-9]\)<\/span>.*/\1/p'`
if [ $score -ge "7" ]; then
  echo "ATP51 ATD*09 ATH0 ATP1 ATD*09 ATH0" | nc 127.0.0.1 1011
  exit
fi
Hier noch mein Beispielcode, welches einfach auflegt, sofern der Tellow-Score größer als 7 ist.
Was macht das Skript? Es fragt zur Rufnummer den Tellow-Score ab, das ist ein SPAM Indikator. Bei unbewerteten Rufnummern ist der 5. Bei gut Bewerteten ist der < 5 und bei schlecht bewerteten ist der > 5.
Sofern der Wert schlecht ist, wird aufgelegt und das Skript beendet.

Das Beenden hat mich einige Stunden Zeit gekostet, herauszufinden, wie die Kommandos sind.
Man muss letzten Endes von jedem Telefon einmal ein "Catch all" machen, d.h. das Gespräch an sich ziehen und dann auflegen. Ist kein Telefon mehr übrig, wird aufgelegt.
In diesem Fall:
- Nächsten Befehl vom ISDN Telefon ausführen (ATP51)
- Gespräch an sich reißen (ATD*09 -> Dial *09 = Catch All)
- Gespräch auflegen (ATH0)
- Nächsten Befehl vom Fon1 ausführen (ATP1)
- Gespräch an sich reißen (ATD*09)
- Gespräch auflegen (ATH0)


Sofern keine Nummer übertragen wird, wird das Skript schon recht früh am Anfang abgebrochen, weil ich dann keine E-Mail Benachrichtigung benötige – ich kann ja ohnehin nicht zurückrufen.
Wer das nicht hat, sollte das einbetten in:

Code:
if [ $FROM ]; then
   ...
fi
 

creon

Neuer User
Mitglied seit
20 Jan 2005
Beiträge
107
Punkte für Reaktionen
1
Punkte
18
Edit: 2018-05-02 Die Abfrage hat sich erneut geändert.
Sie basiert jetzt zwangsweise auf https, der Rest ist gleich.
Hierfür müsst ihr ein wget nutzen, welches https unterstützt. Ich habe meines heruntergeladen und in /var/media/ftp gespeichert, ausführbar gemacht mit chmod +x wget; selbst kompilieren geht natürlich auch.

Download: https://www.ip-phone-forum.de/threads/aktuelles-wget-für-fritz-box-7390.256038/#post-1888208

Das aktuelle Kommando:
Code:
   name=`/var/media/ftp/wget --no-check-certificate -q -O - "https://www.dasoertliche.de/Controller?la=de&form_name=search_nat&kw=$1" | sed -n '/var handlerData/p' | sed -e "s/',[ ]*'/=/g" | cut -d "=" -f16`
   name=`echo "${name}" | sed -e '{s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'
 
Zuletzt bearbeitet: