cccam-watchdog.sh

rolu2
IPC Anfänger
Beiträge: 70
Registriert: Sa 21. Mai 2011, 16:05
Kontaktdaten:

cccam-watchdog.sh

Beitrag von rolu2 »

Kann mir jemand erklären, wo der Unterschied ist in der cccam-watchdog.sh. Die Orginal im IPC drin ist
Spoiler
Show

Code: Alles auswählen

#!/bin/bash
# IPC - CCcam-Watchdog
#

. /var/emu/script/functions.sh
readipccfg
[ -z $CCNAME ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $CCVERSION ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z "$TIMESTAMP2" ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $CAMLOGS ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $CRASHMAIL ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1

SUBJECT="$CCNAME Watchdog !"
MESSAGE1="$CCNAME wurde auf `hostname -f` vom Watchdog Überwachungsscript neu gestartet."
MESSAGE2="$CCNAME ist auf `hostname -f` mehrfach gestartet, Konfiguration scheint fehlerhaft zu sein!"

#CCcam gestart ?
PID="$(pgrep -x $CCVERSION)"
if [[ ! -z $PID ]] ; then
	echo "$TIMESTAMP2    Watchdog - CCcam Server laeuft"
else
	cccam start
	echo "$TIMESTAMP2    Watchdog - CCcam wurde neu gestartet" >> $CAMLOGS/CCcam-watchdog.log
	#readipccfg
	[ $CRASHMAIL == 1 ] && mailsend "$SUBJECT" "$MESSAGE1"
fi

#CCcam mehrfach gestartet ?
ANZAHL="$(pgrep -c $CCVERSION)"
if [ $ANZAHL -gt 1 ] ; then
	[ $CRASHMAIL == 1 ] && mailsend "$SUBJECT" "$MESSAGE2"
fi

exit 0
und der hier
Spoiler
Show

Code: Alles auswählen

#!/bin/bash
# IPC - CCcam-Watchdog
# v2

# Enable responding-check ? [1/0]
RESPONDCHECK="1"

# delay interval for lines sent (for responding check) [default: <empty>]
# NOTE: DON'T edit unless you know what you are doing!
# NOTE: if your CCcam-server runs on an 1xChip dbox its possible that the
# respond-check tooks too long for this script. Than you need to set
# this to '-i 3' or '-i 4'... it waits longer befor quit and fail...
NCINTERVAL="-i 1"

CCCAMIP="127.0.0.1"


# -------------------------------------------------------------- #
# >>> >> >  DO NOT MESS WiTH ANYTHiNG BELOW THiS LiNE!  < << <<< #
# -------------------------------------------------------------- #

. /var/emu/script/functions.sh
readipccfg
[ -z $CCNAME ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $CCVERSION ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z "$TIMESTAMP2" ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $CAMLOGS ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $CRASHMAIL ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $RESPONDCHECK ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $CCCFG ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1

CHECKFILE="/tmp/cccamtest.log"
WATCHDOGLOCK="/tmp/.CCcamWatchdog.lock"
SUBJECT="$CCNAME Watchdog!"
MESSAGE1="$CCNAME wurde auf `hostname -f` vom Watchdog Überwachungsscript neu gestartet"
MESSAGE2="$CCNAME ist auf `hostname -f` mehrfach gestartet, Konfiguration scheint fehlerhaft zu sein!"

proc_SendEMail() {
	msg=$1
	[ $CRASHMAIL != 1 ] && return
	mailsend "$SUBJECT" "$msg"
	echo "CrashEmail verschickt.."
}

# This method checks if CCcam is still responding like it should
check_respond() {
	proc_Get_CCcamcfg
	echo "$CCNAME process is present, now checking if its frozen.."
	echo info|nc $NCINTERVAL $CCCAMIP $CCTPORT >$CHECKFILE
	if [ "$?" != "0" ]; then
		echo "ERROR while connecting to $CCNAME!"
		proc_SendEMail "$CCNAME: Fehler beim verbinden für RespondCheck auf `hostname -f`!"
		proc_exit
	fi
	CHECKED=$(ls -s $CHECKFILE)
	if [ "$CHECKED" = "0" ]; then
		echo " BAD - $CCNAME is frozen, restarting: $CCVERSION"
		cccam restart
		MESSAGE1+=" weil es nicht mehr reagierte!"
		proc_SendEMail "$MESSAGE1"
	else
		echo " OK - $CCNAME is responding like it should!"
		# FixMe: output responding to shell if its triggered with: -v
		if [ "$1" = "-v" ]; then
			echo "$CCNAME responding:"
			echo $(cat $CHECKFILE)
		fi
	fi
}

# read CCcam.cfg
proc_Get_CCcamcfg() {
	CCTELNET=$(grep -i "ALLOW TELNETINFO" $CCCFG | cut -d ":" -f2 | sed -e 's/ //g' | sed -e 's/\r//g' | awk {'print $1'})
	CCTPORT=$(grep -i "TELNETINFO LISTEN PORT" $CCCFG | cut -d ":" -f2 | sed -e 's/ //g' | sed -e 's/\r//g')
	CCTUSER=$(grep -i "TELNETINFO USERNAME" $CCCFG | cut -d ":" -f2 | sed -e 's/ //g' | sed -e 's/\r//g')
	CCTPASS=$(grep -i "TELNETINFO PASSWORD" $CCCFG | cut -d ":" -f2 | sed -e 's/ //g' | sed -e 's/\r//g')
	[ "$CCTELNET" != "yes" ] && clear && echo -e "\033[1;31mKonfigurationsfehler! ALLOW TELNETINFO muss auf \"yes\" gestellt werden\033[0m" && proc_exit
	[ -z "$CCTPORT" -a "$CCTELNET" == "yes" ] && CCTPORT="16000"
}

proc_exit() {
	rm -f $WATCHDOGLOCK
	exit 0
}

## Script darf nur einmal gleichzeitig ausfuehren werden (innerhalb 1min)
if [ -e "$WATCHDOGLOCK" ]; then
	if [ "`find \"$WATCHDOGLOCK\" -type f -mmin -1`" ]; then
		echo "Lockfile $WATCHDOGLOCK exists and is not 1 minutes old yet. Quitting!"
		exit 0
	else
		echo "Lockfile exists, but its older then 1 minutes. Removing lockfile."
		touch "$WATCHDOGLOCK"
	fi
else
	touch "$WATCHDOGLOCK"
fi


#CCcam gestart?
PID="$(pgrep -x $CCVERSION)"
if [[ ! -z $PID ]] ; then
	echo "$TIMESTAMP2	 Watchdog - CCcam Server laeuft"
	[ $RESPONDCHECK == 1 ] && check_respond
else
	cccam start
	echo "$TIMESTAMP2	 Watchdog - CCcam wurde neu gestartet" >> $CAMLOGS/CCcam-watchdog.log
	proc_SendEMail "$MESSAGE1"
fi

#CCcam mehrfach gestartet?
ANZAHL="$(pgrep -c $CCVERSION)"
if [ $ANZAHL -gt 1 ] ; then
	proc_SendEMail "$MESSAGE2"
fi

proc_exit
die ist meine ich auch von hier
gruß rolu2
feissmaik
Entwickler Team
Beiträge: 2576
Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:

Re: cccam-watchdog.sh

Beitrag von feissmaik »

das erste ist die, die bei IPC standardmässig dabei ist und die 2. ist eine veränderte version von mir mit respons check wie sie requested wurde... das standard script guckt nur ob der prozess noch da ist, meine veränderung guckt aber auch ob es noch reagiert - über telnet....
Du musst nicht kämpfen um zu siegen
rolu2
IPC Anfänger
Beiträge: 70
Registriert: Sa 21. Mai 2011, 16:05
Kontaktdaten:

Re: cccam-watchdog.sh

Beitrag von rolu2 »

Kann man deine 1zu1 übernehmen oder muss da noch etwas angepasst werden
gruß rolu2
feissmaik
Entwickler Team
Beiträge: 2576
Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:

Re: cccam-watchdog.sh

Beitrag von feissmaik »

normalerweise nicht aber generell kann man sagen das; wenn was einzustellen ist, das am anfang des scripts steht

um den respondcheck nutzen zu können muss aber natürlich "TELNETINFO LISTEN PORT" gesetzt und "TELNETINFO USERNAME" sowie "TELNETINFO PASSWORD" in der CCcam.cfg ebenfals gesetzt aber leer gelassen werden...


allerdings kann man auch den standard watchdog bestehen lassen und stattdessen zusätzlich dieses script einrichten, weil den WEBINFO krams hat man meistens sowieso schon an...
Du musst nicht kämpfen um zu siegen
feissmaik
Entwickler Team
Beiträge: 2576
Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:

Re: cccam-watchdog.sh

Beitrag von feissmaik »

...Ich hatte das Script schon früher umgebaut aber leider jetzt erst auch hier auf dem OnlineServer aktualisiert...

Jetzt kann man wieder auf TELNET verzichten - stattdessen wird der WEBINFO port genutzt um zu prüfen ob CCcam noch reagiert


-> wget -O/var/emu/script/cccam-watchdog.sh ipc.pebkac.at/ipc/scripts/cccam-watchdog.sh && chmod +x /var/emu/script/cccam-watchdog.sh

Spoiler
Show

Code: Alles auswählen

#!/bin/bash
# IPC - CCcam-Watchdog
# v3

# Enable responding-check ? [1/0]
RESPONDCHECK="1"

# IP/Host of your CCcam-Server to connect to...
CCCAMIP="localhost"

# which command restarts cccam?
RestartCAMcmd="/var/emu/script/cccam restart"


# -------------------------------------------------------------- #
# >>> >> >  DO NOT MESS WiTH ANYTHiNG BELOW THiS LiNE!  < << <<< #
# -------------------------------------------------------------- #

. /var/emu/script/functions.sh
readipccfg
[ -z $CCNAME ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $CCVERSION ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z "$TIMESTAMP2" ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $CAMLOGS ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $CRASHMAIL ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $RESPONDCHECK ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $CCCFG ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1

CHECKFILE="/tmp/cccamtest.log"
WATCHDOGLOCK="/tmp/.CCcamWatchdog.lock"
SUBJECT="$CCNAME Watchdog!"
MESSAGE1="$CCNAME wurde auf `hostname -f` vom Watchdog Überwachungsscript neu gestartet"
MESSAGE2="$CCNAME ist auf `hostname -f` mehrfach gestartet, Konfiguration scheint fehlerhaft zu sein!"

_tmpdirs="/tmp /var/tmp /var/emu/tmp /usr/tmp /usr/local/tmp"
[ ! -z "$HOME" ] && _tmpdirs="${_tmpdirs} $HOME"
for _td in $_tmpdirs; do
	[ -d "$_td" -a -w "$_td" ] && TMPd=$_td && break
done
[ -z "$TMPd" ] && TMPd="" || TMPd=$TMPd/

proc_SendEMail() {
	msg=$1
	[ $CRASHMAIL != 1 ] && return
	mailsend "$SUBJECT" "$msg"
	echo "CrashEmail verschickt.."
}

# read CCcam.cfg and extract user/pass/port
proc_read_CCCFG() {
	[ ! -z "$CCCFG" -a ! -f "$CCCFG" ] && echo "ERROR cant find $CCCFG" && proc_exit
	USERNAME=`grep -i "WEBINFO USERNAME" $CCCFG | cut -d ":" -f2 | sed -e 's/ //g' | sed -e 's/\r//g'`
	PASSWORD=`grep -i "WEBINFO PASSWORD" $CCCFG | cut -d ":" -f2 | sed -e 's/ //g' | sed -e 's/\r//g'`
	WEBINFOPORT=`grep -i "WEBINFO LISTEN PORT" $CCCFG | cut -d ":" -f2 | sed -e 's/ //g' | sed -e 's/\r//g'`
}

proc_get_infos() {
	proc_read_CCCFG
	[ -z "$WEBINFOPORT" ] && WEBINFOPORT="16001"
	[ -z "$CCCAMIP" ] && CCCAMIP="127.0.0.1"
	if [ -z "$USERNAME" ]; then
		URL="http://${CCCAMIP}:${WEBINFOPORT}"
	else
		URL="http://"`proc_url_encode "${USERNAME}"`":"`proc_url_encode "${PASSWORD}"`"@${CCCAMIP}:${WEBINFOPORT}"
	fi
}

proc_exit() {
	rm -f $WATCHDOGLOCK
	exit 0
}

# Simple URL encoding
proc_url_encode() {
	out=${1//%/%25}; out=${out//\{/%7B}; out=${out//\}/%7D}; out=${out//|/%7C};
	out=${out//\\/%5C}; out=${out//^/%5E}; out=${out//~/%7E}; out=${out//[/%5B};
	out=${out//]/%5D}; out=${out//\`/%60}; out=${out//#/%23}; out=${out//>/%3E};
	out=${out//\$/%24}; out=${out//&/%26}; out=${out//+/%2B}; out=${out//,/%2C};
	out=${out//\//%2F}; out=${out//:/%3A}; out=${out//;/%3B}; out=${out//=/%3B};
	out=${out//\?/%3F}; out=${out// /%20}; out=${out//</%3C};
	out=${out//\!/%21}; out=${out//\"/%22}; out=${out//\@/%40}; out=${out//\'/%27};
	out=${out//\(/%28}; out=${out//\)/%29}; out=${out//\*/%2A}; out=${out//\-/%2D};
	out=${out//\_/%5F}; out=${out//\./%2E}; out=${out//\€/%80};
	echo $out
}

# This method checks if CCcam is still responding like it should
check_respond() {
	proc_get_infos
	rm -f ${TMPd}CCcamCheck.html
	wget -q -O - "${URL}/" > ${TMPd}CCcamCheck.html
	if [ $? -ne "0" ]; then
		echo "Fehler beim anmelden/verbinden aufs CCcam WebIf!"
		proc_SendEMail "$CCNAME: Fehler beim verbinden fuer RespondCheck auf `hostname -f`!"
		proc_exit
	fi
	sleep 1
	if [ ! -f "${TMPd}CCcamCheck.html" ]; then
		echo " BAD - CCcam seems frozen, restarting CCcam!"
		$RestartCAMcmd
		if [ $? -ne "0" ]; then
			echo "Fehler beim ausfuehren des CCcam-restart commands! $RestartCAMcmd"
			proc_SendEMail "Fehler beim ausfuehren des CCcam-restart commands! $RestartCAMcmd"
			proc_exit
		fi
		MESSAGE1+=" weil es nicht mehr reagierte!"
		proc_SendEMail "$MESSAGE1"
	else
		echo " OK - $CCNAME is responding like it should!"
	fi
}

## Script darf nur einmal gleichzeitig ausgefuehrt werden (innerhalb 1min)
if [ -e "$WATCHDOGLOCK" ]; then
	if [ "`find \"$WATCHDOGLOCK\" -type f -mmin -1`" ]; then
		echo "Lockfile $WATCHDOGLOCK exists and is not 1 minutes old yet. Quitting!"
		exit 0
	else
		echo "Lockfile exists, but its older then 1 minutes. Removing lockfile."
		touch "$WATCHDOGLOCK"
	fi
else
	touch "$WATCHDOGLOCK"
fi


#CCcam gestartet?
PID="$(pgrep -x $CCVERSION)"
if [[ ! -z $PID ]] ; then
	echo "$TIMESTAMP2	 Watchdog - CCcam Server laeuft"
	[ $RESPONDCHECK == 1 ] && check_respond
else
	cccam start
	echo "$TIMESTAMP2	 Watchdog - CCcam wurde neu gestartet" >> $CAMLOGS/CCcam-watchdog.log
	proc_SendEMail "$MESSAGE1"
fi

#CCcam mehrfach gestartet?
ANZAHL="$(pgrep -c $CCVERSION)"
if [ $ANZAHL -gt 1 ] ; then
	proc_SendEMail "$MESSAGE2"
fi

proc_exit
Du musst nicht kämpfen um zu siegen
Cubelles
IPC Neuling
Beiträge: 47
Registriert: Mi 20. Apr 2011, 16:34
Kontaktdaten:

Re: cccam-watchdog.sh

Beitrag von Cubelles »

hallo freissmaik,

habe das problem das das meine cccam nach einem ausfall nicht nicht neu startet.

habe die modifizierte cccam-watchdog.sh eingebunden:

wget -O/var/emu/script/cccam-watchdog.sh ipc.pebkac.at/ipc/scripts/cccam-watchdog.sh && chmod +x /var/emu/script/cccam-watchdog.sh

mit dem eintrag in i jobs:

* * * * * root /var/emu/script/cccam-watchdog.sh

die cccam sollte mit diesem eintrag jede minute getestet werden !?

funktioniert aber nicht …, was mache ich falsch ?

habe den eindruck, dass das script gar nicht gestartet wird …


gruß
feissmaik
Entwickler Team
Beiträge: 2576
Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:

Re: cccam-watchdog.sh

Beitrag von feissmaik »

führ das script doch mal manuell aus um zu sehen ob es gestartet werden kann

du kannst es auch mal im debug-modus ausführen um zu sehen was macht bzw was er nicht macht:
bash -x /var/emu/script/cccam-watchdog.sh


vorraussetzung für den REPSONDCHECK ist ein eingeschaltetes WEBINFO (ALLOW WEBINFO: yes)

evtl. hast du auch irgendwelche sonderzeichen als USERNAME oder PASSWORD gesetzt für das WEBINFO... wenn das der fall ist mal ohne sonderzeichen probieren
Du musst nicht kämpfen um zu siegen
Cubelles
IPC Neuling
Beiträge: 47
Registriert: Mi 20. Apr 2011, 16:34
Kontaktdaten:

Re: cccam-watchdog.sh

Beitrag von Cubelles »

manuell funktioniert es ... cccam rennt auch danach, es geht aber nicht über i jobs
wo ich es so eingetragen habe:

* * * * * root /var/emu/script/cccam-watchdog.sh

die oscam-watchdog.sh geht ja und macht auch seine arbeit ....:

* * * * * root /var/emu/script/oscam-watchdog.sh

ist schon etwas seltsam ...


root@Card-Server /var/emu/script > ./cccam-watchdog.sh
CCcam : gestartet
Cron : gestartet
Sende E-Mail...
Apr 18 15:02:38 card-server sendEmail[650]: WARNING => The argument after -xu wa
Apr 18 15:02:38 card-server sendEmail[650]: WARNING => The argument after -xp wa
Apr 18 15:02:39 card-server sendEmail[650]: ERROR => Connection attempt to mail.
CrashEmail verschickt..


gruß
feissmaik
Entwickler Team
Beiträge: 2576
Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:

Re: cccam-watchdog.sh

Beitrag von feissmaik »

Code: Alles auswählen

Apr 18 15:02:38 card-server sendEmail[650]: WARNING => The argument after -xu wa
Apr 18 15:02:38 card-server sendEmail[650]: WARNING => The argument after -xp wa
...wa...? steht da noch mehr?
hast du auch apt-get install sendEmail installiert?

ich könnte mir grad nur vorstellen das jede minute zu kurzfristig is da das script einen "lockfile" schutz hat um nicht mehrmals gleichzeitig ausgeführt zu werden... stell das mal auf alle 2min

Code: Alles auswählen

*/2 * * * * root /var/emu/script/cccam-watchdog.sh
/EDIT: wobei, das kann eigentlich auch nicht sein, das lock file wird nach beenden des scripts gelöscht.... also zZt bin ich überfragt... könntest die ausgabe des scripts in der crontab noch umleiten um ggf zu sehen woran es hapert:

Code: Alles auswählen

* * * * * root /var/emu/script/cccam-watchdog.sh >>/tmp/cccam-watchdog.log 2>&1
das 2>&1 bewirkt das auch der error kanal umgeleitet wird auf den kanal 1 und der wiederum landet in der log datei...

erklärung dazu: http://wwwcip.informatik.uni-erlangen.d ... nkung.html
http://www.xaprb.com/blog/2006/06/06/wh ... l-21-mean/
Du musst nicht kämpfen um zu siegen
Cubelles
IPC Neuling
Beiträge: 47
Registriert: Mi 20. Apr 2011, 16:34
Kontaktdaten:

Re: cccam-watchdog.sh

Beitrag von Cubelles »

apt-get install sendEmail

hab ich noch nicht installiert, das ist aber im mom nicht so wichtig ....

das schreibt die das log ... UNGLAUBLICH

2012-04-18 18:47 Watchdog - CCcam Server laeuft
OK - CCcam is responding like it should!

glaub es mir die cccam rennt definitiv nicht

da wird irgendwas vorgegaukelt ...
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste