Dein High-End Vorschlag von gestern (oscam mitloggen + nur bei bestimmten caid pingen) hat in unserem Share schon für Seufzen gesorgt.
wieso "für Seufzen gesorgt"?
hab mich damit noch nicht genauer auseinander gesetzt aber das sollte denk ich nicht so schwierig sein. die meisten haben das standard log von oscam an und begrenzen es auf 512byte grösse oder so was mehr als ausreicht..
kommt aber darauf an welche befehle dem receiver zur verfügung stehen. hab wie gesagt selber keine dreambox um das genauer testen zu können
unterscheiden sich denn die caids? also wenn du auf sky umschaltest wo du öfters freezer hast wird dann eine andere caid abgefragt oder überschneidet sich die caid mit anderen nicht-freezer sendern? das wäre nämlich nun die vorraussetzung für folgendes
ich hab mal ein kleines script zusammen geschustert was eventuell schon den gewünschten effekt bringen würde.. es macht aber noch keine aktion ausser aus zu werfen bei welcher zeile es was machen
würde (das starten des ping scripts ist auskommentiert)
im obeneren bereich musst du einstellen: wie oft es das überprüfen soll (CheckEVERY in sekunden), wo das ping script liegt, bei welcher caid es den ping starten soll, bei welcher caid der ping wieder gestoppt werden soll, wo das oscam log liegt, wieviele der letzten zeilen aus dem oscam log es überprüfen soll aber die restlichen angaben brauchst du zunächst nicht verändern..
Code:
#!/bin/sh
CheckEVERY="5"
pingscript="/usr/script/ping.check.sh"
PINGSTARTcaid="1722"
PINGSTOPcaid="1702"
_log="/tmp/OScam.log"
_last="10"
#script vars
_tmplog="/tmp/.tmplog"
_lastcheckedlog="/tmp/.lastcheckedlog"
_maxlogsize="4096"
PINGrunning=0
touch $_lastcheckedlog
while true; do
# check size of _lastcheckedlog
if [ "$(stat --printf="%s" $_lastcheckedlog)" -gt "$_maxlogsize" ]; then
echo "resetting log $_lastcheckedlog"
rm -f $_lastcheckedlog >/dev/null 2>&1
touch $_lastcheckedlog
fi
# check if ping should start
tail -n$_last $_log | grep ".*$PINGSTARTcaid\&.* found (.*" > $_tmplog
while read line; do
[ ! -z "$(cat $_lastcheckedlog | grep "$line")" ] && continue
[ -z "$line" ] && continue
[ "$PINGrunning" = "1" ] && continue
echo "$line"
echo "starting ping script $pingscript"
echo "$line" >>$_lastcheckedlog
PINGrunning=1
#$pingscript &
done < $_tmplog
# check if ping should stop
tail -n$_last $_log | grep ".*$PINGSTOPcaid\&.* found (.*" > $_tmplog
while read line; do
[ ! -z "$(cat $_lastcheckedlog | grep "$line")" ] && continue
[ -z "$line" ] && continue
[ "$PINGrunning" = "0" ] && continue
echo "$line"
echo "stopping ping script $pingscript"
killall -9 $pingscript >/dev/null 2>&1
killall -9 ping >/dev/null 2>&1
PINGrunning=0
echo "$line" >>$_lastcheckedlog
done < $_tmplog
# interval
sleep $CheckEVERY
done
exit 0
wichtig wäre das du es mit einem linux kompatiblen editor speicherst oder direkt über putty einfügst (copy&past)
ein mal ausgeführt dreht es sich für CheckEVERY im kreis also zum testen kannst du es mit "sh <script>" starten (auf der konsole über putty) und gucken was es macht. mit strg+c brichst du es dann wieder ab. später kann man es dann mit "sh <script> &" in den hintergrund schicken oder gegenbenfals auch ein "blaue taste" script basteln um es zu starten/stoppen aber erst mal gucken ob es überhaupt funktionieren würde
wichtig wäre das du es mit einem linux kompatiblen editor speicherst oder direkt über putty einfügst (copy&past)