[SCRIPT] SHUTDOWN - Wenn kein Client erreichbar ist

  • [NAS Typ:] bedingt alle
    [Firmware:] (ab 2.0.0)
    [Getestet:] ja, mit TS-109 und TS-239
    [Sonstige Modifikationen:] Anpassung der Hosts-Liste
    [Autor:] Eraser-EMC2- / Stefan


    Wenn alle aufgeführten Clients nicht mehr erreichbar sind, fährt der Server herunter.
    Beispiel der Config-Datei:

    Code
    [GENERAL]CHECK = NQDOWNLOAD = NLOG = NHOSTS = 2 3 4 5SUBNET = 192.168.0.


    Client-Liste (mit Leerzeichen getrennt) in der /etc/config/wait4pc.conf:

    Code
    HOSTS = 2 3 4 5


    Die richtige IP-Adresse wird im Script zusammengefaßt.
    Mit dem Eintrag "CHECK = Y" wird das Script aktiv.


    Von der Kommandozeile kann man es mit "wait4pc.sh -s on" aktivieren bzw. mit "wait4pc.sh -s off" deaktivieren.


    Die vorhandenen Shutdown-Einträge werden automatisch angepaßt.


    Installiert wird es zB. mit "/share/HDA_DATA/Public/wait4pc.sh -i".
    Das Script wird nun grundsätzlich alle 5 Minuten zur Überprüfung gestartet.
    Es wird zusätzlich 1 Eintrag in die crontab vorgenommen:

    Code
    */${INTERVAL} * * * * ${INSTPATH}/wait4pc.sh   # regelmäßige Überprüfung


    ${INSTPATH} wird durch den Pfad ersetzt, aus dem das Script gestartet wurde,
    danach sollte man ohne Anpassung der Crontab die Script-Datei nicht verschieben.


    Weitere Überprüfungen können über das Menü "/share/HDA_DATA/Public/wait4pc.sh -m" oder direkt angesteuert
    Hiermit bekommt man eine Kommando-Übersicht : "/share/HDA_DATA/Public/wait4pc.sh -?"


    Es kann die Überprüfung der Downloads über Qdownload/Qget
    und ein Eintrag in die QNAP-NAS-Log aktiviert werden.


    Bash
    #!/bin/shDATUM=`date '+%Y-%m-%d_%H-%M'`;SYSLOG=`which write_log`CUT=`which cut`GETCFG=`which getcfg`SETCFG=`which setcfg`UPPERCASE=`which uppercase`LOWERCASE=`which lowercase`PS=`which ps`GREP=`which grep`WC=`which wc`PING=`which ping`SMBNET="/usr/local/samba/bin/net"WAITCONF="/etc/config/wait4pc.conf"ULINUX="/etc/config/uLinux.conf"DOWNLOADLIST="/etc/config/downloadlist"CRONTAB="/etc/config/crontab"CRONTAB_NEW="/tmp/crontab"INSTPATH=`pwd`log () {	[ "x${bWATCHLOG}" = "xY" ] && ${SYSLOG} "$1" 4;	echo "$1"}func_set_ping_on() {	${SETCFG} GENERAL PING Y -f ${WAITCONF}	log "Host-Überprüfung aktiviert"}func_set_ping_off() {	${SETCFG} GENERAL PING N -f ${WAITCONF}	log "Host-Überprüfung deaktiviert"}func_set_qdownload_on() {	${SETCFG} GENERAL QDOWNLOAD Y -f ${WAITCONF}	log "Qdownload-Überprüfung aktiviert"}func_set_qdownload_off() {	${SETCFG} GENERAL QDOWNLOAD N -f ${WAITCONF}	log "Qdownload-Überprüfung deaktiviert"}func_set_samba_on() {	${SETCFG} GENERAL SAMBA Y -f ${WAITCONF}	log "Samba-Überprüfung aktiviert"}func_set_samba_off() {	${SETCFG} GENERAL SAMBA N -f ${WAITCONF}	log "Samba-Überprüfung deaktiviert"}func_set_rsync_on() {	${SETCFG} GENERAL RSYNC Y -f ${WAITCONF}	log "rsync-Überprüfung aktiviert"}func_set_rsync_off() {	${SETCFG} GENERAL RSYNC N -f ${WAITCONF}	log "rsync-Überprüfung deaktiviert"}func_set_shutdown_on() {	${SETCFG} GENERAL CHECK Y -f ${WAITCONF}	log "automatischer Shutdown aktiviert"}func_set_shutdown_off() {	${SETCFG} GENERAL CHECK N -f ${WAITCONF}	log "automatischer Shutdown deaktiviert"}func_set_log_on() {	${SETCFG} GENERAL LOG Y -f ${WAITCONF}	log "Script-Log aktiviert"}func_set_log_off() {	${SETCFG} GENERAL LOG N -f ${WAITCONF}	log "Script-Log deaktiviert"}func_get_check() {	bCHECK=`${GETCFG} GENERAL CHECK -f ${WAITCONF} -d N`}func_get_ping() {	bPING=`${GETCFG} GENERAL PING -f ${WAITCONF} -d N`}func_get_qdownload() {	bQDOWNLOAD=`${GETCFG} GENERAL QDOWNLOAD -f ${WAITCONF} -d N`}func_get_samba() {	bSAMBA=`${GETCFG} GENERAL SAMBA -f ${WAITCONF} -d N`}func_get_rsync() {	bRSYNC=`${GETCFG} GENERAL RSYNC -f ${WAITCONF} -d N`}func_get_log() {	bWATCHLOG=`${GETCFG} GENERAL LOG -f ${WAITCONF} -d N`}func_get_sessions() {	iSESSIONS=`${SMBNET} status sessions parseable | wc -l`}func_get_subnet() {	sSUBNET=`${GETCFG} GENERAL SUBNET -f ${WAITCONF}`}func_get_hosts() {	sHOSTS=`${GETCFG} GENERAL HOSTS -f ${WAITCONF}`}func_get_nas() {	NAS=`${GETCFG} System Model -f /etc/config/uLinux.conf`}func_menu() {clearwhile [ "$CHOICE" != "x" ]&&[ "$CHOICE" != "X" ]; do	func_get_check	echo "-----------------------------------------------------"	if [ "x${bCHECK}" = "xY" ]; then		echo " [ 1 ]  automatischer Shutdown     [ on  ]           "	else		echo " [ 1 ]  automatischer Shutdown     [ off ]"	fi	func_get_ping	if [ "x${bPING}" = "xY" ]; then		echo " [ 2 ]  Host-Überwachung ( ping )  [ on  ]"	else		echo " [ 2 ]  Host-Überwachung ( ping )  [ off ]"	fi	func_get_qdownload	if [ "x${bQDOWNLOAD}" = "xY" ]; then		echo " [ 3 ]  QDownload überwachen       [ on  ]"	else		echo " [ 3 ]  QDownload überwachen       [ off ]"	fi	func_get_samba	if [ "x${bSAMBA}" = "xY" ]; then		echo " [ 4 ]  Samba überwachen           [ on  ]"	else		echo " [ 4 ]  Samba überwachen           [ off ]"	fi	func_get_rsync	if [ "x${bRSYNC}" = "xY" ]; then		echo " [ 5 ]  rsync überwachen           [ on  ]"	else		echo " [ 5 ]  rsync überwachen           [ off ]"	fi	func_get_log	if [ "x${bWATCHLOG}" = "xY" ]; then		echo " [ 6 ]  Script-Log                 [ on  ]"	else		echo " [ 6 ]  Script-Log                 [ off ] "	fi	echo "                                                     "	echo " [ p ]  Crontab-Einträge prüfen    [  x  ]"	echo "                                                     "	func_get_subnet	echo "    IP-Bereich         : [ ${sSUBNET} ] "	func_get_hosts	echo "    Host-Adressen      : [ ${sHOSTS} ]"	func_get_sessions	echo "    SAMBA-Verbindungen : ["${iSESSIONS}" ] "	RSYNC=`${GETCFG} System "Rsync Support" -f ${ULINUX} -d FALSE`	if [ "x${RSYNC}" = "xTRUE" ]; then		COUNT2=`${PS} | ${GREP} rsync | ${WC} -l`		COUNT2=`expr ${COUNT2} - 2`		echo "    Rsync-Prozesse     : [ ${COUNT2} ]"	fi	echo "                                                     "	echo " [ u ]  Wait4pc deinstallieren     [  x  ]"	echo "                                                     "	echo " [ x ]  Exit                                         "	echo "-----------------------------------------------------"	read CHOICE	clear	case ${CHOICE} in			1)		echo "---> "		case ${bCHECK} in		"N")	func_set_shutdown_on	;;		"Y")	func_set_shutdown_off	;;		esac		echo "---> Done"	;;	2)		echo "---> "		case ${bPING} in		"N")	func_set_ping_on	;;		"Y")	func_set_ping_off	;;		esac		echo "---> Done"	;;	3)		echo "---> "		case ${bQDOWNLOAD} in		"N")	func_set_qdownload_on	;;		"Y")	func_set_qdownload_off	;;		esac		echo "---> Done"	;;	4)		echo "---> "		case ${bSAMBA} in		"N")	func_set_samba_on	;;		"Y")	func_set_samba_off	;;		esac		echo "---> Done"	;;	5)		echo "---> "		case ${bRSYNC} in		"N")	func_set_rsync_on	;;		"Y")	func_set_rsync_off	;;		esac		echo "---> Done"	;;	6)		echo "---> "		case ${bWATCHLOG} in		"N")	func_set_log_on		;;		"Y")	func_set_log_off	;;		esac		echo "---> Done"	;;	p)		echo "---> "		func_check		echo "---> Done"	;;	i)		echo "---> "		func_install		echo "---> Done"	;;	u)		echo "---> "		func_uninstall		echo "---> Done"	;;	x|X)		echo "---> Done"	;;	esacdone}func_run() {	func_get_check	if [ "${bCHECK}" = "Y" ]; then		COUNT2=0		func_get_subnet		func_get_hosts		func_get_qdownload		func_get_samba		func_get_rsync		func_get_ping		if [ "x${bQDOWNLOAD}" = "xY" ]; then			while read URL STATUS PCID UNKOWN1 DATEEND DLID UNKOWN2			do			if [ "x${URL}" != "x" ]; then				case ${STATUS} in				"run"|"pause")					((COUNT2++))				;;				esac			fi			done < ${DOWNLOADLIST}			if [ ${COUNT2} != 0 ]; then				log "es ist min. ein Download-Auftrag noch aktiv"			fi		fi		if [ ${COUNT2} = 0 ]&&[ "x${bSAMBA}" = "xY" ]; then			func_get_sessions			COUNT2=${iSESSIONS} 			echo "Anzahl offener Verbindungen : ${COUNT2}"		fi		if [ ${COUNT2} = 0 ]&&[ "x${bRSYNC}" = "xY" ]; then			COUNT2=`${PS} | ${GREP} rsync | ${WC} -l`			COUNT2=`expr ${COUNT2} - 2`			echo "Anzahl offener Verbindungen : ${COUNT2}"		fi		if [ ${COUNT2} = 0 ]&&[ "x${bPING}" = "xY" ]; then			for HOST in ${sHOSTS}			do				${PING} -q -c 1 "${sSUBNET}${HOST}" &> /dev/null				if [ "$?" -eq 0 ]; then					echo "${sSUBNET}${HOST} ist noch erreichbar"					((COUNT2++))					break;				else					echo "${sSUBNET}${HOST} ist offline"				fi			done		fi		if [ ${COUNT2} = 0 ]; then			log "Keine Clients gefunden"			log "Server wird heruntergefahren : ${NAS}"			func_set_shutdown_off			${SHUTDOWN}		else			echo "NAS bleibt online"		fi	else		echo "automatischer Shutdown deaktiviert"	fi}func_check() {	NEW_COMMAND="${INSTPATH}/wait4pc.sh -s on"	func_crontab "MODIFY" ${SHUTDOWN}	echo "crontab auf neue shutdown-Einträge überprüft"}func_install() {	cp /etc/config/crontab /etc/config/crontab.bak	echo "Eine Sicherung der 'crontab' erstellt"	touch ${WAITCONF}	func_set_ping_on	func_set_shutdown_off	func_set_qdownload_off	func_set_samba_off	func_set_rsync_off	func_set_log_off	WAITIP=`echo ${SSH_CLIENT} | ${CUT} -d ' ' -f 1`	WAITHOST=`echo ${WAITIP} | ${CUT} -d '.' -f 4`	WAITSUBNET=${WAITIP/.$WAITHOST/.}	${SETCFG} GENERAL HOSTS ${WAITHOST} -f ${WAITCONF}	${SETCFG} GENERAL SUBNET ${WAITSUBNET} -f ${WAITCONF}	ln -s ${INSTPATH}/wait4pc.sh /bin/wait4pc.sh	NEW_COMMAND="${INSTPATH}/wait4pc.sh -s on"	func_crontab "MODIFY" ${SHUTDOWN}	func_crontab "ADD" "*/5 * * * * ${INSTPATH}/wait4pc.sh"	echo "Wait4pc ist erfolgreich installiert"}func_uninstall() {	NEW_COMMAND=${SHUTDOWN}	func_crontab "MODIFY" "${INSTPATH}/wait4pc.sh -s on"	func_crontab "DELETE" "${INSTPATH}/wait4pc.sh"}func_crontab() {OPTION=${1}SEARCH=${2}if [ "x${OPTION}" = "xADD" ]; then	echo "${SEARCH}" >> ${CRONTAB}else	while read MINUTE HOUR DAYOFMONTH MONTH DAYOFWEEK COMMAND	do		if [ "x${COMMAND/*${SEARCH}*/FOUND}x" = "xFOUNDx" ];	then			echo ${COMMAND}			case ${OPTION} in			"MODIFY")				if [ "x${NEW_HOUR}" != "x" ]; then					HOUR=${NEW_HOUR}				fi				if [ "x${NEW_MINUTE}" != "x" ]; then					MINUTE=${NEW_MINUTE}				fi				if [ "x${NEW_COMMAND}" != "x" ]; then					COMMAND=${NEW_COMMAND}				fi				echo "${MINUTE} ${HOUR} ${DAYOFMONTH} ${MONTH} ${DAYOFWEEK} ${COMMAND}" >> ${CRONTAB_NEW}			;;			"REMOVE")				echo "command removed"			;;			esac			FOUND=1		else			echo "${MINUTE} ${HOUR} ${DAYOFMONTH} ${MONTH} ${DAYOFWEEK} ${COMMAND}" >> ${CRONTAB_NEW}		fi	done < ${CRONTAB}	mv ${CRONTAB_NEW} ${CRONTAB}ficrontab ${CRONTAB}}usage() {cat << EOFusage: $0 optionsOPTIONS:   -h            Show this message   -p on|off     Host überwachen (ping)   -d on|off     Downloads überwachen   -s on|off     Shutdown de/aktivieren   -f on|off     SAMBA berücksichtigen   -l on|off     Script-Log de/aktivieren        -r on|off     Rsync überwachen   -i            Basiskonfiguration einrichten   -u            Ursprungszustand der crontab herstellen   -t            Status   -c            crontab überprüfen   -m            KonfigurationsmenüEOF}func_get_logfunc_get_nasecho "Model :${NAS}"case $NAS in"TS-119"|"TS-219"|"TS-419")	SHUTDOWN=`which halt`;;"TS-109"|"TS-209"|"TS-409")	SHUTDOWN=`which halt`;;"TS-110"|"TS-210"|"TS-410")	SHUTDOWN=`which halt`;	echo "Ich weiß nicht, ob halt oder poweroff";;"TS-239"|"TS-439"|"TS-509"|"TS-639"|"TS-809")	SHUTDOWN=`which poweroff`;;esacwhile getopts "?cd:ims:tuhp:f:l:r:" OPTIONdo	case ${OPTION} in	\?|h)		usage		exit 1	;;	p)	COMMAND="ping";		ACTION=${OPTARG}	;;	d)	COMMAND="qdownload";	ACTION=${OPTARG};;	f)	COMMAND="samba";	ACTION=${OPTARG}	;;	r)	COMMAND="rsync";	ACTION=${OPTARG}	;;	s)	COMMAND="shutdown";	ACTION=${OPTARG}	;;	l)	COMMAND="scriptlog";	ACTION=${OPTARG};;	i)	COMMAND="install"	;;	u)	COMMAND="uninstall"	;;	t)	COMMAND="status"	;;	c)	COMMAND="check"	;;	m)	COMMAND="menu"	;;	esacdonecase ${COMMAND} in"ping")	case ${ACTION} in	"start"|"on"|"y"|"Y")	func_set_ping_on	;;	"stop"|"off"|"n"|"N")	func_set_ping_off	;;	esac;;"qdownload")	case ${ACTION} in	"start"|"on"|"y"|"Y")	func_set_qdownload_on	;;	"stop"|"off"|"n"|"N")	func_set_qdownload_off	;;	esac;;"samba")	case ${ACTION} in	"start"|"on"|"y"|"Y")	func_set_samba_on	;;	"stop"|"off"|"n"|"N")	func_set_samba_off	;;	esac;;"rsync")	case ${ACTION} in	"start"|"on"|"y"|"Y")	func_set_rsync_on	;;	"stop"|"off"|"n"|"N")	func_set_rsync_off	;;	esac;;"shutdown")	case ${ACTION} in	"start"|"on"|"y"|"Y")	func_set_shutdown_on	;;	"stop"|"off"|"n"|"N")	func_set_shutdown_off	;;	esac;;"scriptlog")	case ${ACTION} in	"start"|"on"|"y"|"Y")	func_set_log_on	;;	"stop"|"off"|"n"|"N")	func_set_log_off;;	esac;;"status")	echo "-"	func_get_check	case ${bCHECK} in	"Y")	echo "[ on  ] automatischer Shutdown"	;;	"N")	echo "[ off ] automatischer Shutdown"	;;		esac	echo "-"	func_get_ping	case ${bPING} in	"Y")	echo "[ on  ] Host -      Überprüfung"	;;	"N")	echo "[ off ] Host -      Überprüfung"	;;		esac	echo "-"	func_get_qdownload	case ${bQDOWNLOAD} in	"Y")	echo "[ on  ] Qdownload - Überprüfung"	;;	"N")	echo "[ off ] Qdownload - Überprüfung"	;;	esac	echo "-"	func_get_samba	case ${bSAMBA} in	"Y")		echo "[ on  ] Samba -     Überprüfung"		func_get_sessions		echo "[  ${iSESSIONS/* /}  ] Anzahl offener Verbindungen"	;;	"N")		echo "[ off ] Samba -     Überprüfung"	;;	esac	echo "-"	func_get_log	case ${bWATCHLOG} in	"Y")	echo "[ on  ] Script-Log"	;;	"N")	echo "[ off ] Script-Log"	;;	esac	echo "-"	RSYNC=`${GETCFG} System "Rsync Support" -f ${ULINUX} -d FALSE`	if [ "x${RSYNC}" = "xTRUE" ]; then		COUNT2=`${PS} | ${GREP} rsync | ${WC} -l`		COUNT2=`expr ${COUNT2} - 2`		echo "[ on  ] Rsync "		echo "[  ${COUNT2}  ] rsync-Prozess(e) ( ohne Rsync-Server )"		echo "-"	fi;;"check")	func_check;;"uninstall")	func_uninstall;;"install")	func_install;;"menu")	func_menu;;*)	if [ ! -f "${WAITCONF}" ]; then		func_install		func_menu	fi	func_run;;esac


    Damit das Script aufgerufen werden kann,
    muß es nach dem Entpacken auf dem NAS die Ausführberechtigung bekommen ( chmod +x wait4pc.sh ) .
    Danach mit "/share/HDA_DATA/Public/wait4pc.sh -i" das Script installieren
    und in dem nachfolgenden Menü weiter konfigurieren.


    Menü:

    Code
    Model :TS-239-[ off ] automatischer Shutdown-[ off ] Host -      Überprüfung-[ on  ] Qdownload - Überprüfung-[ on  ] Samba -     Überprüfung[  2  ] Anzahl offener Verbindungen-[ off ] Script-Log-[ on  ] Rsync[  0  ] rsync-Prozess(e) ( ohne Rsync-Server )-


    Script-Parameter:


    Anleitung zum vi-Editor


    Die Nutzung des Scriptes nur auf eigene Gefahr !!!


    EDIT 1.)
    Habe die Abfrage korrigiert, da der Server schon herunterfuhr, wenn schon eine IP-Adresse nicht erreichbar war.
    EDIT 2.)
    2. Variante hinzugefügt
    EDIT 3.
    Fehler (im "$COUNT2"!= "0" ) in der 2ten Variante behoben.
    EDIT 4.
    Script-Auruf optimiert.
    EDIT 5. (26.10.2009)
    Script überarbeitet-
    EDIT 6. (30.10.2009)
    Script stark erweitert
    EDIT 7. (31.10.2009)
    Kleinen Fehler im Script bei "wait4pc.sh -s on" behoben, war vorher "wait4pc.sh -start".
    EDIT 8. (05.11.2009)
    SAMBA und Rsync (Test)-Überwachung hinzugefügt, Scriptstruktur angepaßt
    EDIT 9. (06.11.2009)
    Fehler in der Ping-Überwachung und 3 weitere Schreibfehler behoben

  • Hallo Stefan,


    bin auch sehr interessiert an diesem Thema Stromverbrauch.
    Nun gibt es ja hier ein Script wo vllt. viele (mich eingeschlossen) nicht wissen was damit anzufangen ist.
    In einem anderen Thema erfährt man dann wie man sich via Putty aufs NAS kommt
    und in anderen Themen was für Befehle mit dem Texteditor vi möglich ist.
    Wieder ein anderes Thema zeigt uns wie man die crontab editieren kann.


    Wäre es nicht mal möglich direkt hier in deinem Thema zu erfahren was die Leute nun wo eintragen müssen und zwar von A-Z?
    Also ein Tutorial zu deinem Scrip.
    Ich blicke schon langsam nicht mehr durch so viele Themen habe ich momentan geöffnet nur um dieses Scrip hier umzusetzen.


    Habe keine Ahnung von Putty, crontab, vi, Linux etc.
    Bin per "vi /etc/config/crontab" bis hierher (siehe Anhang unten) gekommen. Weiter keine Ahnung.
    Muss das Script dort hinein?


    Danke und Gruß
    Andre

  • Sei mir nicht böse,
    aber die anderen Beiträge sind eigentlich dazu da, um es nicht jedes mal aufs Neue zu erklären,
    das würde die Datenbank sprengen (lt. Christian gibt es jetzt schon Probleme mit der Datenbank-Sicherung).


    Zum Editieren solltest du WinSCP nutzen, damit kannst du im Verzeichnisbaum wie im Explorer arbeiten
    und das Editieren geht dann auch über Notepad oder einem anderen Texteditor deiner Wahl.


    Wenn du die crontab-Datei bearbeitet hast

    Code
    crontab /etc/config/crontab


    ausführen

  • Zitat von "mille"

    Wäre es nicht mal möglich direkt hier in deinem Thema zu erfahren was die Leute nun wo eintragen müssen und zwar von A-Z?


    Nein. Man könnte allerdings die einzelnen Beiträge verlinken.

    Zitat von "Eraser-EMC2-"

    das würde die Datenbank sprengen (lt. Christian gibt es jetzt schon Probleme mit der Datenbank-Sicherung).


    Naja nicht sprengen aber ich halte es für unnötig alles doppelt und dreifach zu dokumentieren! Siehe weiter oben!


    Christian

  • Hallo Eraser,


    Ich hätte einen Vorschlag für dein Script:

    Zitat

    Der Eintrag in der crontab, ab wann das NAS herunterfahren soll/darf, wenn kein Client aktiv ist, muß noch selbst geändert werden.
    Im Script ist 23 Uhr eingestellt.

    Es müsste doch möglich sein, dass das Script die crontab ausliest ob über die WebGUI schon ein poweroff eingetragen ist - dies könnte ausgelesen und automatisch als Start-Zeitpunkt eingetragen werden anstatt die vordefinierten 23:00 Uhr.
    Ich denke wer dieses Script nutzen möchte, der wird den NAS sowieso zu bestimmten Zeiten ausschalten.


    Laut christian sind die Zeiten der WebGUI auch hier auszulesen:

    Code
    /etc/config/schedule_boot_setting


    siehe: http://forum.qnapclub.de/viewtopic.php?f=33&t=5741


    Gruß Complicated

  • Am Wochenende gibt es eine weitere Aktualisierung des Scripts.
    Inzwischen habe ich eine Möglichkeit gefunden, die Anzahl der Verbindungen über SAMBA auszulesen
    und somit auch das Herunterfahren zu steuern.

  • Hört sich ja klasse an :thumb:


    Ich hätte da noch eine Anregung :mrgreen:
    Kannst du auch eine Überwachung von Schreibaktivitäten auf einer externen Festplatte in das Script einbauen?
    Dann könnte man auch das herunterfahren des NAS während eines Backups verhindern.
    Mir würde es auch schon reichen wenn Aktivitäten von rsnapshot(rsync) gecheckt werden könnten ;)


    Gruß Complicated

  • Zitat von "Complicated"

    Mir würde es auch schon reichen wenn Aktivitäten von rsnapshot(rsync) gecheckt werden könnten


    Das könnte ich mit meinem Wissen nur über die Prozessliste ( ps | grep rsync ) machen
    und dazu die Anzahl der regulären Prozesse vom rsync vorher kennen.


    Wenn du dazu mal deine Anzahl der rsync-Prozesse in den jeweiligen Situationen nennen ?


    Grüße,
    Stefan

  • ps | grep rsync ergibt foglendes:

    Code
    4197 admin 736 S /usr/bin/rsyncd --deamon --server-mode=1


    als einzigen Prozess wenn das Backup nicht läuft.
    Allerdings ist mir schleierhaft wie ich die Prozesse aufrufen soll während rsync läuft, da dann keien Eingabe in meiner SSH Konsole möglich ist. Kann ich die Prozessliste irgendwie loggen und mit crontab beim Backup mit starten lassen?

  • Danke.


    Ich denke, das reicht schon aus.
    Stellte fest, das es im Grunde egal ist, wieviele weitere rsync-Prozesse laufen, da im Normal-Betrieb demnach nur ein Prozess aktiv ist.
    Beim Backup dann mindestens 1 weiterer hinzukommt.


    Ich werde es soweit mit einbauen.

  • Hallo,


    ich habe nun das Script mit SAMBA und Rsync-Überwachung zum Download zur verfügung gestellt.
    Die Rsync-Überwachung hatte ich nicht mit einem Backup getestet, sollte aber in der Theorie funktionieren.


    Ich bitte Rückmeldungen.


    Stefan

  • Zitat von "Complicated"

    Es müsste doch möglich sein, dass das Script die crontab ausliest ob über die WebGUI schon ein poweroff eingetragen ist - dies könnte ausgelesen und automatisch als Start-Zeitpunkt eingetragen werden anstatt die vordefinierten 23:00 Uhr.
    Ich denke wer dieses Script nutzen möchte, der wird den NAS sowieso zu bestimmten Zeiten ausschalten.


    Hallo Eraser,


    wurde das jetzt eigentlich umgesetzt?


    Ach ja, gleich noch eine Frage: Verhindert die Ausführung des Scripts eigentlich das Runterfahren der Platte(n)?


    Gruß, Alex.

  • Hi Alex, Comp.


    Zitat

    wurde das jetzt eigentlich umgesetzt?


    Es ist doch einfach nur ein kleines Shell Script, warum die mühe? A bissi was sollte der Admin doch von seinem eignen System kennen. ;) Wichtig ist nur, das man auf so etwas achtet. Natürlich könnt Ihr auch noch was "Drumbauen" (if fi ^^)... Aber würde man das immer machen, so käme wahrscheinlich irgendwann mal ein 1MB grosses Shell script raus, das alles kann, keiner aber mehr durchblickt :D
    Wäre auch 'ne Möglichkeit. ;)


    Zitat

    Ach ja, gleich noch eine Frage: Verhindert die Ausführung des Scripts eigentlich das Runterfahren der Platte(n)?


    Nö, das Script ruft das normale "Poweoff/Halt" (Da hatte sich QNAP glaube mal vertan) auf. NAS Fährt wie es soll runter (also nicht auf die Radikale) ;)


    Grüsse David.


    Ps.: Ich mache mir gerade mal 'nen Kaffe aber net aus 'ner Senseo 8-) :thumb:

  • Iiiiihhhh Senseo :D


    Zu 1. Also wird das Script koninuierlich alle 5min. ausgeführt und nicht erst ab einer bestimmten Uhrzeit?
    Zu 2. Ich meinte eigentlich, ob das Script das Stand-By der Platte verhindert, also die Platten durch die Nutzung des Scripts permanent rotieren.

    Einmal editiert, zuletzt von christian () aus folgendem Grund: Zitate bitte kurz halten!

  • Zitat

    Zu 1. Also wird das Script koninuierlich alle 5min. ausgeführt und nicht erst ab einer bestimmten Uhrzeit?


    Ja, aber Du kannst den Cron auch auf eine Bestimmte Zeit stellen. Wie z.B. Täglich um 17 Uhr.
    Das müsste das hier innerhalb des Scripts sein:

    Code
    func_crontab "ADD" "*/5 * * * * ${INSTPATH}/wait4pc.sh"


    Beiträge zu den "Zeiten" eines Crons findest Du u.a. hier im Forum. ;)


    Zitat

    Zu 2. Ich meinte eigentlich, ob das Script das Stand-By der Platte verhindert, also die Platten durch die Nutzung des Scripts permanent rotieren.


    Jein, es kommt darauf an, welche Optionen Du vom Script nutzt.. Bevor ich hier etwas falsches Sage, lasse es Dir noch einmal von Eraser (Grüsse ;)) Erklären... ;) Und müsste mich dann auch erst mal durch das Script schlängeln. ;)

  • Also langsam habe ich das Gefühl ich bin zu doof für das Script. Jedenfalls fährt das NAS fröhlich alle paar Minuten runter, obwohl eine SMB-Connection offen ist und auch 192.168.1.103 online ist (ich kann ihn auch per Putty von NAS aus erfolgreich anpingen :cursing:


    Woran könnte das liegen?


    Wo finde ich das Log?


    Extern verlinktes Bild entfernt! Der Grund!

    Einmal editiert, zuletzt von christian () aus folgendem Grund: Extern verlinktes Bild entfernt, mehr dazu siehe Forenregeln!

  • Hallo,


    Zitat von "Senseohasser"

    obwohl eine SMB-Connection offen ist und auch 192.168.1.103 online ist (ich kann ihn auch per Putty von NAS aus erfolgreich anpingen


    Bei mir hatte es auf dem TS-109 bei mehreren Versuchen und verschiedenen Einstellungen kein ungewolltes Verhalten gezeigt.
    Könntest du mir bitte per PN die /etc/config/crontab, die /etc/config/wait4pc.conf und die Ausgabe der unteren Befehle zusenden ?


    Könntest du bitte mal in der Konsole diesen Befehl ausführen:

    Code
    /usr/local/samba/bin/net status sessions parseable/usr/local/samba/bin/net status shares parseable./wait4pc.sh -t


    Hast du am Script oder der crontab manuell etwas geändert, was die Script-Aufrufe betrifft ?


    Zitat

    Ach ja, gleich noch eine Frage: Verhindert die Ausführung des Scripts eigentlich das Runterfahren der Platte(n)?


    Darauf habe ich nicht geachtet, aber theoretisch wird es so sein,
    da bei jedem Scriptdurchlauf ein paar Config-Dateien ausgelesen werden und der Auruf des Scriptes selbst einen Festplattenzugriff auslöst. :!:


    Zitat

    */5 * * * * ......./wait4pc.sh


    Das Script wird hierdurch alle 5 Minuten aufgerufen, du kannst es natürlich auch auf

    Zitat

    * */1 * * * ......./wait4pc.sh


    setzen, dann sollte das Script nur zur vollen Stunde ausgeführt werden.
    Dann braucht es aber auch länger, bis das NAS herunterfährt.


    EDIT:
    Ich habe beim Ping einen Fehler gefunden, der zum Schluß beim Editieren von ein paar Variablen sich eingeschlichen haben.


    Danach hatte ich leider die Ping-Überwachung nicht mehr überprüft.
    Senseohasser hatte mir noch 2 weitere Schreibfehler berichtet.
    Download ist aktualisiert.


    Stefan

  • Läuft jetzt 1A! :mrgreen:


    Lasse es um 22:00h starten und alle 5min. aufrufen, so dass mir auch das fehlende Runterfahren der Platten nicht weh tut. Wenn zu dieser Zeit noch ein Client läuft, greife ich ohnehin dauernd auf das NAS zu und die Platte muss aktiv sein.