reverse lookup telefonnummer

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Jens-Uwe
Beiträge: 219
Registriert: 23.04.2003 10:27:13
Wohnort: Karlsruhe
Kontaktdaten:

reverse lookup telefonnummer

Beitrag von Jens-Uwe » 17.02.2005 11:44:11

Hi,

ich hoffe ich bin hier richtig:

ich versuche dieses script [1] ohne asterisk zum laufen zu bekommen. dazu habe ich es etwas abgewandelt. leider funzt es net! kann da mal jmd drüber schauen:

Code: Alles auswählen

#!/bin/sh
#pfad um das tempfile anzulegen
TMPFILE=`/tmp/tmpsuche`
CACHE=`/tmp/ergebnis`
LOG=`/tmp/log`
NUMMER=`/tmp/nummer`

NUMMER=`cat $NUMMER | sed -e "s/\ //g" -e "s/+49/0/"`

#echo "Suche nach $NUMMER im cache"
NAME=`awk  -F '\t' '{ if ($1 == "$NUMMER") print $2 }' $CACHE`
DETAILS=`awk  -F '\t' '{ if ($1 == "$NUMMER") print $3 }' $CACHE`

#echo "Name: $NAME"
#echo "Details: $DETAILS"

if [ "$NAME" == "" ]; then

# reverse Lookup via www.dasoertliche.de"
lynx "http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=$NUMMER&main=Antwort&s=2" \
-dumpNAME=`grep printselected.gif -A 2 $TMPFILE | awk '{ if (FNR == 2) print $0 }' |  sed  -e "s/\ \+//" -e "s/\ \+/\ /g" -e "s/\[_\]$
DETAILS=`grep printselected.gif -A 2 $TMPFILE | awk '{ if (FNR == 3) print $0 }' |  sed  -e "s/\ \+//" -e "s/\ \+/\ /g" -e "s/\[$
if [ "$NAME" == "" ]; then
    if grep "Kein Teilnehmer gefunden" $TMPFILE > /dev/null; then
        NAME="Telefonnummer $NUMMER"
        DETAILS="Kein Eintrag $2"
    fi;
fi;
if [ "$NAME" == "" ]; then
    NAME="Telefonnummer $NUMMER"
    DETAILS="Fehler $2"
else
    echo -e "$NUMMER\t$NAME\t$DETAILS" >> $CACHE
fi;
fi
exit 0
 -nolist -connect_timeout=3>  $TMPFILE

wenn ich das script executable mache und ausführe bekomme ich diese fehlermeldung:

Code: Alles auswählen

: bad interpreter: No such file or directory
aber sowohl sh als auch bash ist natürlich installiert. nach ein wenig googlen habe ich hinweise gefunden, dass die quotes, also die " " " ", bzw. " ` ` "
und die " ' ' " einen wichtigen unterschied machen können, und habe etwas experimentiert. bisher ohne erfolg. wie gehörts richtig, bzw. ist das der fehler?

dank euch,
jens-uwe

[1] http://www.voip-info.org/wiki-Reverse+Lookup+in+Germany

Benutzeravatar
feltel
Webmaster
Beiträge: 10466
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 17.02.2005 12:20:59

Das "#!/bin/sh" muss in der ersten Zeile des Scripts stehen (die sog. Shebang-Zeile). Sieht so aus als ob es bei Dir in der zweiten Zeile steht.

fluid
Beiträge: 494
Registriert: 14.11.2003 21:52:49

Beitrag von fluid » 17.02.2005 12:34:03

Wenn die erste Zeile nur eine Leerzeile ist, macht das aber nichts.

Benutzeravatar
Maikel
Beiträge: 1267
Registriert: 13.04.2004 15:39:25
Wohnort: Gelsenkirchen
Kontaktdaten:

Beitrag von Maikel » 17.02.2005 12:44:41

