- 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:
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:
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 ???
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 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
ich versteh aber nicht warum.
Kann mir jemand helfen ???