Rückwärtssuche bei dasoertliche.de neues Script

Ich hasse verschiedene bash-Implemetierungen :mad:

Du kannst an der Stelle folgendes tun (Achtung, da kommen gleich zwei Teile nacheinander, Änderungen sind fett

Code:
## Pruefen, ob eine Ermittlungsroutine fuer die Rufnummer vorhanden ist (mit Daten aus Skript)
function check_land {
        index=0
        COUNTRY=""
        while [ "$index" -lt "$CLAND" ]; do
                TEST=`echo $NUMMER | sed -e "s/^\+${CC[$index]}//"`
                 if [ "$TEST"  != "$NUMMER" ]; then
                #if [[ "$NUMMER" =~ ^\+${CC[$index]}.* ]]; then
                        if [ "${NPA[$index]}" != "0" ]; then
                                if [ "${NPA[$index]}" == "NPA_US" ]; then
                                        for i in "${NPA_US[@]}"; do
                                                [B]TEST2=`echo $NUMMER | sed -e "s/^\+${CC[$index]}$i//"`
                                                if [ "$TEST2"  != "$NUMMER" ]; then
                                                #if [[ "$NUMMER" =~ ^\+${CC[$index]}$i.* ]]; then[/B]
                                                        COUNTRY=${LAND[$index]}
                                                        CINDEX=$index
                                                        break
                                                fi
                                        done
                                else
                                        for i in "${NPA_CA[@]}"; do
[B]                                                TEST2=`echo $NUMMER | sed -e "s/^\+${CC[$index]}$i//"`
                                                if [ "$TEST2"  != "$NUMMER" ]; then
                                                #if [[ "$NUMMER" =~ ^\+${CC[$index]}$i.* ]]; then[/B]
                                                        COUNTRY=${LAND[$index]}
                                                        CINDEX=$index
                                                        break
                                                fi
                                        done
                                fi
                        else
                                COUNTRY=${LAND[$index]}
                                CINDEX=$index
                        fi
                fi
                if [ "$CINDEX" -ne "-1" ]; then
                        break
                fi
                let "index = $index + 1"
        done
        if [ $CINDEX -ne -1 ]; then
                echo "Ländererkennung" >> $LOGFILE
                echo "Erkanntes Land: " $COUNTRY >> $LOGFILE
        else
                echo "keine Reverssuche für Land des Anrufers" >> $LOGFILE
        fi
}

Danach probiers noch mal. Das Problem mit Deiner bash-Version dürfte sein, dass sie entweder

- regex nicht beherrscht
- oder eine andere Syntax erwartet

Die Änderung sollte helfen.

@kasper-ls: Falls Du den Thread noch verfolgst: Ich schlage vor, dass Du mal die Umsetzung von regex auf sed in eine neue Version packst, da es hier offenbar einige mit den inkompatiblen bash-Versionen gibt.
 
Klar lese ich noch mit.
Hab leider im Moment aber sehr wenig Zeit.
Werde mich darum kümmern, sobald ich wider mehr Zeit habe.
 
nun läuft es durch ;-)

jedoch :

Code:
asterisk # ./ast_revers.agi 044XXXXXXX
grep: invalid option -- m
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
grep: invalid option -- m
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
SET VARIABLE LONGNAME "kein Eintrag"
SET VARIABLE LONGDETAILS "keine Adresse"
./ast_revers.agi: svdrpsend.pl: command not found
./ast_revers.agi: svdrpsend.pl: command not found
Anruflog=1
asterisk #

in der Anruf.log

2008.06.03 - 09:44:32 - +4944XXXXXXX - kein Eintrag - keine Adresse

komisch ist die +49 .. sollte ein +41 sein . Ich habe die CC so angepasst.
 
Zuletzt bearbeitet:
@fowe:

Ok, den einen Fehler habe ich gefunden, ist ein Bug durch Doppelverwendung einer Variablen.

Das

grep: invalid option -- m
Usage: grep [OPTION]... PATTERN [FILE]...

sieht schon böser aus. Was hast Du denn für eine grep-Version? (Die Dir fehlende Option ist seit grep 2.5 enthalten).
Ohne die m-Option müsste man die gesamten Abfrageroutinen der Webseiten gründlich umschreiben, das geht natürlich, einfacher wäre hier allerdings, dass Du auf eine aktuellere grep-Version updatest. Schau doch mal, ob's für Deine Distri was aktuelleres gibt (aktuell ist die 2.5.2, aber wie gesagt: 2.5 reicht).

Für das andere Problem liegt eine aktualisierte Fassung des ast_revers.agi (einschließlich des Gesamtpakets) anbei.

