Verbesserte Version im post#3
Aloha zusammen!
Da ich in letzter Zeit hin und wieder Probleme mit meinen USB Readern am Server habe (gehen hin und wieder "verloren"), hab ich mir da mal ein kleines Script zur Oscam Überwachung zusammen geschustert.
Das will ich euch nicht vorenthalten
Ein Beispiel:Code: Alles auswählen
#!/bin/bash founds=`tail -10 /var/log/oscam.log | grep "Hier kommt die Fehlermeldung aus der oscam.log rein, bei welcher eine Aktion ausgelöst werden soll" | wc -l`#Es werden die letzten 10 Zeilen der Datei /var/log/oscam.log ausgelesen und durchsucht. if [ $founds -gt 1 ] #Hier kann angegeben werden, wie oft der Fehler in den letzten 10 Zeilen auftreten musste. mit "-gt 3" reagiert das Script erst, wenn die Fehlermeldung, die oben festgelegt wurde, 3 mal auftaucht. then echo "Fehlermeldung: `date +%d-%b-%Y` `date +%H:%M:%S`" >>/var/log/oscam.error #Hier wird eine Meldung in die Datei /var/log/oscam.error geschrieben, um euch zu Zeigen, dass das Script eine Aktion ausgeführt hat. wget --spider "http://127.0.0.1:1234/readers.html?label=kd-hd&action=disable" wget --spider "http://127.0.0.1:1234/readers.html?label=kd-hd&action=enable" #Diese beiden Zeilen stellen die Aktion dar, die im Fehlerfall ausgeführt wird. In diesem Fall wird der Reader mit dem label "kd-hd" deaktiviert und wieder aktiviert. fi exit
Ihr wollt das oscam automatisch neu startet, wenn es sich mal beendet haben sollte:Taucht im oscam Log nun das exit Signal auf, wird ein Hinweis darauf mit Datum und Uhrzeit in die oscam.error geschrieben und oscam anschliessend wieder gestartet.Code: Alles auswählen
#!/bin/bash founds=`tail -10 /pfad/zur/log | grep "exit with signal" | wc -l` if [ $founds -gt 1 ] then echo "Oscam neu gestartet: `date +%d-%b-%Y` `date +%H:%M:%S` " >>/var/log/oscam.error /pfad/zur/oscam -r0 -b -c /pfad/zur/config fi exit
Die Fett geschrieben Pfade müsst ihr natürlich anpassen, so dass sie auf euer System zutreffen.
Ich nutze das ganze um meine Reader kurz zu deaktivieren und wieder zu aktivieren, wenn sie verloren gehen sollten.
Das sieht dann so aus:Code: Alles auswählen
#!/bin/bash foundsmille=`tail -10 /var/log/cardserver | grep "ERROR Phoenix_GetStatus: ioctl error in card detection for mille" | wc -l` if [ $foundsmille -gt 1 ] then echo "Mille Card verloren: `date +%d-%b-%Y` `date +%H:%M:%S` " >>/var/log/oscam.error wget --spider "http://127.0.0.1:1234/readers.html?label=mille&action=disable" wget --spider "http://127.0.0.1:1234/readers.html?label=mille&action=enable" fi foundssky=`tail -10 /var/log/cardserver | grep "ERROR Phoenix_GetStatus: ioctl error in card detection for sky" | wc -l` if [ $foundssky -gt 1 ] then echo "Sky Card verloren: `date +%d-%b-%Y` `date +%H:%M:%S` " >>/var/log/oscam.error wget --spider "http://127.0.0.1:1234/readers.html?label=sky&action=disable" wget --spider "http://127.0.0.1:1234/readers.html?label=sky&action=enable" fi foundskd=`tail -10 /var/log/cardserver | grep "ERROR Phoenix_GetStatus: ioctl error in card detection for kd" | wc -l` if [ $foundskd -gt 1 ] then echo "KD-Home Card verloren: `date +%d-%b-%Y` `date +%H:%M:%S` " >>/var/log/oscam.error wget --spider "http://127.0.0.1:1234/readers.html?label=kd&action=disable" wget --spider "http://127.0.0.1:1234/readers.html?label=kd&action=enable" fi foundskdhd=`tail -10 /var/log/cardserver | grep "ERROR Phoenix_GetStatus: ioctl error in card detection for kd-hd" | wc -l` if [ $foundskdhd -gt 1 ] then echo "KD-HD Card verloren: `date +%d-%b-%Y` `date +%H:%M:%S` " >>/var/log/oscam.error wget --spider "http://127.0.0.1:1234/readers.html?label=kd-hd&action=disable" wget --spider "http://127.0.0.1:1234/readers.html?label=kd-hd&action=enable" fi exit
Die Einsatzmöglichkeiten sind wirklich vielfältig.
So könnte man z.b. auch einen User überwachen. Ein User der z.b. nur Timeouts bekommt, kann so deaktiviert, oder auch neu verbunden werden.
Ebenso kann man überwachen, ob oscam auch zu den externen Servern verbindet. Falls nicht, kann man oscam oder den ganzen Server rebooten.
Oder wenn die letzten 10 Log Zeilen von oscam alle ein "not found" aufweisen, kann man oscam neu starten lassen...
Jede Meldung die im oscam.log auftaucht, kann zur Auswertung heran gezogen werden. Auch in den Aktionen ist man nicht eingeschränkt. Alles was per Console oder per WebIF möglich ist, kann auch im Script ausgeführt werden.
Dank der oscam.error Datei bleiben einem die Fehler auch nicht verborgen. Jeder Fehler wird genau festgehalten inklusive Datum und Uhrzeit.
Das ganze Speichert ihr ab. Bei mir heisst das script z.b. "check.reader" und liegt in "/var/emu"
Damit das ganze nun auch ständig überwacht wird, muss dafür ein cronjob (oder watchdog) eingerichtet werden.
Unter Debian sieht das z.b. so aus:Damit wird jede Minute einmal das Script check.reader aufgerufen. Findet das Script keine Fehler, beendet es sich einfach wieder. Findet es einen Fehler, wird die Aktion ausgeführt, die festgelegt wurde.Code: Alles auswählen
crontab -e # m h dom mon dow command * * * * * /bin/sh /var/emu/check.reader
Die Laufzeit des Scripts beträgt auf einem 300Mhz Prozessor 1-2 Sekunden, sollte also auch auf sehr schwachen Cardservern keine Probleme in der Auslastung verursachen.
Das Script ist NICHT mein eigenes Werk, habs mir nur aus Scriptfetzen aus dem Netz zusammen gebastelt. Daher geht das Danke an Google
Vielleicht kann der ein oder andere ja etwas damit anfangen.
MfG
Monarch