Deine Anführungszeichen sind falsch wenn ich mich nicht irre.
Du hast ` genutzt, es sollten aber ' sein, also die die über dem # sind.
Cheers, Maikel
------------
BGLUG
------------
Linus Torvalds:
"Only wimps use tape backup: _real_ men just upload their important stuff on ftp, and let the rest of the world mirror it ;)"

lochkarte
Beiträge: 190
Registriert: 08.12.2004 11:43:44

Beitrag von lochkarte » 17.02.2005 12:48:52

Weiterhin wird die Variable NUMMER doppelt benutzt: als Dateiname und als Telefonnummer.

Benutzeravatar
Jens-Uwe
Beiträge: 219
Registriert: 23.04.2003 10:27:13
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von Jens-Uwe » 17.02.2005 16:40:22

Vielen Dank soweit an alle Tipps! Ich habe daraufhin angefangen das Script stückchenweise zu testen.

Zunächst jedoch
Das "#!/bin/sh" muss in der ersten Zeile des Scripts stehen ...
das war der Fall.
Weiterhin wird die Variable NUMMER doppelt benutzt: als Dateiname und als Telefonnummer.
japp. "Korrigiert"
Deine Anführungszeichen sind falsch...Du hast ` genutzt, es sollten aber ' sein...
Daraufhin habe ich mal alle ` gegen ' ausgetauscht. Ohne Erfolg.
Wobei ich allerdings diesen Hinweis
also die die über dem # sind
nicht verstanden habe.

Nun das zerstückelte Script:

Code: Alles auswählen

#!/bin/sh --
NUMMER='/tmp/telefonnr'
NUMMER2='/tmp/telefonnrsortiert'
TMPFILE='/tmp/tmpfile'
# umschreiben der eingabe. das erste sed löscht leerzeichen
# das zweit ersetzt ein "+49" durch eine Null
`cat $NUMMER | sed -e "s/\ //g" -e "s/+49/0/" > $NUMMER2`

# reverse Lookup via www.dasoertliche.de
lynx "http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=$NUMMER2&main=Antwort&s=2" \
-dump -nolist -connect_timeout=3>  $TMPFILE

cat $NUMMER
cat $NUMMER2
#cat $TMPFILE
(Hoffentlich keine Fehler bei paste'n'copy)
Die Variabeln $NUMMER und $NUMMER2 (zur Not auch $TMPFILE) werden am Ende des Scripts korrekt ausgegeben. Fehlerhaft ist allerdings die "lynx"-Zeile. Hier bekomme ich immerwieder die Fehlermeldung vom "Oertlichen", dass ich meine Eingabe korrigieren muss. Daraufhin habe ich mit dem Syntax der $NUMMER2 Variable in der aufzurufenden URL experimentiert.
Hier jeweils meine erfolglosen Varianten:

Code: Alles auswählen

lynx "http...$NUMMER2..."
lynx "http...'$NUMMER2'..."
lynx "http...`$NUMMER2`..."
lynx "http..."$NUMMER2"..."

lynx 'http...$NUMMER2...'
lynx 'http...'$NUMMER2'...'
lynx 'http...`$NUMMER2`...'
lynx 'http..."$NUMMER2"...'

lynx `http...$NUMMER2...`
lynx `http...'NUMMER2'...`
lynx `http...`NUMMER2`...`
lynx `http..."$NUMMER2"...`
Funktioniert hat dagegen das einsetzen einer Telefonnr. in die URL, also ohne Variabel

Code: Alles auswählen

lynx "http...07216xxxxx..."
Aus verständlichen Gründen gekürzt.
Da ich über diesen Punkt noch nicht hinweggekommen bin, spare ich mir erstmal den Rest.
Watt nu? Wie übergebe ich lynx die Variabel?

gruß, jens-uwe

Benutzeravatar
Maikel
Beiträge: 1267
Registriert: 13.04.2004 15:39:25
Wohnort: Gelsenkirchen
Kontaktdaten:

Beitrag von Maikel » 17.02.2005 16:50:55

Maikel hat geschrieben: also die die über dem # sind.
Soll heißen das ich die zweitbelegung der Taste # meine. Also:
Shift + # = '
Cheers, Maikel
------------
BGLUG
------------
Linus Torvalds:
"Only wimps use tape backup: _real_ men just upload their important stuff on ftp, and let the rest of the world mirror it ;)"

ernohl
Beiträge: 1248
Registriert: 04.07.2002 08:11:56
Wohnort: HL

Beitrag von ernohl » 17.02.2005 18:33:48

Jens-Uwe hat geschrieben:

Code: Alles auswählen

NUMMER2='/tmp/telefonnrsortiert'
...
# das zweit ersetzt ein "+49" durch eine Null
`cat $NUMMER | sed -e "s/\ //g" -e "s/+49/0/" > $NUMMER2`

# reverse Lookup via www.dasoertliche.de
lynx "http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=$NUMMER2&main=Antwort&s=2" \
-dump -nolist -connect_timeout=3>  $TMPFILE
Die Variabeln $NUMMER und $NUMMER2 (zur Not auch $TMPFILE) werden am Ende des Scripts korrekt ausgegeben.
Das glaube ich kaum. Beim lynx-Aufruf wird in NUMMER2 eine Telefonnummer erwartet. Es ist aber ein Dateiname und in dieser Datei steht die Nummer. Außerdem ist die Zeile

Code: Alles auswählen

`cat $NUMMER | sed -e "s/\ //g" -e "s/+49/0/" > $NUMMER2`
Unsinn. Wenn NUMMER einen Dateinamen und NUMMER2 eine Zahl (Telefonnummer) beinhalten soll, muss es etwa so aussehen:

Code: Alles auswählen

NUMMER2=`cat $NUMMER | sed ...`
BTW. Kennt jemand eine öffentliche Nummer, die reverse Lookup erlaubt. Ich würde auch ganz gern mal testen. :wink:
Gruß
ernohl

fluid
Beiträge: 494
Registriert: 14.11.2003 21:52:49

Beitrag von fluid » 17.02.2005 22:35:15


deepblue
Beiträge: 4
Registriert: 17.02.2005 22:33:56

Beitrag von deepblue » 17.02.2005 23:29:18

Hallo, habe das Skript etwas verändert. Man kann es nun mit ./skriptname Tel1 Tel2 Tel3 ... aufrufen, wobei Tel1,2,3 für gültige Telefonnummern wie 08912345678 stehen.

Reverssuche Version: 0.1

Code: Alles auswählen

#!/bin/sh

# Zum Widerspruch zu Inverssuche einfach von dem Betroffen Anschluss 
# 01375-103300 (Kosten: 12 Cent) anrufen !

#basiert auf: http://www.voip-info.org/tiki-index.php?page=Reverse+Lookup+in+Germany

#Benötigt LYNX und aktive Internetverbindung
#chmod +x revers_01.sh      nicht vergessen

if [ "$1" == "" ] ;
then 
echo "Deutsche Festnetznummer(n) als Parameter übergeben!"
echo "z.B: '$0 0123456789 0987654321'"
exit 0
fi

TMPFILE="/tmp/r_lookup_tmpHTML"

if ! test -f $TMPFILE ;
then touch $TMPFILE
fi

while [ "$1" != ""  ] ; do

        lynx 'http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers='$1'&main=Antwort&s=2' \
        -dump -nolist -connect_timeout=3>  $TMPFILE
        NAME=`grep printselected.gif -A 2 $TMPFILE | awk '{ if (FNR == 2) print $0 }' |  sed  -e "s/\ \+//" -e "s/\ \+/\ /g" -e "s/\[_\]//g"`
        DETAILS=`grep printselected.gif -A 2 $TMPFILE | awk '{ if (FNR == 3) print $0 }' |  sed  -e "s/\ \+//" -e "s/\ \+/\ /g" -e "s/\[_\]//g"`
        
	if [ "$NAME" == "" ]; then
            if grep "Kein Teilnehmer gefunden" $TMPFILE > /dev/null; then
                NAME="Telefonnummer $1"
                DETAILS="Kein Eintrag"
            else
	        NAME="Telefonnummer $1"
                DETAILS="Fehler"
	    fi
	fi;
	
        echo -e "$1\t$NAME\t$DETAILS";
	
	shift 1	
done

exit 0


Einfach den Code in eine neue Datei z.B. revers.sh kopieren. Dann in der Shell mit chmod +x revers.sh ausführbar machen. Danach mit ./revers UND Kommandozeilenparamter starten.
Download

Freue mich auf weitere Anregungen.
Viel Spaß damit !

.deepblue
Zuletzt geändert von deepblue am 21.02.2005 00:26:16, insgesamt 3-mal geändert.

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 18.02.2005 09:03:48

Zu den Anfuehrungszeichen:
das Zeichen ` - auch Backquote genannt - fuer den eingeschlossenen Text in ner Subshell aus.
In Zeichenketten mit " werden Variablen expandiert, was in ' nicht der Fall ist.