@alle: Das von fowe im Vorpost beschriebene Problem mit einem eigenen Ländercode verschieden von 49 ist ein tatsächlicher Bug, der in allen Vorversionen existiert. Außerdem hatten ja diverse Leute Probleme mit den bash-regex. Daher ist die angehänge Version des Shell-Skriptes dringend zum Austausch gegen Eure bestehende empfohlen
 

Anhänge

  • ast_revers_2008-06-03.tar.bz2
    715.4 KB · Aufrufe: 59
Code:
asterisk# grep -V
grep (GNU grep) 2.4.2
Copyright 1988, 1992-1999, 2000 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

das gehört nun nicht wirklich hier hin .. aber wie aktualisier ich den die Version ?
 
jetzt ists richtig off-topic:
Das hängt von Deiner Distribution ab (debian, (k)ubuntu, fedora, centos, suse ...) und sollte in jedem Fall über ein wenig googlen rauszufinden sein...
Ansonsten: Erhelle uns doch mal mit Angaben zur Distribution + Release der Distri, dann können wir Dir sicher helfen ... :rolleyes:
 
Hallo,

irgendwie fällt mir auf, das die Rückwärtssuche bei dasoertliche.de nicht mehr richtig zu funktionieren scheint.

Grundsätzlich bekomme ich "kein Eintrag" bei deutschen Nummern.
Interessanterweise konnte ich jedoch im Log sehen, dass das Skript anscheinend sehr wohl z.B. die Strasse erkannt hat. Aber der Name bleibt leer.

Geht das nur mir so, oder kann das jemand anderes auch bestätigen.

Gruß
 
Änderung der DE-Routine wegen Anpassung dasoertliche.de

Aufgrund der Fehlermeldung von mxmarc hier eine neue Variante für Deutschland, die nach der scheinbar erfolgten Anpassung von dasoertliche.de auch wieder funktioniert (bitte die entsprechende Funktion bzw. innerhalb derer die entsprechend markierte Zeile austauschen):

Code:
function DEUTSCHLAND {
SNUM=`echo $NUMMER | sed -e "s/^+${CC[$CINDEX]}/${NAC[$CINDEX]}/"`
wget -q --tries=3 --timeout=5 -O $TMPFILE "http://www1.dasoertliche.de/?form_name=search_inv&ph=$SNUM"
[B]NAME=`grep 'class=\"entry\".*' -m1 $TMPFILE | sed -e s/^.*\"entry\"//g -e s/\<'\/'a\>.*//g -e s/^.*\>//g`[/B]
DETAILS=`grep ';.*<br\/>' -m1 $TMPFILE  | sed  -e s/'   '//g -e s/\&nbsp\;/\ /g -e s/'\n'//g -e s/'\t'//g -e s/'<br\/>'//  `
rm $TMPFILE
}
 
Zuletzt bearbeitet:
Supi.. läuft wieder!

Danke für die schnelle Hilfe!
 
Wenn ich am Wochenende dazu komme mach mal einen neue Version mit allen aktuellen änderungen.
 
Neue Version

Neue Version mit allen Änderungen, insbesondere auch einer ausführlichen mysql-Doku anbei.
Neu: unter NEWS findet ihr eine Historie der Änderungen in den einzelnen Versionen.

@kasper-ls: Ich hab hier mal vorgezogen, da es noch eine Änderung gab, die im Thread nicht veröffentlicht ist, jedoch auf Anregung von fowe eingebracht wurde und sinnvoll erscheint (Nutzung von mysql auf anderem Host).
 

Anhänge

  • ast_revers_2008.06.14.tar.bz2
    716.1 KB · Aufrufe: 67
Danke @abw1oim

Hast net Lust das gesamte Projekt zu übernehmen, ich komm zeitlich so wie so zu nichts mehr.
 
Ich muß mich mal kurz ganz herzlich bei allen Beteiligten an dem Projekt bedanken. Das Skript ist wirklich super und ich weiß die tollen Weiterentwicklungen und Aktualisierungen sehr zu schätzen.

Eine Anwendungsfrage: wie geht ihr mit Umlauten in den skript-Antworten um? Ich laß mir den LONGNAME auf die Telefondisplays anzeigen und z.B. die Snom-Telefone kommen mit den Umlauten nicht zurecht. Gibts einen Trick die zu ersetzen?
 
Für die deutschen (und ausländischen) Umlaute gibt es noch keine einheitliche Lösung.
Man kann natürlich noch eine Ersetzung einbauen, ich muss mal schauen wie wir das machen, insb. weil mir nicht ganz klar ist, womit alle Telefone gleich klarkommen (UTF8 oder ISO-8859-1).
Am einfachsten wäre dann jeweils die Umlautersetzung durch die phonetische Entsprechung, also etwa oe für ö etc.
Ich schau mir das bei Gelegenheit mal an.
 
