[Kursergaenzung] Status des Asterisk und Linux per Web abfragen

voipd

IPPF-Promi
Mitglied seit
5 Mai 2005
Beiträge
3,187
Punkte für Reaktionen
4
Punkte
38
Hallo zusammen,

anbei eine kleine bescheidene "Erweiterung" vom Betateilchen-Kurs. Ich wollte gerne ueber das Webinterface des Servers den Status des Asterisk Server sehen, bzw. mit anzeigen lassen ob noch alle SIP Accounts registriert sind. Per ssh kommt man nicht von jeder Stelle auf den Rechner und ausserdem ist es fuer eine Statusabfrage zu aufwendig.

Also kam die Idee eine Webseite zu erstellen und per Sript die Befehle auszufuehren. Diese 3 Webseiten sind im Anhang. Einfach nur in das (Unter-)Verzeichnis des Webservers legen und gut ist. Eventuell einen Unterorder im Documentroot erstellen oder sonstwo ablegen. Die Anpassungen muss ich nicht dokumentieren. :) Wer die Files aufmacht sieht es. Die Idee das mit php zu machen kam nicht von mir, also bitte auch keine Frage zu dem php Syntax stellen :)

1. index.html: Baut die beiden Frames auf
2. frame_links.php: Enhaelt das "Menue"
3. frame_rechts.php: Enthaelt die passenden Befehle zum Menue und in diesem Frame erscheint die Ausgabe.

Die ersten 3 Linux Befehle muessen problemlos funktionieren. Um den Astersik Status abfragen zu koennen musste ich noch das s-Bit setzen, also:

Code:
root# chmod +s /usr/sbin/asterisk

Sieht dann so aus:

Code:
-rwsr-sr-x   1 root     root      6122786 Jan  6 23:48 asterisk

Hinweis: Das s-Bit gibt den Prozess die Rechte des Eigentuemers. D.h. wenn der Webserveruser "www" den asterisk ausfuehrt wird der Befehl asterisk nicht mit den Rechten des Users "www", sondern mit den Rechten des Users "root" ausgefuehrt. Ohne diese Anpassung kam es zu der Fehlermeldung "Cannot connect to Asterisk". Wer eine bessere Loesung hat sollte sich melden.

Screenshot anbei.



Viel Spass damit



voipd.
 

Anhänge

  • status.JPG
    status.JPG
    56.7 KB · Aufrufe: 417
  • status.zip
    854 Bytes · Aufrufe: 93
Das geht aber auch viel einfacher:

Du legst einen cronjob an, der in regelmäßigen Abständen diese Ausgaben direkt in eine Datei schreibt, und die zeigst Du dann an.

Das hat den Vorteil, daß Du keine Berechtigungsprobleme bekommst, da der Asterisk in diesem Fall per default als root ausgeführt wird.

Wir brauchen also einen Eintrag in der crontab

Code:
* * * * * /usr/sbin/asterisk -rx "sip show peers" > /var/www/peers.html

Dann kannst Du vom Browser aus diese Datei direkt öffenen - ok, sie ist nicht W3C konform, aber der Inhalt ist das wichtige.
das ganze kannst Du natürlich auch für beliebige andere Stati machen, also

Code:
* * * * * /usr/sbin/asterisk -rx "sip show registry" > /var/www/registry.html

Die Sache mit dem Frame ist nicht die schlechteste Idee - du rufst eben die entsprechende Status-Seite, die 1 mal pro Minute aktualisiert wird direkt in den rechten Frame.

PS: PHP brauchst du dann bei dieser Lösung gar nicht :wink:
 
Betateilchens Lösung würde ich allein schon aus sicherheits-Gründen unbedingt vorziehen.

Man kann ja die Daten auch zB in eine Datei packen (wie gezeigt), diese dann aber in php öffnen, lesen, und was-auch-immer mit dem Inhalt machen... parsen... usw.
 
Na gut :rolleyes: , wie sieht es mit dem Befehl:

Code:
asterisk -r -x "stop now"
oder
asterisk -r -x "restart gracefully"

aus?

Mit Betateilchens Loesung saegt man da wohl am eigenen Ast(erisk). :cool:

Die Cron Loesung finde ich auch gut, je nachdem was man implementieren moechte, wobei sich beide Sachen nicht ausschliessen. 8)


voipd.
 
Ich würde bevorzugen

#!/bin/bash
/usr/sbin/asterisk -rx "sip show peers" > /var/www/peers.html

in eine extra Datei schreiben und bei dieser das "+s" für den Asterisk-user (root, oder als was auch immer Asterisk läuft) setzen.
 
Wenn Ihr es über das Asterisk-Manager API macht, dann braucht Ihr gar keine Linux-Rechte anzupassen :)
 
Da der Zugang zum Asterisk Manager API unverschlüsselt (auch das Passwort) ist und der Zugang vieles erlaubt, ist es häufig keine Option.
(Selbst der MD5 Hash bei der Authentifizierung ist nur 'scheinbare' Sicherheit, da vom Server kein 'Random'-Token mit übertragen wird.)
 
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.