[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
    1. [GENERAL]CHECK = NQDOWNLOAD = NLOG = NHOSTS = 2 3 4 5SUBNET = 192.168.0.


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

    Code
    1. 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
    1. */${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.


    Shell-Script
    1. #!/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
    1. 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
    1. 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
    1. /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
    1. 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
    1. 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 :o(


    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
    1. /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.