Benutzeravatar
Jens-Uwe
Beiträge: 219
Registriert: 23.04.2003 10:27:13
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von Jens-Uwe » 18.02.2005 14:58:56

Also, zunächst einmal freue ich mich über das Interesse an diesem Thema.
Nun zurück zum Problem:
Das glaube ich kaum. Beim lynx-Aufruf wird in NUMMER2 eine Telefonnummer erwartet. Es ist aber ein Dateiname und in dieser Datei steht die Nummer. Außerdem ist die Zeile
Code:
`cat $NUMMER | sed -e "s/\ //g" -e "s/+49/0/" > $NUMMER2`
Unsinn. Wenn NUMMER einen Dateinamen und NUMMER2 eine Zahl (Telefonnummer) beinhalten soll, muss es etwa so aussehen:
Code:
NUMMER2=`cat $NUMMER | sed ...`
Vielleicht sollt ich das erklären...
in $NUMMER könnte etwas in dieser Art stehen:

Code: Alles auswählen

+49 12345 6789 012
Diese Nummer wird dann mit sed ... umgeschrieben zu

Code: Alles auswählen

0123456789012
und in die Datei $NUMMER2 umgeleitet.
Wenn ich nun

Code: Alles auswählen

cat $NUMMER
cat $NUMMER2
ausführe erhalte ich die gewünschten Daten.
Dass es für diese Funktion wahrscheinlich noch mehr als 2 Möglichkeiten gibt, sie zu programmieren glaube ich wohl, warum meine
Unsinn.
ist, verstehe ich nicht. Ist das das Problem?
Wie dem auch sei, das Script von deepblue habe ich natürlich gleich getestet, und siehe da, es tut!!?
Kann mir jetzt einer sagen warum "meine" Zeile mit

