Script soll Asterisk neustarten im Problemfall

frindly

Neuer User
Mitglied seit
4 Nov 2009
Beiträge
59
Punkte für Reaktionen
0
Punkte
0
Hallo,
ich habe ja das Problem, das sich die Aterisk manchmal weghängt, und dann in der Log Datei eingetragen wird, das keine Kanäle mehr verfügbar sind.
Anschliessend hängt sich die ganze Anlage weg.
Nun komm ich dem Fehler nicht bei, und möchte nun eine möglichst gute Fehlerbehandlung machen. Mein Plan:
Ein Script schaut alle paar Sekunden in die misdn.log nach, ob der Fehler aufgetreten ist. Und wenn ja, dann soll solange gewartet werden, bis keiner mehr Telefoniert und anschliessend wird die Anlage neu gestartet.

Mein erstes Script sieht so aus:
Code:
while true; do
    tail -n 2 /var/log/asterisk/misdn.log | grep "No free channel" >/dev/null
    if [ $? -eq 0 ]; then
        echo "Telefonanlage meldet hänger, Log prüfen!" | mail -s "Iptam Fehler
        asterisk -rx "restart gracefully"
        logger "Schneller Neustart wegen Fehler im misdn"
        sleep 60
    fi
    sleep 5
 done
Das Script prüfte die lezten zwei Zeilen der Log Datei und sollte wenn hier "No free channel" auftritt der Anlage sagen, starte neu, wenn keine Gespräche mehr laufen.
DAs funktioniert auch soweit ganz gut. Aber der Befehl "restart gracefully" tut nicht was er soll. Eigentlich sollten neue Gespräche abgeblockt werden, aber die Anlage nimmt noch welche an. Kann mir jemand was dazu sagen?

Das zweite Script sieht so aus:
Code:
while true; do
    tail -n 2 /var/log/asterisk/misdn.log | grep "No free Channel" >/dev/null
    if [ $? -eq 0 ]; then
        

while $v = true, do
$activecalls = asterisk -rx 'show channels' |awk '/active calls/ {print $1}'
if [$activecalls = 0];then
asterisk restart
$v = false
fi
sleep 1
done
Dieses Programm soll ähnlich arbeiten.Es analysiert die letzten zwei Zeilen der log Datei und spring dann in eine Schleife. Die Idee hier, der Variable activecalls wird die Anzahl der grad laufenden Gesrpäche zugewiesen. Wenn der Wert null erreicht, dann soll die Anlage neu gestartet werden. Hier tritt ein Fehler in der letzten Zeile auf,
ich versteh aber nicht warum.

Kann mir jemand helfen ??? :confused::confused::confused:
 
Nachtrag ....
das erste Script macht das was es soll :dance:
ich habe es nun mit einen angehängten & in die rc.local gestellt,
damit es bei jedem Neustart auch mitläuft.
 
Hallo Ihr Zwei,

es sei natürlich gesagt ( ich denke das weisst Du auch ) das dies nur ein Workaround ist - keine Lösung, ich hoffe es ist eine Heimanlage die höchstens mal die Oma vergrault wenn diese sich weghängt... :D

LG Stefan
 
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.