Neue Version mit allen Änderungen

Noch ein Wunsch von mir, um gelegentlich einzubauen:

Auslagerung der persönlichen Einstellungen in eine separate Datei, um bei einem Update nicht jedesmal die Einstellungen (Pfade, Vorwahl) neu machen zu müssen.

Ansonsten besten Dank für das tolle Script.
 
Auslagerung der persönlichen Einstellungen in eine separate Datei

ist auch in meiner Planung das nächste ToDo, da es überdies die Sicherheit in der Anwendung erhöht.

Allerdings kann ich noch nichts versprechen im Hinblick auf ein Datum für neues Release ...
 
Erweiterung um PostgresQL

Hallo,

PostgresQL:

Als kleinen Beitrag zum Skript, habe ich es um eine Anbindung an PostgresQL Datenbanken erweitert.
Patch mit konvertiertem sql-dump im Anhang.
Kurzanleitung im README.


Weitere Änderungen nach dem Anwenden des Patches:

Die Änderungen habe für meine Zwecke vorgenommen.
Da ich sie nicht extra für den PostgresQL Patch entfernen will dokumentiere
ich sie; Vielleicht sind sie für den ein oder anderen nützlich.

VDR-Parameter:

Die VDR Option war default aktiviert. Sie ist jetzt optional mit Parameter VDR.

Original:
Code:
echo "VDR-OSD ansteuern" >> $LOGFILE
osdvdr

hinzugefügt am Anfang:
Code:
#VDR-Anzeige
VDR=0                        #Anzeige VDR 0=Nicht 1=Ja
geändert Codezeilen:
Code:
if [ "$VDR" == 1 ];then
	echo "VDR-OSD ansteuern" >> $LOGFILE
	osdvdr
fi


Bugfix:

Beim Parsen von "dasoertliche" werden bei mir "\r" nicht entfernt.
Es kam bei mir deshalb öfters vor, dass die Ausgaben so aussahen
"ET VARIABLE LONGNAME ...
statt
SET VARIABLE LONGNAME ...

Deswegen habe ich folgenden Code:
Code:
${LAND[$CINDEX]}
echo " Name: $NAME   DETAILS: $DETAILS per I-Net gefunden" >> $LOGFILE

geändert:
Code:
${LAND[$CINDEX]}
NAME=`echo $NAME| sed 's/\r//g'`	
DETAILS=`echo $DETAILS| sed 's/\r//g'`
echo " Name: $NAME   DETAILS: $DETAILS per I-Net gefunden" >> $LOGFILE


Dirk
 

Anhänge

  • pg_sql_patch.tar.bz2
    677.3 KB · Aufrufe: 10
Version 0.2 veröffentlicht

@DirkWolf: Danke für die Ergänzungen

So, jetzt gibt es eine neue Version mit im wesentlichen vier Neuerungen:

  1. Ergänzungen PGSQL siehe DirkWolf, näheres in README.pgsql
  2. Nutzerbezogene Konfigurationen des Skripts wurden in eine ast_revers.conf ausgelagert, näheres in ast_revers.conf.sample und README.conf.
  3. Trenung von Daten (laender,exten) von Strukturen (pbook,params) im dump, so dass Änderungen an exten und laender auch ohne Verlust der anderen Daten übernommen werden können
  4. Umfangreiche Änderungen/Ergänzungen an dem Bestand in exten wegen diverser Nummernplanänderung und Erweiterungen um komplette Ortsnetze einzelner Länder, näheres dazu in NEWS.

Für weitere Anregungen (das Problem mit den Umlauten ist nicht vergessen, aber noch offen) bin ich immer dankbar.
 

Anhänge

  • ast_revers.tar.bz2
    747.9 KB · Aufrufe: 102
Zuletzt bearbeitet:
wie binde ich das ein?

Hi,

kann mir jemand mal ein Beispiel zeigen, wie ich das in der extensions.conf einbinde? Ausserdem weiß ich nicht, wohin ich das script selbst und den ordner "search_engine" schieben soll.

Danke!
 
Hallo,

das Skript und der Ordner kommen ins Asterisk-AGI Verzeichnis.
Bei mir: /var/lib/asterisk/agi-bin/

Mal ein Beispiel:
Code:
exten => 123456,1,Ringing()
exten => 123456,2,AGI(ast-revers.agi,${CALLERID(NUM)})
exten => 123456,3,Set(CALLERID(name)=${LONGNAME})
exten => 123456,4,Set(CALLERID(num)=${LONGDETAILS})
exten => 123456,5,Dial(SIP/1234,30)
exten => 123456,6,Congestion()
exten => 123456,7,Wait(10)
exten => 123456,8,Hangup()
 
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.