Quantcast
Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Script zur Überprüfung oscam mit 'Rückgabewert'

AW: Script zur Überprüfung oscam mit 'Rückgabewert'

Um den Watchdog von derdigge nutzen zu können mußt du eines seiner OpenWRT-Images auf
deinem Router oder dem Pogo installieren, dort ist der Watchdog enthalten.

Mit meinem Beitrag wollte ich nur sagen, daß es ein Watchdog der OSCam permanent überwacht schon gibt.
Ich habe testweise mein OScam mal gekillt, innerhalb von 2sec wird es neu gestartet,
nach 17 sec waren alle Karten wieder on - schneller geht es wohl nicht.

Wenn du Ahnung vom scripten hast, kannst du ja mal bei derdigge nachfragen ob er dir sein Script zur Verfügung
stellt und du es für andere Hard- und Software anpassen kannst (ich bin leider nicht so der Script-Profi).
Das wäre einfacher als einen komplett neuen Watchdog zu schreiben.

Der Watchdog von derdigge ist jedenfalls der beste der mir bisher untergekommen ist.



mlG C3PO
 
AW: Script zur Überprüfung oscam mit 'Rückgabewert'

Nee, der ( Standart ) Watchdog überzeugt nicht: dort wird nur abgefragt, ob oscam rennt.
Wenn aber im Log Timeouts kommen oder die Karte nicht mehr erkannt wird, rennt oscam weiter und das merkt der Watchdog nicht.
Ich meine die Standartversion, anpassen kann man das bestimmt auch.
Mein Script fragt das Log ab, ob da z.B. ein String namens "timeout" vorkommt.
Wenn das der Fall ist, wird oscam rebootet.
 
AW: Script zur Überprüfung oscam mit 'Rückgabewert'

Mal ein paar Stichpunkte für dich.

Ich selbst habe das ganze Log AuswertMal ein paar Stichpunkte für dich.

Ich selbst habe das ganze Log Auswerten wieder rausgeworfen.en wieder rausgeworfen.

Code:
  founds1=`tail -20 /tmp/oscam.log | grep "timeout" | wc -l`
  founds2=`tail -40 /tmp/oscam.log | grep "usb bulk write failed" | wc -l`


  if [ $founds1 -gt 5 ] || [ $founds2 -gt 3 ] ||;
  then
  echo fehler

  .....

  fi
 
AW: Script zur Überprüfung oscam mit 'Rückgabewert'

Die Abfrage habe ich etwas anderst aufgebaut:
if grep -w -n timeout /var/log/ipc/OScam.log

Gibt es bei Deiner Version einen Vorteil?
Ich lerne gern dazu, kein Thema.
 
AW: Script zur Überprüfung oscam mit 'Rückgabewert'

mxer schrieb:
Mein Script fragt das Log ab, ob da z.B. ein String namens "timeout" vorkommt.
Wenn das der Fall ist, wird oscam rebootet.
Warum soll OScam jedesmal neu gestartet werden,
wenn ein billig-Schrottreceiver eine chaotische Anfrage stellt und es zum einem timeout kommt?

Dann hätte ich in den letzten 24h 28 Neustarts gehabt.
Wenn der Reader abkackt sollte OScam neu gestartet werden - oder sehe ich hier was falsch?

Klärt mich bitte mal auf.



mlG C3PO
 
AW: Script zur Überprüfung oscam mit 'Rückgabewert'

Es gibt auch Timeouts, wenn nicht gerade ein "Schrottreceiver" mal keine Verbindung bekommt.
Außerdem ist es nur als Beispiel aufgeführt.
Die Abfrage kann ja auch auf andere Strings gelegt werden.
Ist aber flexibler, als die nackte Abfrage, ob oscam als Dienst rennt.

Leider habe ich gerade kein Log zur Hand, wo ein Fehler drin ist
Mein Pogo rennt seit über 93 Tagen und das letzte Update, respektive letzter Neustart von oscam, ist auch schon 61 Tage her.
Seither rennt das ohne Probleme :dance3:
 
AW: Script zur Überprüfung oscam mit 'Rückgabewert'