Code: Alles auswählen

lynx "http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=$NUMMER2&main=Antwort&s=2"
nicht funktioniert, aber die von deepblue mit

Code: Alles auswählen

lynx 'http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers='$1'&main=Antwort&s=2'
funktioniert????
Habe natürlich auch gleich versucht "meine" Zeile entsprechend anzupassen:

Code: Alles auswählen

'http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers='$NUMMER2'&main=Antwort&s=2'
ohne Erfolg!

BTW, gibt es sowas wie einen BASH-Debugger? Oder eine gute Einführung in BASH?

Gruß, Jens-Uwe

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 18.02.2005 15:02:07


ernohl
Beiträge: 1248
Registriert: 04.07.2002 08:11:56
Wohnort: HL

Beitrag von ernohl » 18.02.2005 15:19:11

Jens-Uwe hat geschrieben:

Code: Alles auswählen

cat $NUMMER
cat $NUMMER2
ausführe erhalte ich die gewünschten Daten.
...
Kann mir jetzt einer sagen warum "meine" Zeile mit

Code: Alles auswählen

lynx "http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=$NUMMER2&main=Antwort&s=2"
nicht funktioniert, aber die von deepblue mit

Code: Alles auswählen

lynx 'http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers='$1'&main=Antwort&s=2'
funktioniert????
Das hatte ich dir schon in meinem letzten Posting gesagt. deepblue benutzt die Variable $1. In dieser steht eine Nummer. Du benutzt die Variable NUMMER2. In dieser steht ein Dateiname. In dieser Datei wiederum steht die Nummer. Setze mal:

