F!B-Telefonbuch über Datenbank als Telefonbuchquelle nutzen

Theo Tintensich

Aktives Mitglied
Mitglied seit
10 Mrz 2008
Beiträge
2,186
Punkte für Reaktionen
96
Punkte
48
Ich habe ein paar Scripte gebastelt, mit denen man da F!B-Telefonbuch auslesen und in eine Datenbank (SQlite3) schieben kann, um die dann als Telefonbuch für andere Telefone zu nutzen.

Die Scripte laufen auf einem Linux-System (z.B. auch Raspberry), oder anderer Hardware, auf der PHP, und die Bash laufen.
Verwendet werden die folgenden Verzeichnisse:
/home/pi/scripte (zum auslesen der F!B und schreiben der Datenbank)
/tmp (hier wird das Telefonbuch abgelegt)
/var/www/html (für die Scripte, die für die anderen Telefone das Telefonbuch bereitstellen)
/var/www/sqliteDB (hier liegt die Datenbank, in dieses Verzeichnis muss der User, der die DB erzeugt schreiben dürfen. Die muss natürlich vom Web-User gelesen werden können)
Verwendung finden die Scripte "tel2db.sh", dieses ruft die weiten Verarbeitungsscripte auf (F!B-Telefonbuch lesen, DB erstellen und füllen), uns ist dazu gedacht, per Cron aufgerufen zu werden.
Das Script "tel2db.sh" enthält das Script "fonebook.sh", welches das F!B-Telefonbuch auslist und nach /tmp/Fritz.xml schreibt.
Hier müsste der Name der F!B und das Passwort zum Lesen eingetragen werden.
Das Script "telbuch.php" liest die "/tmp/Fritz.xml" und schreibt die Datenbank "/var/www/sqliteDB/telbuch.sqlite"
Das Script snom.php komt nach /var/www/html und liest die Datenbank, um das Telefonbuch für die Snom-Telefone bereitzustellen.
Das Script "yeastar.php" stellt das Telefonbuch für Yealink-Telefone bereit. Die Telefonbuchdefinition ist nach https://support.yeastar.com/hc/en-us/articles/216881758-How-to-Configure-Remote-Phone-Book erstellt.

Die beiden folgenden Dateien sind Dateien, um Funktionen zu prüfen.
"teldb.php" zeigt den Inhalt der Datenbank
"telebuch_db.php" zeigt, was in die DB geschrieben würde.

(Die Script sind nicht immer besonders professionell geschrieben, aber sie funktionieren ;-))
 

Anhänge

  • FB-Datenbank-Telefonbuch.zip
    5.7 KB · Aufrufe: 27
Zuletzt bearbeitet:
  • Like
Reaktionen: klaus2006
Hallo Theo Tintensich,

vielen Dank für deine Scripte!!

Ich versuche gerade deine Scripte auf meinem Rasberry zum laufen zu bekommen. Allerdings gibt es einen Fehler. Beim ausführen des Scripts tel2db.sh wird eine Datei versucht aufzurufen, diese gibt es allerdings nicht: sqlite_abfrage.sh
Kannst du mir kurz erklären, ob diese in der Zip-Datei fehlt, oder was falsch ist?

Ausgabe am Rasberry:

root@Rasberry:/var/www/html# ./tel2db.sh
./fonebook.sh: Zeile 12: /home/pi/scripte/sqlite_abfrage.sh: Datei oder Verzeichnis nicht gefunden
./fonebook.sh: Zeile 14: /home/pi/scripte/sqlite_abfrage.sh: Datei oder Verzeichnis nicht gefunden
PHP Warning: simplexml_load_file(): I/O warning : failed to load external entity "/tmp/FRITZ.xml" in /home/pi/scripte/telbuch.php on line 39
PHP Notice: Trying to get property of non-object in /home/pi/scripte/telbuch.php on line 41
PHP Notice: Trying to get property of non-object in /home/pi/scripte/telbuch.php on line 41
PHP Warning: Invalid argument supplied for foreach() in /home/pi/scripte/telbuch.php on line 41
PHP Notice: Trying to get property of non-object in /home/pi/scripte/telbuch.php on line 51
PHP Notice: Trying to get property of non-object in /home/pi/scripte/telbuch.php on line 51
PHP Warning: Invalid argument supplied for foreach() in /home/pi/scripte/telbuch.php on line 51

Vielen Dank vorab!!

MfG Freevalley
 
Zuletzt bearbeitet:
Ich habe einen Fehler in der einen Datei festgestellt, da fehlte noch was, so dass das nicht funktionieren konnte.
Bitte das Archiv noch einmal herunterladen. Hier wird dann nur die Datei "fonebook.sh" benötigt.
In dieser Datei musst du das Passwort für den Zugriff in die F!B eintragen. (Ich habe bei meinen nicht Benutzer/Password, sondern nur Password)

Wenn du das Script "tel2db.sh" jetzt startet (es sind Pfade für den PI, Benutzer PI, eingetragen) wird das Telefonbuch aus dem F!B ausgelesen und als /tmp/FRITZ.xml abgelegt.
Anschließed wird mittels "telbuch.php" (sie wird durch das Script "tel2db.sh" mit aufgerufen) die Datenbank "/var/www/sqliteDB/telbuch.sqlite" erstellt. Das Verzeichnis muss existieren.

Mit dem Script "teldb.php" sollte die Datenbank auf einer Webseite angezeigt werden.
Dieses Script, und auch "snom.php" bzw "yeastar.php" kann man als Vorbilder nehmen, wenn man weitere XML-Telefonbucher für Telefone erstellen will.

In der ESR-version FireFox kann man noch einen SQlite-Manager einbinden.
Ich habe aber festgestellt, dass unter Windows der "DB Browser for SQLite" (auch in einer Portable-Version https://portableapps.com/apps/development/sqlite_database_browser_portable erhältlich) sehr viel praktischer ist
 
Vielen Dank!!

Noch eine Frage. Ich habe in der Fritzbox Benutzername und Passwort. Klappt es mit deinem Script trotzdem?

Vilelen Dank vorab!!!

MfG
 
Gute Frage, das habe ich nicht ausprobiert. Es müsste bei der Ermittlung für die SID angepasst werden.
Da ich keine Fritzboxen bei mir habe, bei denen ich beides eingerichtet habe, müsstest du in der Zeile 20
Code:
CPSTR="$Challenge-$Passwd"
wohl noch etwas anpassen.
 
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.