Klar kann es auch zu timeouts kommen wenn der Reader abgekackt ist.
Im Normalfall wird ein Proxy genommen wenn der lokale Reader nicht mehr da ist - dann gibt es keinen timeout.
Ich denke auf timeouts zu prüfen ist keine so gute Idee, weil die ja öfters kommen
(bei mir waren es, wie gesagt, in den letzten 24h 28 Stück).

Man könnte nach ev. "Error getting card status." suchen ob ein Reader abgekackt ist.

Beim Watchdog von derdigge gebe ich an wie viele lokale Reader ich habe.
Der Watchdog prüft dann (wie auch immer) ob noch alle da sind.
Fehlt einer wird OScam neu gestartet - war bisher (seit März 2013) noch nie der Fall.
Testweise habe ich mal einen Reader abgezogen, darufhin erfolgte sofort ein Neustart von OScam.
Also funktioniert es.


mlG C3PO
 
AW: Script zur Überprüfung oscam mit 'Rückgabewert'

Die Sache von derdigge erfordert aber tieferes Einsteigen in die Materie/ Eingriff in das System.
Aber ein coole Alternative ist es auf jeden Fall :good:
 
AW: Script zur Überprüfung oscam mit 'Rückgabewert'

Ja das stimmt wohl, leider muß ich gestehen, daß ich davon keine Ahnung habe.



mlG C3PO
 
AW: Script zur Überprüfung oscam mit 'Rückgabewert'

deswegen fragte ich nach dem Punkt 4.4 Scripts ;)
Ja Grundkenntnisse vom scripten hätte ich ...