Code: Alles auswählen

echo $NUMMER2
ls -l $NUMMER2
cat $NUMMER2
vor den lynx-Aufruf im Script und beende es dann. Dann wirst du sehen, was ich meine.
Gruß
ernohl

deepblue
Beiträge: 4
Registriert: 17.02.2005 22:33:56

Beitrag von deepblue » 21.02.2005 00:21:28

@jens-uwe
$1 steht für den ersten Kommandozeilenparameter des Skriptes.

@all

Nächste Version. Diesmal grafisch. Etwas für alle Mausklicker unter KDE /QT. Mit integrierter Druckfunktion.

Download des tar.gz Archives (i386) von SIMPLE REVERS 01

Download der direkten Binary (QT3.3) von SIMPLE REVERS 01

Viel Spaß damit.

Bitte probiert auch die tar.gz Version. Ich habe diese direkt unter KDevelop mit "Projekt->Zusammenstellen&Ausliefern" erstellt. Leider lief bei mir das .configure Script nicht durch. Weiß jemand Rat ? (KDevelop 3.1.1)

Benutzeravatar
Jens-Uwe
Beiträge: 219
Registriert: 23.04.2003 10:27:13
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von Jens-Uwe » 21.02.2005 08:47:15

@ernohl und deepblue
ich glaube ich habe es jetzt verstanden, was mein problem ist...bin noch am durchlesen der angegebenen docs.

@deepblue
trotzdem konnte ich nicht die finger von deinem script lassen, allerdings ohne erfolg:

Code: Alles auswählen

jens-uwe@sundownerAMD64:~/working_on/reverslookup/simple_reverse.kdevelop$ ./configure 
configure: error: cannot find sources (acinclude.m4) in . or ..
 
und

Code: Alles auswählen

jens-uwe@sundownerAMD64:~/working_on/reverslookup$ ./simple_reverse_bin_qt3_3 
./simple_reverse_bin_qt3_3: error while loading shared libraries: libkdeui.so.4: cannot open shared object file: No such file or directory
da ich von "programmeschreiben" keine ahnung habe, weiß ich jetzt nicht 100pro, ob nur meine architektur (debian-sid pure64 x86_64) mir einen strich durch die rechnung macht.

jens-uwe

deepblue
Beiträge: 4
Registriert: 17.02.2005 22:33:56

Beitrag von deepblue » 21.02.2005 15:15:16

Hallo jens-uwe,

leider habe ich das erste Problem auch bei mir zu Hause.

Code: Alles auswählen

configure: error: cannot find sources (acinclude.m4) in . or ..
Wäre schön, wenn einer dieses Problem kennt. Das scheint an autoconf zu liegen. Habe davon leider keinen Schimmer und hoffte das KDevelop das richtig machen würde.


Die Binary wurde unter einem i386 System kompiliert. Deshalb ist es klar das es nicht läuft. Allerdings sagt die Fehlermeldung

Code: Alles auswählen

 error while loading shared libraries: libkdeui.so.4
etwas anderes.

Warscheinlich hast Du die KDE Bibliothek nicht installiert. Hast du kdelibs installiert ?

Benutzeravatar
Jens-Uwe
Beiträge: 219
Registriert: 23.04.2003 10:27:13
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von Jens-Uwe » 22.02.2005 00:05:42

Code: Alles auswählen

sundownerAMD64:~# dpkg --get-selections | grep kdelibs
kdelibs                                         install
kdelibs-bin                                     install
kdelibs-data                                    install
kdelibs4                                        install
:roll:

Maj0r
Beiträge: 476
Registriert: 08.12.2003 14:52:39
Wohnort: Jüchen, Ne
Kontaktdaten:

Beitrag von Maj0r » 09.09.2007 16:54:05

Geht leider nicht mehr, scheinbar hat DasOertliche die URL geändert.
Weiß jemand, wie die jetzt lautet?

Antworten