|
|
| (8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| {{note|Noch in Bearbeitung}}
| |
|
| |
|
| |
| == verwandte Themen == | | == verwandte Themen == |
|
| |
|
| Siehe auch: [[Startup-Scripte (Enigma2)|Startup-Scripte]], [[Mails versenden (Enigma2)|Mails versenden (Enigma2)]] | | Siehe auch: [[Startup-Scripte (Enigma2)|Startup-Scripte]], [[Mails versenden (Enigma2)|Mails versenden (Enigma2)]] |
|
| |
|
| == Raspberry == | | == OSCam Cardserver überwachen == |
| | |
| {{note|Noch in Bearbeitung}}
| |
| | |
| | |
| === PID ermitteln ===
| |
| | |
| <pre>
| |
| pidof /usr/local/bin/oscam
| |
| </pre>
| |
| | |
| === Script ===
| |
| | |
| <pre>
| |
| sudo vi /usr/local/bin/oscam_watchdog.sh
| |
| </pre>
| |
| | |
| <pre>
| |
| #!/bin/bash
| |
| | |
| PIDFILE=/var/run/oscam.pid
| |
| if (kill -0 `cat $PIDFILE`)
| |
| then
| |
| echo "it's alive!" > /dev/null
| |
| else
| |
| rm $PIDFILE
| |
| /usr/local/bin/oscam start > /dev/null
| |
| echo "OSCAM restarted at `date`" >> /var/log/oscam-crash.log
| |
| fi
| |
| </pre>
| |
| | |
| <pre>
| |
| sudo chmod +x /usr/local/bin/oscam_watchdog.sh
| |
| </pre>
| |
| | |
| | |
| [[Datei:Check oscam.zip]]
| |
| | |
| <pre>
| |
| #!/bin/bash
| |
| # Oscam Watchdog & Nagios Script
| |
| # -------------------------------
| |
| # you can share the script where and as much as you want
| |
| # but leave the copyright & contact header untouched!
| |
| # if you modify the script you can place your name below
| |
| # -------------------------------
| |
| # Requires: curl (apt-get install curl)
| |
| # wget is not supported cause a failure with authentication encryption
| |
| # -------------------------------
| |
| # Changelog:
| |
| # 15.10.12 - Checken von Entitlements hinzugefügt. Bug im ReaderRestart behoben.
| |
| # 15.10.12 - Commandline Howto angepasst. Version auf 0.4 erhöht.
| |
| #
| |
| #
| |
| # -------------------------------
| |
| filename="check_oscam"
| |
| version="0.4"
| |
| # Start
| |
| # Konfiguration:
| |
| #
| |
| | |
| # Wert welcher per Commandozeile übergeben werden muss, damit der automatische Restart des Readers erfolgt.
| |
| codeRestart="autorestart"
| |
| | |
| # Anzahl wie oft hintereinander der Reader neugestartet wird bevor abgebrochen wird (falls es danach nicht OK ist)
| |
| anticount="3"
| |
| | |
| # Log 2 Syslog
| |
| # "1" Aktiviert
| |
| # "0" Deaktiviert
| |
| logsyslog="0"
| |
| | |
| # Debug
| |
| # "1" Aktiviert
| |
| # "0" Deaktiviert
| |
| debug="0"
| |
| | |
| # Temporärer Pfad
| |
| # für html Seiten & Antiloop Dateien
| |
| # OHNE abschließendem Slash (/) am Ende
| |
| temp="/tmp"
| |
| # Der User welcher das Skript ausführt muss Besitzer der Dateien (status.html) und (readers.html) sein.
| |
| # (Wenn man das Skript zum Testen mit root ausführt, und später den Cron mit einem anderem User - wird das Skript fehlschlagen, da die Dateien nicht überschrieben werden können.)
| |
| | |
| # Ende
| |
| # Konfiguration
| |
| # -------------------------------
| |
| howto='\nWarning: Wrong command line arguments. \n
| |
| Usage: ./check_oscam <hostname> <port> <username> <password> <part> <autorestart> <reader0> <reader1> ... <reader4> <entitlementsReader0> <entitlementsReader1> ... <entitlementsReader4>\n
| |
| | |
| Parts are: statuscheck, restart, entitlement\n
| |
| Example: ./check_oscam 127.0.0.1 1403 admin "password" statuscheck autorestart hdplus 1702
| |
| - Checks the Readers with label hdplus and 1702. If Status != CARDOK the reader will be restarted automatic.\n
| |
| Example: ./check_oscam 127.0.0.1 1403 admin "password" statuscheck norestart hdplus 1702
| |
| - Checks the Readers with label hdplus and 1702. But with no reader restart.\n
| |
| Example: ./check_oscam 127.0.0.1 1403 admin "password" entitlement norestart hdplus 1702 "" "" "" "1" "10"
| |
| - Refresh the Entitlements & Checks the Count of Entitlements of reader with label hdplus & 1702 where hdplus should have 1 entitlement and 1702 should have 10 entitlements.
| |
| - You can specify a maximum of 5 readers. If you specify not 5 you have to place a "" for each missing before starting with the count of entitlements.
| |
| - In the Example above 2 readers are specified so there are 3 placeholders ("" "" "") required until starting with the count of entitlements.
| |
| Note: All values are case sensitive!
| |
| '
| |
| if [ "$#" -lt "6" ]; then
| |
| echo -e "$howto" && exit "3"
| |
| fi
| |
| | |
| | |
| # General
| |
| strHostname=${1}
| |
| strPort=${2}
| |
| strUser=${3}
| |
| strPass=${4}
| |
| strpart=${5}
| |
| strRestart=${6}
| |
| | |
| # Reader
| |
| strReader0=${7}
| |
| strReader1=${8}
| |
| strReader2=${9}
| |
| strReader3=${10}
| |
| strReader4=${11}
| |
| | |
| # Entitlements
| |
| strEnt0=${12}
| |
| strEnt1=${13}
| |
| strEnt2=${14}
| |
| strEnt3=${15}
| |
| strEnt4=${16}
| |
| | |
| if [ "$strpart" == "entitlement" ] && [ "$strEnt0" == "" ]; then
| |
| echo -e "$howto" && exit "3"
| |
| fi
| |
| | |
| | |
| # Debugging
| |
| if [ $debug -eq 1 ] ;then echo -e "Hostname:$strHostname\nPort:$strPort\nUser:$strUser\nPass:******\nPart:$strpart\nRestart:$strRestart\nReader0:$strReader0\nReader1:$strReader1\nReader2:$strReader2\nReader3:$strReader3\nReader4:$strReader4\n---------------------------------\nEntReader0:$strEnt0\nEntReader1:$strEnt1\nEntReader2:$strEnt2\nEntReader3:$strEnt3\nEntReader4:$strEnt4" ; fi
| |
| | |
| # Remove old File
| |
| rm -f ""$temp"/status.html"
| |
| | |
| | |
| statuscheck() {
| |
| #echo "$strHostname:$strPort"
| |
| rm -f "$temp"/status.html
| |
| # File Download
| |
| a=$(curl --connect-timeout 2 -vu ""$strUser":"$strPass"" --anyauth -o ""$temp"/status.html" "http://$strHostname:$strPort/status.html" >/dev/null 2>/dev/null)
| |
| if [ $? -eq 0 ]
| |
| then
| |
| { lines=$(wc -l ""$temp"/status.html" | awk '{print $1}')
| |
| | |
| if [ $lines -lt 2 ] ; then
| |
| t=$(tail -n 1 ""$temp"/status.html")
| |
| echo "CRITICAL: " $t
| |
| # Logging
| |
| if [ "$logsyslog" == "1" ] ; then logger "$filename $version - CRITICAL: $t"; fi
| |
| if [ $debug -eq 1 ] ;then echo -e "Fehler - Status.html hat <2 Zeilen und sieht somit nicht korrekt aus." ; fi
| |
| | |
| exit 2;
| |
| else
| |
| {
| |
| # Datei hat mehr als 1 Zeile - also suche nach Karten
| |
| c=0
| |
| z=0
| |
| readerName="strReader"
| |
| if [ $debug -eq 1 ] ;then echo -e "Beginne Schleife um nach Readern zu suchen.\nc=$c\nz=$z\nreaderName=$readerName" ; fi
| |
| while [ $z == 0 ]
| |
| do
| |
| {
| |
| # Zähle ReaderNamen hoch
| |
| readerNameComp="$readerName$c"
| |
| if [ $debug -eq 1 ] ;then echo -e "Readername = readerNameComp=$readerNameComp\nReadernameREAL = ${!readerNameComp}" ; fi
| |
| | |
| # Suche nach Karte
| |
| b=$(grep '<TD CLASS="statuscol16">CARDOK<BR><A HREF="entitlements.html?label='${!readerNameComp}'&hideexpired=1"' "$temp"/status.html)
| |
| if [ $debug -eq 1 ] ;then echo -e "Suchstring="$b"" ; fi
| |
|
| |
| if [ $? -eq 0 ]
| |
| then
| |
| #Grep erfolgreich - aber noch nicht klar ob string gefunden
| |
| if [ ! "$b" == "" ]
| |
| then
| |
| #echo "Karte - OK"
| |
| if [ ! "$y" == "NOK" ] ; then y="OK" ; fi
| |
| e=""$e"OK: ${!readerNameComp} - "
| |
| if [ $debug -eq 1 ] ;then echo -e "Sieht gut aus - String wurde gefunden. y=$y\ne=$e" ; fi
| |
| # pattern found
| |
| # Alles gut - lösche falls vorhanden die Antiloop Datei
| |
| rm -f ""$temp"/${!readerNameComp}"
| |
| else
| |
| # String nicht gefunden, also Karte nicht OK
| |
| #echo "Karte - Not OK"
| |
| y=("NOK")
| |
| e=""$e"CRITICAL: ${!readerNameComp} - "
| |
| if [ "$codeRestart" == "$strRestart" ] ; then readerRestart ${!readerNameComp} ; fi
| |
| if [ $debug -eq 1 ] ;then echo -e "Sieht schlecht aus - String nicht gefunden. (1. Abfrage)\ny=$y\ne=$e" ; fi
| |
| fi
| |
| else
| |
| #echo "Karte - Not OK"
| |
| y=("NOK")
| |
| e=""$e"CRITICAL: ${!readerNameComp} - "
| |
| if [ "$codeRestart" == "$strRestart" ] ; then readerRestart ${!readerNameComp} ; fi
| |
| if [ $debug -eq 1 ] ;then echo -e "Sieht schlecht aus - String nicht gefunden.(2. Abfrage)\ny=$y\ne=$e" ; fi
| |
| fi
| |
| | |
| # Ende If
| |
|
| |
|
| tempCount=$[$c + 1]
| | Siehe [[Oscam Cardserver überwachen (Rapberry)|OSCam Cardserver überwachen]] |
| if [ $debug -eq 1 ] ;then echo -e "Zähle hoch - c=$c & tempCount=$tempCount" ; fi
| |
| readerNameComp="$readerName$tempCount"
| |
| if [ $debug -eq 1 ] ;then echo -e "Demnach ist der nächste Reader: $readerNameComp\nDas sollte sein:${!readerNameComp}" ; fi
| |
|
| |
|
| if [ "${!readerNameComp}" == "" ] ; then
| | == OSCam Client-Verbindung überwachen == |
| z=$[$z + 1]
| |
| if [ $debug -eq 1 ] ;then echo -e "So der nächste Reader ist leer also Abbruch der Schleife. z=$z" ; fi
| |
| else
| |
| # Zähle Reader hoch
| |
| c=$[$c + 1]
| |
| if [ $debug -eq 1 ] ;then echo -e "Ende Schleifendurchlauf. Zähle Reader hoch. c=$c" ; fi
| |
| fi
| |
| }
| |
| done
| |
|
| |
|
| if [ "$y" == 'OK' ] ; then
| | Siehe [[OSCam Client-Verbindung überwachen (Satreceiver)|OSCam Client-Verbindung überwachen]] |
| echo "$e"
| |
| # Logging
| |
| if [ "$logsyslog" == "1" ] ; then logger "$filename $version - $e"; fi
| |
| if [ $debug -eq 1 ] ;then echo -e "Fertig - Y = OK - also Exit 0." ; fi
| |
| exit 0
| |
| fi
| |
| | |
| if [ "$y" == "NOK" ] ; then
| |
| echo "$e"
| |
| # Logging
| |
| if [ "$logsyslog" == "1" ] ; then logger "$filename $version - $e"; fi
| |
| if [ $debug -eq 1 ] ;then echo -e "Fertig - Y = NOK - also Exit 2." ; fi
| |
| exit 2
| |
| fi
| |
| }
| |
| fi
| |
| }
| |
| else
| |
| {
| |
| echo "CRITICAL: Could not download status.html (StatusCheck)"
| |
| # Logging
| |
| if [ "$logsyslog" == "1" ] ; then logger "$filename $version - CRITICAL: Could not download status.html (StatusCheck)"; fi
| |
| exit 2;
| |
| }
| |
| fi
| |
| }
| |
| | |
| | |
| readerRestart() {
| |
| if [ $debug -eq 1 ] ;then echo -e "Beginne Restart Funktion - Übergabewert (Readername) ist: $1" ; fi
| |
| # echo "$strHostname:$strPort"
| |
| rm -f ""$temp"/readers.html"
| |
| # Check das Loop nicht Größer X ist - damit die Reader nicht dauernd neu gestartet werden
| |
| r=$(cat "$temp/$1" 2>/dev/null)
| |
| if [ ""$r"" == "" ] ; then r=0 ;if [ $debug -eq 1 ] ;then echo -e "Temp. Restartdatei existiert noch nicht. r=$r" ; fi; fi
| |
| if [ "$r" -ge "$anticount" ] ; then
| |
| echo "CRITICAL: Nach $r Versuchen kein Reader restart mehr."
| |
| # Logging
| |
| if [ "$logsyslog" == "1" ] ; then logger "$filename $version - CRITICAL: Nach $r Versuchen kein Reader restart mehr."; fi
| |
| # if [ $debug -eq 1 ] ;then echo -e "$filename $version - CRITICAL: Nach $r Versuchen kein Reader restart mehr." ; fi
| |
| # Deaktiviert, da sonst das Skript komplett beendet wird
| |
| # exit 2;
| |
| else
| |
| | |
| # File Download
| |
| if [ $debug -eq 1 ] ;then echo -e "readers.html wird runtergeladen - bzw. befehl disable befehl ausgeführt" ; fi
| |
| g=$(curl --connect-timeout 2 -vu ""$strUser":"$strPass"" --anyauth -o ""$temp"/readers.html" "http://$strHostname:$strPort/readers.html?label=$1&action=disable" >/dev/null 2>/dev/null)
| |
| if [ $? -eq 0 ]
| |
| then
| |
| # Antiloop hochzählen
| |
| echo $[$r+1] > "$temp/$1"
| |
| | |
| # Zähle Zeilen um Fehler fest zu stellen ( Datei muss <1 Zeile sein )
| |
| lines=$(wc -l ""$temp"/readers.html" | awk '{print $1}')
| |
| | |
| if [ $lines -lt 2 ] ; then
| |
| s=$(tail -n 1 ""$temp"/readers.html")
| |
| echo "CRITICAL: " $s
| |
| # Logging
| |
| if [ "$logsyslog" == "1" ] ; then logger "$filename $version - CRITICAL: $s"; fi
| |
| # Deaktiviert, da sonst das Skript komplett beendet wird
| |
| # exit 2;
| |
| | |
| else
| |
| # Datei hat mehr als 1 Zeile - also suche nach Karten
| |
| echo "WARNING: Reader $1 disabled"
| |
| # Aufräumen vor dem aktivieren
| |
| rm -f ""$temp"/readers.html"
| |
| lines=""
| |
| s=""
| |
| | |
| f=$(curl --connect-timeout 2 -vu ""$strUser":"$strPass"" --anyauth -o ""$temp"/readers.html" "http://$strHostname:$strPort/readers.html?label=$1&action=enable" >/dev/null 2>/dev/null)
| |
| if [ $? -eq 0 ]
| |
| then
| |
| lines=$(wc -l ""$temp"/readers.html" | awk '{print $1}')
| |
| | |
| if [ $lines -lt 2 ] ; then
| |
| s=$(tail -n 1 ""$temp"/readers.html")
| |
| echo "CRITICAL: " $s
| |
| # Logging
| |
| if [ "$logsyslog" == "1" ] ; then logger "$filename $version - CRITICAL: $s"; fi
| |
| # Deaktiviert, da sonst das Skript komplett beendet wird
| |
| # exit 2;
| |
| | |
| else
| |
| # Datei hat mehr als 1 Zeile - also suche nach Karten
| |
| echo "WARNING: Reader $1 enabled"
| |
| #sleep 10
| |
| #statuscheck
| |
| fi
| |
| fi
| |
| fi
| |
| | |
| else
| |
| echo "CRITICAL: Could not download readers.html (ReaderRestart)"
| |
| # Logging
| |
| if [ "$logsyslog" == "1" ] ; then logger "$filename $version - CRITICAL: Could not download readers.html (ReaderRestart)"; fi
| |
| # Deaktiviert, da sonst das Skript komplett beendet wird
| |
| # exit 2;
| |
| fi
| |
| fi
| |
| # -------------------------------------------------------------------
| |
| }
| |
| | |
| entitlement() {
| |
| #echo "$strHostname:$strPort"
| |
| y=""
| |
| e=""
| |
| rm -f "$temp"/status.html
| |
| | |
| # Aktualisiere Entitlements
| |
| | |
| if [ ! "$strReader0" == "" ] ; then refreshEntitlement $strReader0 ; fi
| |
| if [ ! "$strReader1" == "" ] ; then refreshEntitlement $strReader1 ; fi
| |
| if [ ! "$strReader2" == "" ] ; then refreshEntitlement $strReader2 ; fi
| |
| if [ ! "$strReader3" == "" ] ; then refreshEntitlement $strReader3 ; fi
| |
| if [ ! "$strReader4" == "" ] ; then refreshEntitlement $strReader4 ; fi
| |
| | |
| # File Download
| |
| a=$(curl --connect-timeout 2 -vu ""$strUser":"$strPass"" --anyauth -o ""$temp"/status.html" "http://$strHostname:$strPort/status.html" >/dev/null 2>/dev/null)
| |
| if [ $? -eq 0 ]
| |
| then
| |
| { lines=$(wc -l ""$temp"/status.html" | awk '{print $1}')
| |
| | |
| if [ $lines -lt 2 ] ; then
| |
| t=$(tail -n 1 ""$temp"/status.html")
| |
| echo "CRITICAL: " $t
| |
| # Logging
| |
| if [ "$logsyslog" == "1" ] ; then logger "$filename $version - CRITICAL: $t"; fi
| |
| if [ $debug -eq 1 ] ;then echo -e "Fehler - Status.html hat >2 Zeilen und sieht somit nicht korrekt aus." ; fi
| |
| | |
| exit 2;
| |
| else
| |
| {
| |
| # Datei hat mehr als 1 Zeile - also suche nach Entitlements
| |
| c=0
| |
| z=0
| |
| readerName="strReader"
| |
| entName="strEnt"
| |
| if [ $debug -eq 1 ] ;then echo -e "Beginne Schleife um nach Entitlements zu suchen.\nc=$c\nz=$z\nreaderName=$readerName\nEntitleName=$entName" ; fi
| |
| while [ $z == 0 ]
| |
| do
| |
| {
| |
| # Zähle Reader/Entitlement hoch
| |
| readerNameComp="$readerName$c"
| |
| entNameComp="$entName$c"
| |
| if [ $debug -eq 1 ] ;then echo -e "Readername = readerNameComp="$readerNameComp"\nReadernameREAL="${!readerNameComp}"\nEntitleName="$entNameComp"\nEntitlementREAL="${!entNameComp}"" ; fi
| |
| | |
| # Checke ob 1 oder mehr Entitlements
| |
| if [ "${!entNameComp}" -eq "1" ] ;then
| |
| entitleCount="entitlement"
| |
| else
| |
| entitleCount="entitlements"
| |
| fi
| |
| # Suche nach Entitlement
| |
| b=$(grep '<A HREF="entitlements.html?label='${!readerNameComp}'&hideexpired=1" CLASS="tooltip">('${!entNameComp}' '$entitleCount')<SPAN>' "$temp"/status.html)
| |
| if [ $debug -eq 1 ] ;then echo -e "Suchstring="$b"" ; fi
| |
| | |
| if [ $? -eq 0 ]
| |
| then
| |
| #Grep erfolgreich - aber noch nicht klar ob string gefunden
| |
| if [ ! "$b" == "" ]
| |
| then
| |
| #echo "Entitlement - OK"
| |
| if [ ! "$y" == "NOK" ] ; then y="OK" ; fi
| |
| e=""$e"OK: ${!readerNameComp} ("${!entNameComp}" $entitleCount) - "
| |
| if [ $debug -eq 1 ] ;then echo -e "Sieht gut aus - String wurde gefunden. y=$y\ne=$e" ; fi
| |
| else
| |
| # String nicht gefunden, also Entitlements nicht OK
| |
| y=("NOK")
| |
| e=""$e"CRITICAL: ${!readerNameComp} (${!entNameComp} $entitleCount) - "
| |
| if [ $debug -eq 1 ] ;then echo -e "Sieht schlecht aus - String nicht gefunden. (1. Abfrage)\ny=$y\ne=$e" ; fi
| |
| fi
| |
| else
| |
| #echo "Karte - Not OK"
| |
| y=("NOK")
| |
| e=""$e"CRITICAL: ${!readerNameComp} (${!entNameComp} $entitleCount) - "
| |
| if [ $debug -eq 1 ] ;then echo -e "Sieht schlecht aus - String nicht gefunden.(2. Abfrage)\ny=$y\ne=$e" ; fi
| |
| fi
| |
| | |
| # Ende If
| |
| | |
| tempCount=$[$c + 1]
| |
| if [ $debug -eq 1 ] ;then echo -e "Zähle hoch - c=$c & tempCount=$tempCount" ; fi
| |
| readerNameComp="$readerName$tempCount"
| |
| entNameComp="$entName$tempCount"
| |
| if [ $debug -eq 1 ] ;then echo -e "Demnach ist der nächste Reader: $readerNameComp\nDas sollte sein:${!readerNameComp}" ; fi
| |
| | |
| if [ "${!readerNameComp}" == "" -o "${!entNameComp}" == "" ] ; then
| |
| z=$[$z + 1]
| |
| if [ $debug -eq 1 ] ;then echo -e "So der nächste Reader ist leer also Abbruch der Schleife. z=$z" ; fi
| |
| else
| |
| # Zähle Reader hoch
| |
| c=$[$c + 1]
| |
| if [ $debug -eq 1 ] ;then echo -e "Ende Schleifendurchlauf. Zähle Reader hoch. c=$c" ; fi
| |
| fi
| |
| }
| |
| done
| |
| | |
| if [ "$y" == 'OK' ] ; then
| |
| echo "$e"
| |
| # Logging
| |
| if [ "$logsyslog" == "1" ] ; then logger "$filename $version - $e"; fi
| |
| if [ $debug -eq 1 ] ;then echo -e "Fertig - Y = OK - also Exit 0." ; fi
| |
| exit 0
| |
| fi
| |
| | |
| if [ "$y" == "NOK" ] ; then
| |
| echo "$e"
| |
| # Logging
| |
| if [ "$logsyslog" == "1" ] ; then logger "$filename $version - $e"; fi
| |
| if [ $debug -eq 1 ] ;then echo -e "Fertig - Y = NOK - also Exit 2." ; fi
| |
| exit 2
| |
| fi
| |
| }
| |
| fi
| |
| }
| |
| else
| |
| {
| |
| echo "CRITICAL: Could not download status.html (StatusCheck)"
| |
| # Logging
| |
| if [ "$logsyslog" == "1" ] ; then logger "$filename $version - CRITICAL: Could not download status.html (StatusCheck)"; fi
| |
| exit 2;
| |
| }
| |
| fi
| |
| }
| |
| | |
| | |
| refreshEntitlement() {
| |
| if [ $debug -eq 1 ] ;then echo -e "Beginne Restart Entitlement Funktion" ; fi
| |
| # echo "$strHostname:$strPort"
| |
| rm -f ""$temp"/readers.html"
| |
| # File Download
| |
| if [ $debug -eq 1 ] ;then echo -e "readers.html wird runtergeladen - bzw. refresh befehl ausgeführt" ; fi
| |
| g=$(curl --connect-timeout 2 -vu ""$strUser":"$strPass"" --anyauth -o ""$temp"/readers.html" "http://$strHostname:$strPort/readers.html?label=$1&action=reread" >/dev/null 2>/dev/null)
| |
| if [ $? -eq 0 ]
| |
| then
| |
| # Antiloop hochzählen
| |
| echo $[$r+1] > "$temp/$1"
| |
| | |
| # Zähle Zeilen um Fehler fest zu stellen ( Datei muss <1 Zeile sein )
| |
| lines=$(wc -l ""$temp"/readers.html" | awk '{print $1}')
| |
| | |
| if [ $lines -lt 2 ] ; then
| |
| s=$(tail -n 1 ""$temp"/readers.html")
| |
| echo "CRITICAL: " $s
| |
| # Logging
| |
| if [ "$logsyslog" == "1" ] ; then logger "$filename $version - CRITICAL: $s"; fi
| |
| # Deaktiviert, da sonst das Skript komplett beendet wird
| |
| # exit 2;
| |
| | |
| else
| |
| if [ $debug -eq 1 ] ;then echo "OK: Entitlement Refresh" ; fi
| |
| if [ "$logsyslog" == "1" ] ; then logger "$filename $version - OK: Entitlement Refresh von $1"; fi
| |
| fi
| |
| | |
| else
| |
| echo "CRITICAL: Could not download readers.html (ReaderRefresh)"
| |
| # Logging
| |
| if [ "$logsyslog" == "1" ] ; then logger "$filename $version - CRITICAL: Could not download readers.html (ReaderRefresh)"; fi
| |
| # Deaktiviert, da sonst das Skript komplett beendet wird
| |
| # exit 2;
| |
| fi
| |
| # -------------------------------------------------------------------
| |
| }
| |
| | |
| | |
| if [ "$strpart" == "statuscheck" ]; then
| |
| statuscheck
| |
| | |
| elif [ "$strpart" == "entitlement" ]; then
| |
| entitlement
| |
| | |
| elif [ "$strpart" == "restart" ]; then
| |
| | |
| c=0
| |
| z=0
| |
| readerName="strReader"
| |
| if [ $debug -eq 1 ] ;then echo -e "Beginne Schleife um nach Readern zu suchen.\nc=$c\nz=$z\nreaderName=$readerName" ; fi
| |
| while [ $z == 0 ]
| |
| do
| |
| {
| |
| # Zähle ReaderNamen hoch
| |
| readerNameComp="$readerName$c"
| |
| if [ $debug -eq 1 ] ;then echo -e "Readername = readerNameComp=$readerNameComp\nReadernameREAL = ${!readerNameComp}" ; fi
| |
| | |
| # Code
| |
| readerRestart ${!readerNameComp}
| |
| | |
| # Count up
| |
| tempCount=$[$c + 1]
| |
| if [ $debug -eq 1 ] ;then echo -e "Zähle hoch - c=$c & tempCount=$tempCount" ; fi
| |
| readerNameComp="$readerName$tempCount"
| |
| if [ $debug -eq 1 ] ;then echo -e "Demnach ist der nächste Reader: $readerNameComp\nDas sollte sein:${!readerNameComp}" ; fi
| |
| | |
| if [ "${!readerNameComp}" == "" ] ; then
| |
| z=$[$z + 1]
| |
| if [ $debug -eq 1 ] ;then echo -e "So der nächste Reader ist leer also Abbruch der Schleife. z=$z" ; fi
| |
| else
| |
| # Zähle Reader hoch
| |
| c=$[$c + 1]
| |
| if [ $debug -eq 1 ] ;then echo -e "Ende Schleifendurchlauf. Zähle Reader hoch. c=$c" ; fi
| |
| fi
| |
| }
| |
| done
| |
| | |
| fi
| |
| | |
| # Ende Skript
| |
| # Oscam Watchdog & Nagios Script
| |
| # -------------------------------
| |
| </pre>
| |
| | |
| === Links ===
| |
| | |
| [https://www.digital-eliteboard.com/threads/oscam-reader-ueberwachen.240969/ https://www.digital-eliteboard.com/threads/oscam-reader-ueberwachen.240969/]
| |
|
| |
|
| == Receiver == | | == Receiver == |
| Zeile 623: |
Zeile 89: |
|
| |
|
| [http://raspberry.tips/raspberrypi-tutorials/oscam-watchdog-fuer-den-raspberry-pi/ http://raspberry.tips/raspberrypi-tutorials/oscam-watchdog-fuer-den-raspberry-pi/] | | [http://raspberry.tips/raspberrypi-tutorials/oscam-watchdog-fuer-den-raspberry-pi/ http://raspberry.tips/raspberrypi-tutorials/oscam-watchdog-fuer-den-raspberry-pi/] |
| | |
| | == Raspberry == |
| | |
| | {{note|Noch in Bearbeitung}} |
| | |
| | === PID ermitteln === |
| | |
| | <pre> |
| | pidof /usr/local/bin/oscam |
| | </pre> |
| | |
| | === Script === |
| | |
| | <pre> |
| | sudo vi /usr/local/bin/oscam_watchdog.sh |
| | </pre> |
| | |
| | <pre> |
| | #!/bin/bash |
| | |
| | PIDFILE=/var/run/oscam.pid |
| | if (kill -0 `cat $PIDFILE`) |
| | then |
| | echo "it's alive!" > /dev/null |
| | else |
| | rm $PIDFILE |
| | /usr/local/bin/oscam start > /dev/null |
| | echo "OSCAM restarted at `date`" >> /var/log/oscam-crash.log |
| | fi |
| | </pre> |
| | |
| | <pre> |
| | sudo chmod +x /usr/local/bin/oscam_watchdog.sh |
| | </pre> |
|
| |
|
|
| |
|
| Zurück zu [[OSCam_(Raspberry)#Watchdog|OSCam_(Raspberry)]], [[OSCam_(Satreceiver)#Watchdog|OSCam_(Satreceiver)]] | | Zurück zu [[OSCam_(Raspberry)#Watchdog|OSCam_(Raspberry)]], [[OSCam_(Satreceiver)#Watchdog|OSCam_(Satreceiver)]] |
verwandte Themen
Siehe auch: Startup-Scripte, Mails versenden (Enigma2)
OSCam Cardserver überwachen
Siehe OSCam Cardserver überwachen
OSCam Client-Verbindung überwachen
Siehe OSCam Client-Verbindung überwachen
Receiver
Startscript ermitteln
Der Befehl
ls -la /etc/init.d/
sollte einen Eintrag wie folgenden ausgeben:
current_cam.sh -> /usr/script/oscam_1.20-unstable-11682_cam.sh
PID ermitteln
pidof oscam_1.20-unstable-11682
Script
vi /usr/script/oscam_watchdog.sh
VTi Team Image (Receiver Hofstetten):
#!/bin/bash
PID=$(pidof oscam_1.20-unstable-11682)
if (kill -0 $PID 2>/dev/null)
then
echo "it's alive!" > /dev/null
else
/usr/script/oscam_1.20-unstable-11682_cam.sh restart > /dev/null
echo "OSCAM restarted at `date +"'%d.%m.%Y %H:%M'"`" >> /tmp/crash-log-oscam.log
echo -e "OSCAM of receiver-hofstetten restarted at `date +"'%d.%m.%Y %H:%M'"`" | /usr/bin/mailx -A kirner.or.at -s "OSCAM of receiver-hofstetten restarted" admin@kirner.or.at
fi
OpenATV (Receiver Seestadt):
#!/bin/bash
PID=$(pidof /usr/bin/oscam-trunk)
if (kill -0 $PID 2>/dev/null)
then
echo "it's alive!" > /dev/null
else
/etc/init.d/softcam.oscam-trunk restart > /dev/null
echo "OSCAM restarted at `date +"'%d.%m.%Y %H:%M'"`" >> /tmp/crash-log-oscam.log
echo -e "OSCAM of receiver-seestadt restarted at `date +"'%d.%m.%Y %H:%M'"`" | /usr/bin/mailx -A kirner.or.at -s "OSCAM of receiver-seestadt restarted" admin@kirner.or.at
fi
chmod +x /usr/script/oscam_watchdog.sh
Init-Script erstellen
ln -sf /usr/script/oscam_watchdog.sh /etc/init.d/oscam_watchdog.sh
cd /etc/rc3.d/
ln -sf ../init.d/oscam_watchdog.sh /etc/rc3.d/S99oscam_watchdog.sh
Links
http://raspberry.tips/raspberrypi-tutorials/oscam-watchdog-fuer-den-raspberry-pi/
Raspberry
PID ermitteln
pidof /usr/local/bin/oscam
Script
sudo vi /usr/local/bin/oscam_watchdog.sh
#!/bin/bash
PIDFILE=/var/run/oscam.pid
if (kill -0 `cat $PIDFILE`)
then
echo "it's alive!" > /dev/null
else
rm $PIDFILE
/usr/local/bin/oscam start > /dev/null
echo "OSCAM restarted at `date`" >> /var/log/oscam-crash.log
fi
sudo chmod +x /usr/local/bin/oscam_watchdog.sh
Zurück zu OSCam_(Raspberry), OSCam_(Satreceiver)