Das hätte mir auch mal wer sagen können - nun habe ich diese Watchdog Sachen schon alle in die config übernommen :(
Ich dachte der watchdog = Monitor :(
 
AW: Script zur Überprüfung oscam mit 'Rückgabewert'

Im IPC gibts den MAnager.
Dort sollte gaaaanz unten UDEV stehen, wo der Anschluß und auch der Reader mit Seriennummer drinstehen.
Rechts im Textfeld einen beliebigen NAmen vergeben und dann kann der Reader in oscam.server mit /dev/Name angesprochen werden.

was ist IPC?
Mein Server hat grundsätzlich kein UDEV.
Ich war der Annahme dass oscam für die Reader ein eigenes "UDEV" mit bringt ?!
 
AW: Script zur Überprüfung oscam mit 'Rückgabewert'

Richtiges UDEV kommt vom System.
Da der Pogo mit OpenWRT kein UDEV hat,
hat derdigge ein "pseudo-UDEV" mit in den Watchdog eingebaut.
Es ist kein richtiges UDEV, aber es funktioniert.

Hier mal die Scripte vom Pogo, ich hoffe es hilft dir:

"oscam_watchdog" in /usr/bin
#!/bin/sh

source /lib/oscamfunctions.sh

call_watchdog_init () { ##### further testing
call_monitor status 120 \
| if grep -q "|s|0|root|";then
logger "Watchdog: Oscam ist aktiv, starte Reader Erkennung!"
usleep
for i in $(ps | grep ncat | awk '{print $1}'); do
kill -9 $i 1>/dev/null 2>/dev/null
usleep
kill -9 $i 1>/dev/null 2>/dev/null
done
call_watchdog_reader_detect & exit
else
logger "Watchdog: Bekomme keine Antwort von der Monitor Schnittstelle!"
if test $(ps | grep $BIN | grep -v /bin/ash | grep -v awk | grep -v sh | grep -v grep | wc -l) -ge 2;then
logger "Watchdog: Oscam scheint aber zu laufen! Lies bitte in der DOKU nach oder frage im Forum!"
call_watchdog_check_logfile & exit
else
for i in $(ps | grep ncat | awk '{print $1}'); do
kill -9 $i 1>/dev/null 2>/dev/null
usleep
kill -9 $i 1>/dev/null 2>/dev/null
done
call_watchdog_check_logfile & exit
fi
fi
}

call_watchdog_init

"oscamfunctions.sh" in /lib
# Alle funktionen sind hier deklariert
BIN=oscam-bin
LOGFILE=/tmp/oscam.log
WLOGFILE=/tmp/oscam_watchdog.log
OPT=-b
Na=Oscam
OSCAM_SERVER=/etc/config/oscam/oscam.server
OSCAM_CONF=/etc/config/oscam/oscam.conf
OSCAM_WATCHDOG=/etc/config/oscam/oscam.watchdog
#######################################################################
## Get Config from File ##
#######################################################################
WATCHDOG_ENABLE=$(grep watchdog_enable $OSCAM_WATCHDOG | grep -v '#' | awk '{print $3}')
REBOOT_ENABLE=$(grep -w reboot $OSCAM_WATCHDOG | grep -v '#' | awk '{print $3}')
PANIC_REBOOT_ENABLE=$(grep panicreboot $OSCAM_WATCHDOG | grep -v '#' | awk '{print $3}')
PANIC_REBOOT_COUNT=$(grep -v "#" $OSCAM_WATCHDOG | awk '/panic_reboot_count/ {print $3}')
#LOCALHOST=$(/sbin/ifconfig br-lan | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}')
MON_USR=$(grep watchdog_user $OSCAM_WATCHDOG | grep -v '#' | awk '{print $3}')
MON_PWD=$(grep watchdog_pass $OSCAM_WATCHDOG | grep -v '#' | awk '{print $3}')
MON_PORT=$(grep watchdog_port $OSCAM_WATCHDOG | grep -v '#' | awk '{print $3}')
DEF_ERROR_READER='The reader was disabled|Cannot open device|Error getting card status|read failed with error|IO: Read timeout'

if test $(grep nocrypt $OSCAM_CONF | grep "127.0.0.1" | wc -l) -ge 1; then
LOCALHOST="127.0.0.1"
else
LOCALHOST=$(/sbin/ifconfig br-lan | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}')
fi

call_start() {
if test -e /etc/init.d/pcscd;then
/etc/init.d/pcscd start
sleep 1
fi
if test -e /festplatte/swapfile;then
swapon /festplatte/swapfile
fi
if test -e /overlay/swapfile;then
swapon /overlay/swapfile
fi
if test $(ps | grep $BIN | grep -v grep | grep -v sh | grep -v ash | wc -l) -ge 2; then
printf "\nVersuch des Starts abgebrocken! Ist $Na bereits aktiv?\n\n"
logger "Versuch des Starts abgebrochen! ISt $Na bereits aktiv?"
else
call_clear_log
printf "\n$Na wird gestartet!\n\n"
if test $(ps | grep $BIN | grep -v grep | grep -v sh | grep -v ash | wc -l) -lt 2; then
$BIN $OPT
fi
if test $(ps | grep usbwatch | grep -v grep | wc -l) -lt 1; then
nohup /usr/bin/usbwatch > /dev/null & sleep 2
fi
if test $WATCHDOG_ENABLE -ge 1; then
if test $(ps | grep oscam_watchdog | wc -l) -lt 2; then
nohup sh /usr/bin/oscam_watchdog > /dev/null & exit
fi
else
echo "Watchdog: Watchdog ist deaktiviert in $OSCAM_WATCHDOG. ( watchdog = 1 zum aktivieren )"
exit
fi
fi
}

call_stop() {
if test $(ps | grep $BIN | grep -v grep | grep -v sh | grep -v ash | wc -l) -ge 2; then
printf "\n$Na wird beendet!\n\n"
logger "$Na wird beendet!"
for i in $(ps | grep $BIN | grep -v /bin/ash | grep -v awk | grep -v sh | grep -v grep | awk '{print $1}'); do
kill -9 $i > /dev/null
done
for i in $(ps | grep oscam_watchdog | grep -v grep | awk '{print $1}'); do
kill -9 $i > /dev/null
done
for i in $(ps | grep ncat | grep -v grep | awk '{print $1}'); do
kill -9 $i > /dev/null
done
else
printf "\n$Na inaktiv ! Kann nicht beendet werden!\n\n"
logger "$Na inaktiv ! Kann nicht beendet werden!"
fi
}

call_restart() {
call_stop
sleep 1
call_start
}

call_update() {
if test $(grep ar71xx /etc/opkg.conf | wc -l) -ge 1;then
arch=ar71xx
fi
if test $(grep brcm63xx /etc/opkg.conf | wc -l) -ge 1;then
arch=brcm63xx
fi
if test $(grep brcm47xx /etc/opkg.conf | wc -l) -ge 1;then
arch=brcm47xx
fi
srcurl=$(awk '/http:/ {print $3}' /etc/opkg.conf)
printf "\nWillkommen beim Oscam Installservice!"
printf "\nDu hast hier die Möglichkeit Oscam oder den Watchdog upzudaten oder downzugraden."
printf "\nSobald die Installation gestartet wird, wird Oscam beendet. Du kannst jederzeit mit strg+c abbrechen.\n"
printf "\nWelches Paket möchtest du modifizieren? 1 = Oscam , 2 = Watchdog [1 oder 2] : "
read updateart
if [ "$updateart" = "1" -o "$updateart" = "1" ];then
call_stop
nohup opkg update > /dev/null
installed=$(opkg list_installed | grep oscam | grep svn)
new_aviable=$(opkg list | grep oscam | grep -v watchdog)
printf "\nDerzeit ist folgende Version installiert:\n"
printf "\n$installed\n"
printf "\nInstallierbare Versionen sind:\n"
printf "\n$new_aviable\n"
printf "\nWelche Version möchtest du installieren? [z.b. 7991] : "
read svnver
printf "Bist du dir sicher das du jetzt $Na - 1.20-svn-$svnver installieren willst? [J/N]"
read sicher1
if [ "$sicher1" = "J" -o "$sicher1" = "j" ];then
opkg remove oscam-*
opkg install oscam-$svnver --force-downgrade --nodeps
rm /tmp/oscam.ipk 2>/dev/null
fi
printf "\nInstallation ist beendet! Nun kannst du 'oscam start' eingeben oder 'oscam test' um die Version zu testen!\n"
fi
if [ "$updateart" = "2" -o "$updateart" = "2" ];then
call_stop
nohup opkg update > /dev/null
w_installed=$(opkg list_installed | grep oscam_watchdog)
w_new_aviable=$(opkg list | grep oscam_watchdog)
printf "\nDerzeit ist folgende Version installiert:\n"
printf "\n$w_installed\n"
printf "\nInstallierbare Versionen sind:\n"
printf "\n$w_new_aviable\n"
printf "\nWelche Version möchtest du installieren? [z.b. 1.00] : "
read wver
printf "Bist du dir sicher das du jetzt oscam_watchdog - $wver installieren willst? [J/N]"
read sicher2
if [ "$sicher2" = "J" -o "$sicher2" = "j" ];then
opkg remove oscam_watchdog
wget $srcurl/oscam'_'watchdog'_'$wver'_'$arch.ipk -O /tmp/watchdog.ipk
opkg install /tmp/watchdog.ipk --nodeps --force-downgrade
rm /tmp/watchdog.ipk
fi
printf "\nInstallation ist beendet.\n"
fi
}

call_status() {
call_monitor status > /tmp/status.tmp
if test $(grep '|s|' /tmp/status.tmp | wc -l) -ge 1;then
printf "\n$Na ist aktiv. Hole Details ein......\n"
sleep 1
if test $(grep '|r|' /tmp/status.tmp | wc -l) -ge 1;then
printf "\nFolgende Hardwarereader sind aktiv:\n\n"
grep '|r|' /tmp/status.tmp | sed 's/|/ /g' | awk '{print $5}'
else
printf "\nEs sind keine Hardwarereader aktiv.\n"
fi
usleep
if test $(grep '|p|' /tmp/status.tmp | wc -l) -ge 1;then
printf "\nFolgende Lines sind aktiv:\n\n"
grep '|p|' /tmp/status.tmp | sed 's/|/ /g' | awk '{print $5}'
else
printf "\nEs sind keine Lines aktiv.\n"
fi
printf "\nFolgende Benutzer sind aktiv:\n"
grep '|m|' /tmp/status.tmp | sed 's/|/ /g' | awk '{print $5}'
rm /tmp/status.tmp
else
printf "\n$Na ist inaktiv! Kein Prozess gefunden oder Monitor deaktiviert.\n"
fi
if test $WATCHDOG_ENABLE -ge 1; then
if test $(ps | grep oscam_watchdog | grep -v grep | awk '{print $1}' | wc -l) -ge 1;then
printf "\nWatchdog ist aktiv!\n"
else
printf "\nWatchdog ist inaktiv jedoch in der Config aktiviert!\n"
fi
else
printf "\nWatchdog ist deaktiviert!\n"
fi
}

call_clear_log() {
echo "------------------------------------------------------------------------------------" >> $LOGFILE.old
tail -30 $LOGFILE >> $LOGFILE.old
tail -300 $LOGFILE.old > $LOGFILE.tmp
cat $LOGFILE.tmp > $LOGFILE.old
rm $LOGFILE.tmp
echo "-" > $LOGFILE
}

call_check_reboot() {
curr_day=$(date | cut -c1-3 | grep Mon | wc -l)
curr_hou=$(date | cut -c12-13)
boot_hou=$(uptime | cut -c15)
boot_min=$(uptime | cut -c17-18)
if test -n $boot_hou;then
echo "Zeitpunkt für reboot ist nicht erreicht!"
else
boot_stmp=$(expr $boot_hou \* $boot_min)
if test $boot_stmp -ge 1 -o $curr_day -ge 1; then
reboot
fi
fi
}

call_setup() {
new_overlay=0
old_overlay=0
swap_on=0
new_hdd=0
old_hdd=0
osc_inst=0
printf "\n\n Willkommen beim Setup!"
printf "\n Du hast hier die Möglichkeit den Speicher deines Routers zu erweitern(usb-stick),"
printf "\n Festplatten ein zu binden oder ein vorher verwendeten Stick wieder herzustellen."
printf "\n Die Festplatte/der Stick wird/muss ext4 formatiert werden/sein."
printf "\n Die Festplatte/der Stick sollte spätestens jetzt angeschlossen werden."
printf "\n Das Gerät wird später mittels uuid gemountet. Dadurch kann der Stick auch mal am anderen Port stecken."
printf "\n Was möchtest du tun?\n"
printf "\n (1) - Neue Erweiterung einrichten? (2) - Alten Stick wiederherstellen?\n"
printf "\n (3) - Neue Festplatte einbinden? (4) - Alte Festplatte wiederherstellen?\n"
printf "\n (5) - Swap Speicher einrichten? (6) - Oscam und Watchdog installieren?\n"
printf "\n (Eingabe 1,2,3,4,5 oder 6):"
read case
if [ "$case" = "1" ];then
let new_overlay=$new_overlay+1
fi
if [ "$case" = "2" ];then
let old_overlay=$old_overlay+1
fi
if [ "$case" = "3" ];then
let new_hdd=$new_hdd+1
fi
if [ "$case" = "4" ];then
let old_hdd=$old_hdd+1
fi
if [ "$case" = "5" ];then
space1=$(df -m | awk '/overlayfs:/ {print $2}')
space2=$(df -m | awk '/festplatte/ {print $2}')
if test -z $space1;then
space1=129
fi
if test -z $space2;then
space2=129
fi
if test $space1 -lt 128 -o $space1 -lt 128;then
printf "\n Dein Massenspeicher ist noch nicht erfolgreich eingebunden wurden!"
else
let swap_on=$swap_on+1
fi
fi
if [ "$case" = "6" ];then
let osc_inst=$osc_inst+1
fi
if test $new_hdd = 1;then
label=festplatte
fi
if test $new_overlay = 1;then
label=overlay
fi
if test $(opkg list_installed | grep e2fsprogs | wc -l) -lt 1; then
printf "\n\n Installiere erforderliche Pakete\n\n"
nohup opkg update >> /dev/null
nohup opkg install blkid kmod-fs-ext4 kmod-usb-storage block-mount e2fsprogs >> /dev/null
sleep 5
fi
if test "$new_overlay" = "1" -o "$new_hdd" = "1" -o "$old_overlay" = "1" -o "$old_hdd" = "1";then
printf "\n\n Es sind folgende Massenspeicher angeschlossen:\n\n"
blkid
printf "\n Welcher dieser soll eingebunden werden? (Eingabe z.b. sda1) : "
read din
device=/dev/$din
if test "$old_overlay" = "1" -o "$old_hdd" = "1";then
device=$(blkid | sed 's/"/ /g' | awk '/'$device'/ {print $3}')
fi
fi
if test "$new_overlay" = "1" -o "$new_hdd" = "1" ;then
printf "\n $device wird formatiert! Bist du dir sicher? J/N :"
read sicher1
if [ "$sicher1" = "J" -o "$sicher1" = "j" ];then
printf "\n Datenträger wird formatiert.......\n"
nohup mkfs.ext4 -L $label $device > /dev/null
fi
fi
if test "$new_overlay" = "1" -o "$new_hdd" = "1" -o "$old_overlay" = "1" -o "$old_hdd" = "1";then
printf "\n Datenträger wird nun eingebunden\n"
uuid=$(blkid | grep $label | sed 's/"/ /g' | awk '{print $5}')
echo " " >> /etc/config/fstab
echo "config mount" >> /etc/config/fstab
echo " option target /$label" >> /etc/config/fstab
echo " option uuid $uuid" >> /etc/config/fstab
echo " option fstype ext4" >> /etc/config/fstab
echo " option options rw,sync" >> /etc/config/fstab
echo " option enabled 1" >> /etc/config/fstab
echo " option enabled_fsck 0" >> /etc/config/fstab
sleep 2
sync
if test $new_overlay = 1;then
mkdir /tmp/new_overlay
mkdir /tmp/old_overlay
mount $device /tmp/new_overlay
mount -o bind /overlay /tmp/old_overlay
cp -r /tmp/old_overlay/* /tmp/new_overlay -a
usleep
umount /tmp/old_overlay
umount /tmp/new_overlay
fi
printf "\n Der Vorgang ist abgeschlossen, starte Router in 10 Sekunden neu!\n"
printf "\n Du kannst nach dem Neustart deinen Swapspeicher einrichten.\n\n"
sleep 10
reboot
fi
if test $swap_on = 1;then
printf "\n Welche Größe, in MB, soll dein Swapfile haben? (Empfehlung 256) : "
read swin
sw_size=$(expr $swin \* 1024)
if test $(df -m | awk '/overlayfs:/ {print $2}') -gt 128;then
if test -e /festplatte;then
swapfile=/festplatte/swapfile
if test -e /festplatte/swapfile;then
mkswap /festplatte/swapfile
swapon /festplatte/swapfile
else
printf "\n\n Erstelle nun das Swapfile. Anhängig vom Stick kann das bis zu 20 Minuten dauern!\n\n\n"
dd if=/dev/zero of=/festplatte/swapfile bs=1024 count=$sw_size
mkswap /festplatte/swapfile
swapon /festplatte/swapfile
fi
else
swapfile=/overlay/swapfile
if test -e /overlay/swapfile;then
mkswap /overlay/swapfile
swapon /overlay/swapfile
else
printf "\n\n Erstelle nun das Swapfile. Anhängig vom Stick kann das bis zu 20 Minuten dauern!\n\n\n"
dd if=/dev/zero of=/overlay/swapfile bs=1024 count=$sw_size
mkswap /overlay/swapfile
swapon /overlay/swapfile
fi
fi
else
printf "Du hast noch kein funktionierende Speichererweiterung eingerichtet oder dieser schlug fehl.\n\n"
fi
uci set fstab.@swap[-1].device=$swapfile
uci set fstab.@swap[-1].enabled=1
uci commit fstab
printf "\n Swap Speicher sollte nun bereit stehen. Testen mit free .\n"
fi
if test $osc_inst = 1;then
if test $(grep ar71xx /etc/opkg.conf | wc -l) -ge 1;then
arch=ar71xx
fi
if test $(grep brcm63xx /etc/opkg.conf | wc -l) -ge 1;then
arch=brcm63xx
fi
if test $(grep brcm47xx /etc/opkg.conf | wc -l) -ge 1;then
arch=brcm47xx
fi
srcurl=$(awk '/http:/ {print $3}' /etc/opkg.conf)
nohup opkg update > /dev/null
printf "\n Folgende Versionen sind derzeit am Server Verfügbar:\n\n"
opkg list | grep oscam | grep -v watchdog
printf "\nSVN 6089 ist Oscam 1.10 welche als '"stable"' anzusehen ist!\n\n"
printf "\nWelche Version möchtest du installieren? [z.b. 6089] : "
read svnver
if test $svnver = 6089;then
ver=1.10
else
ver=1.20
fi
wget $srcurl/oscam_$ver-svn-$svnver'_'$arch.ipk -O /tmp/oscam.ipk
nohup opkg --nodeps --force-downgrade install /tmp/oscam.ipk > /dev/null
rm /tmp/oscam.ipk
nohup opkg install oscam_watchdog > /dev/null
/etc/init.d/oscam enable
nohup /etc/init.d/oscam start > /dev/null
printf "\n\n Oscam wurde gestartet und startet ab jetzt beim booten automatisch."
printf "\n Das Oscam Webinterface ist nun unter $(/sbin/ifconfig br-lan | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'):8888 erreichbar. Viel Spaß!\n\n"
fi
}

call_monitor() {
command=$1
time=$2
if test $(ps | grep $BIN | grep -v /bin/ash | grep -v awk | grep -v sh | grep -v grep | wc -l) -ge 2;then
if test -z $time;then
(echo -e "login $MON_USR $MON_PWD";
usleep;
echo -e "$command";
usleep;
echo -e "exit") | ncat -i 1 -u $LOCALHOST $MON_PORT 2>/dev/null
else
(echo -e "login $MON_USR $MON_PWD";
usleep;
echo -e "$command";
usleep;
echo -e "exit") | ncat -i $time -u $LOCALHOST $MON_PORT 2>/dev/null
killall -s SIGINT ncat 1>/dev/null 2>/dev/null
fi
else
sleep 1
call_monitor & exit
fi

}

call_watchdog_reader_detect () {
runde=1
call_monitor status | grep -v "logged in" > /tmp/watchdog.oscam.status
grep '|r|' /tmp/watchdog.oscam.status | sed 's/|/ /g' | awk '{print $2,$5}' > /tmp/watchdog.detect.readers
reader_count=$(grep '|r|' /tmp/watchdog.oscam.status| wc -l)
reader_count_config=0
logger "Watchdog: Es wurden $reader_count Hardware Reader erkannt:"
while test $runde -le $reader_count;do
reader_name=$(awk 'NR=='$runde'{print $2}' /tmp/watchdog.detect.readers)
reader_PPID=$(awk 'NR=='$runde'{print $1}' /tmp/watchdog.detect.readers)
reader_kind=$(grep -C 8 -i $reader_name $OSCAM_SERVER | grep -iEv "'#'|Device" | awk '/Protocol|protocol/ {print $3}')
logger "Watchdog: Reader '"$reader_name"' mit PID '"$reader_PPID"' ist bereit! ($reader_kind)"
let runde=$runde+1
done
for line in $(grep -iE "mouse|smartreader|smargo|pcsc" $OSCAM_SERVER | grep -iEv "label|smargopatch|Device|'#'|description|Description" | awk '{print $1}'); do
let reader_count_config=$reader_count_config+1
done
for line in $(grep -C 8 -iE "mouse|smartreader|smargo|pcsc" $OSCAM_SERVER | grep "enable" | grep "0" | awk '{print $1}'); do
let reader_count_config=$reader_count_config-1
done
if test $reader_count_config != $reader_count;then
logger "Watchdog: Die erkannte Readeranzahl stimmt nicht mit der in deiner Config überein!"
logger "Watchdog: Ich prüfe in deinem logfile ob währen des Statrts einer abgeschmiert ist!"
if test -e $LOGFILE;then
call_watchdog_check_logfile & exit
else
logger "Watchdog: Du hast kein Logfile welches ich prüfen kann! Überwachung der erkannten Reader startet dennoch!"
rm /tmp/oscam.try 2>/dev/null
rm /root/reboot.try 2>/dev/null
call_watchdog_shitstorm & exit
fi
else
logger "Watchdog: Readererkennung erfolgreich abgeschlossen! Überwachung beginnt!"
rm /tmp/oscam.try 2>/dev/null
rm /root/reboot.try 2>/dev/null
call_watchdog_shitstorm & exit
fi
}

call_watchdog_check_logfile () {
if test -e /tmp/oscam.try;then
reader_try=$(grep try /tmp/oscam.try | wc -l)
panic_reboot_count=$(grep panic_reboot_count $OSCAM_WATCHDOG | grep -v '#' | awk '{print $3}')
if test $reader_try -ge $panic_reboot_count;then
logger "Watchdog: Das Starten aller Reader schlug $reader_try x fehl! Die Überwachung wird Abgebrochen oder der Panikreboot wird eingeleitet!"
if test $(grep panic_reboot $OSCAM_WATCHDOG | grep -vE '#|count' | awk '{print $3}') -ge 1;then
if test -e /root/reboot.try;then
if test $(grep reboot /root/reboot.try | wc -l) -ge 3;then
logger "Watchdog: Es wurden 3 Reboots absolviert ohne Erfolg! Ich gebe auf -> EXIT."
exit
fi
else
echo reboot >> /root/reboot.try
/sbin/reboot
fi
else
exit
fi
fi
fi
if test $(grep -iE "$DEF_ERROR_READER" $LOGFILE | wc -l) -ge 1;then
logger "Watchdog: Mindestens einer deiner Reader ist nicht erfolgreich gestartet. Versuche Oscam neu zu starten!"
call_clear_log
for i in $(ps | grep $BIN | grep -v /bin/ash | grep -v awk | grep -v sh | grep -v grep | awk '{print $1}'); do
kill -9 $i 1>/dev/null 2>/dev/null
done
usleep
$BIN $OPT
usleep
echo "try" >> /tmp/oscam.try
call_watchdog_init & exit
else
rm /tmp/oscam.try 2>/dev/null
rm /root/reboot.try 2>/dev/null
if test -z $1;then
logger "Watchdog: Im Logfile finde ich nichts auffälliges! Überwachung beginnt nun!"
logger "Watchdog: Gib mal derdigge bescheid, wir müssen da wahrscheinlich was patchen! Danke!"
call_watchdog_shitstorm & exit
elif test $1 = loop;then
call_watchdog_init & exit
fi
fi
}

call_watchdog_deadreader () {
sleep 1
let cws=$cws+1
for i in $(ps | grep ncat | awk '{print $1}'); do
kill -9 $i 1>/dev/null 2>/dev/null
usleep
kill -9 $i 1>/dev/null 2>/dev/null
done
call_clear_log
$BIN $OPT
echo "try" >> /tmp/oscam.try
sleep 5
call_watchdog_check_logfile loop & exit
}

call_watchdog_deadoscam () {
sleep 1
let cws=$cws+1
for i in $(ps | grep ncat | awk '{print $1}'); do
kill -9 $i 1>/dev/null 2>/dev/null
usleep
kill -9 $i 1>/dev/null 2>/dev/null
done
for i in $(ps | grep $BIN | grep -v /bin/ash | grep -v awk | grep -v sh | grep -v grep | awk '{print $1}'); do
kill -9 $i 1>/dev/null 2>/dev/null
done
call_clear_log
$BIN $OPT
echo "try" >> /tmp/oscam.try
sleep 5
call_watchdog_check_logfile loop & exit
}

call_watchdog_shitstorm () {
cws=1
(echo -e "login $MON_USR $MON_PWD";
usleep;
while [ $cws -le 1 ]; do
echo -e "login $MON_USR $MON_PWD";
usleep;
echo -e "log on";
usleep;
echo -e "keepalive";
usleep;
done
echo -e "exit") \
| ncat -u $LOCALHOST $MON_PORT 2>/dev/null \
| while [ $cws -le 1 ]; do
if grep -q -iE "$DEF_ERROR_READER";then
logger "Watchdog: Einer deiner Reader hat sich soeben verabschiedet! Details : cat /tmp/oscam.log.old "
usleep
call_watchdog_deadreader & exit
elif test -z $(grep keepalive_ack);then
logger "Watchdog: Oscam hat sich soeben verabschiedet oder neugestartet vom Benutzer!"
usleep
call_watchdog_deadoscam & exit
fi
done
}



mlG C3PO
 
wow da hat sich derdigge aber Mühe gemacht!
Danke für die scripts - ich werde das mal testen - mein eisfair hat auch kein UDEV ;)

sicher dass das alle Scripte sind?
ein wenig Unterstützung von derdigge werde ich wohl doch benötigen ... wie kann ich ihn animieren hier mal rein zu schauen?


@Pilot bezgl. Deines Kommentars - ich habe die bearbeiten Taste gefunden - habe ja auch schon mehrere Beiträge geändert - leider gibt es ab und zu - häufig wenn die Beiträge noch recht frisch sind - Probleme beim Speichern der Änderung.
 
Zuletzt bearbeitet:
AW: Script zur Überprüfung oscam mit 'Rückgabewert'

Wenn du irgendwelche Verlinkungen zu weiteren Scripten findest,
dann gib bescheid - ich stelle sie dir zur Verfügung.



mlG C3PO
 
Zurück
Oben