TrueNAS AutoShutdown nach X Minuten Nichtnutzung

Bohnenhans

Captain
Registriert
Okt. 2022
Beiträge
3.100
Weiss nicht wo das sinnvollerweise hingehört so richtig Progammieren ist das ja nicht :D

Da ich evtl den TrueNAS Server zum neuen Hauptserver mache "muss" der sich natürlich nach einer gewissen Zeit, wenn der nicht genutzt wird, von selber ausschalten :D denn meine Erfahrung ist der Server läuft bei uns vielleicht 1h am Tag im Durchschnitt.

Da bastle ich mir gerade ein "AutoShutdown" Script - glaube TrueNAS hat die Funktion ja nicht oder?

Macht das so Sinn oder wie macht ihr das falls ihr sowas in TrueNAS (Scale) nutzt?


Code:
#!/usr/bin/bash

. /root/custom/truenas_conf.txt

debugPrint "[checkpowerdown] Starte CheckPowerdown $0"

if [ "$myDebugOutput" = "/dev/null" ]; then
   myCheckInterval=$myCheckShutdownInterval  # in Sekunden
else
   myCheckInterval=3
fi

myTotalCheckTimeInSec=$(( $myCheckShutdownTime * 60 ))
myTotalCheckRuns=$(( $myTotalCheckTimeInSec / $myCheckInterval ))

myTotalTimesChecked=0

if [ "$myDebugOutput" = "/dev/null" ]; then
   sleep 180  # Mind 3 Minuten warten beim start
fi

while :

do

   /usr/bin/sleep $myCheckInterval

   myResult=$(lsof -w | grep "  REG  " | grep "^rsync" | grep -v "  mem  " | grep -v "  txt  " | grep -v "rsyncd.pid")
   if ! [ -z "$myResult" ]; then
     debugPrint "[checkpowerdown] rsync Server uebertraegt Daten"
     myTotalTimesChecked=0
     continue
   fi     

   myResult=$(/root/custom/scripte/display/getisscrubbing.sh)
   if ! [ "$myResult" = "~" ]; then
      debugPrint "[checkpowerdown] Scrub laeuft"
      myTotalTimesChecked=0
      continue
   fi
  
   myResult=$(/root/custom/scripte/display/getzfsstatus.sh)
   if ! [ "$myResult" = "OK" ]; then
      debugPrint "[checkpowerdown] ZFS defekt"
      myTotalTimesChecked=0
      continue
   fi

   myResult=$(/usr/bin/pidof "mc-server-runner")
   if ! [ -z "$myResult" ]; then
      debugPrint "[checkpowerdown] Minecraft Server laeuft"
      myTotalTimesChecked=0
      continue
   fi

   if [ "$myDebugOutput" = "/dev/null" ]; then   
      myResult=$(/usr/bin/users)
      if ! [ -z "$myResult" ]; then
         debugPrint "[checkpowerdown] User angemeldet"        
         myTotalTimesChecked=0
         continue
      fi
   fi     
  
   myResult=$(/usr/bin/lsof -w | /usr/bin/grep "  REG  " | /usr/bin/grep "$myCheckShutdownDir" | /usr/bin/grep -v "/ix-applications/")
   if [ -z "$myResult" ]; then
      debugPrint "[checkpowerdown] Kann heruntergefahren werden"
      myTotalTimesChecked=$(( myTotalTimesChecked + 1 ))
      if [ $myTotalTimesChecked -gt $myTotalCheckRuns ]; then
         debugPrint "[checkpowerdown] Shutdown"
         /usr/bin/curl -s -X POST http://${myIP}/api/v2.0/system/shutdown -H "Authorization: Bearer $myAPIKey"
         exit 0
      fi
   else
      debugPrint "[checkpowerdown] Es sind Dateien offen"
      myTotalTimesChecked=0
   fi

done

in der .conf hab ich halt so Kram den ich zentral konfiguriere

Code:
myAPIKey="~der API KEY von TrueNAS~"
myIP="127.0.0.1"
myBaud="9600"
mySerialPort="/dev/ttyUSB0"
myCheckShutdownDir="/mnt/tank"
myCheckShutdownTime=30    # in Minuten
myCheckShutdownInterval=30  # in Sekunden
myDebugOutput="/dev/null"   # DebugOn: "/tmp/status.txt"     
checkShutdownFlag="/tmp/shutdown.go"


debugPrint() {
   if ! [ -z "$1" ]; then
      if ! [ "$myDebugOutput" = "/dev/null" ]; then
         echo "$1" >> "$myDebugOutput"
      fi
   fi
}
 
Zuletzt bearbeitet:
Wenn dein "Server" nur eine Stunde am Tag läuft, was für HDDs, falls verbaut, nicht so prickelnd ist, warum dann gleich TrueNas und kein Synology NAS? Die Dinger können fast alle Docker und du musst nicht mit irgendwelchen Skripten arbeiten.
Mein UnRaid-Server läuft 24/7, dafür ist es ein Server geworden. Ansonsten halt ein Fertig-NAS.
 
naja weil Synology und Co an das anzupassen was ich will sicher schwer bis nicht möglich ist (z.B. AutoDecrypt mit einem lokalen Passwortserver) es ginge vielleicht aber das wäre ja sicher ein relativ grosser Aufwand denke ich mal, wiel das OS sicher viel geschlossener ist.

Wir haben auch einen kleinen sehr sparsamen Server der 24/7 durchläuft - aber die "grossen" müssen das halt nicht unbedingt. Bei uns ist das schon lange so man kann die einschalten, wenn man die nutzen will, die entschlüssen sich selber, solange sie bei uns daheim stehen und nicht geklaut wurden :D und schalten sich dann nach einer Weile aus, wenn niemand sie mehr nutzt.

Ich finde das praktisch und das soll der TrueNAS auch können, vor allem wenn er der "Hauptserver" werden soll - wieso sollten die unnötig 24/7 laufen? Durch die Verbrauchserfassung wird die Nutzung automatisch erfasst, das sind halt MAXIMAL 1h / Tag im Durchschnitt - also mindestens 23h idle am Tag im Schnitt.

Frühestens ist der halt unter der Woche nachmittags oder mal abends an und bei gutem Wetter vielleicht auch mal nur Sonntags - wird doch bei vielen nicht anders sein, denke ich mal.
 
Zuletzt bearbeitet:
Zu deinem Script kann ich dir jetzt nicht viel sagen. Meine Kenntnisse sind da leider etwas beschränkt. :-) Ich hatte mir mal ein einfachen Script gebastelt da waren die lokalen IP4 Adressen der Rechner/TV die auf das NAS zugreifen durften, hinterlegt. Die wurden in einem bestimmten Zeitintervall "angepingt" und wenn keiner mehr geantwortet hat fuhr das NAS nach einer bestimmten Zeit runter. Das NAS war allerdings auch nur für den "internen" Gebrauch gedacht. Jetzt nutze ich OMV und dort gibt es einen Autoshutdown-Plugin, der sehr gut funktioniert. Alle Rechner im Netz starten das NAS beim Hochfahren über WOL. Nachts wird die nicht gebraucht. Sinnlos laufen und Strom verbrauchen muss das NAS nicht. Im Sommer wird die auch kaum gebraucht.
 
Das mit dem Ping hat aber halt den Nachteil dass wenn jemand lokal noch über youtube schaut oder sonst was macht, wozu man den Server gar nicht braucht der Server ja trotzdem anbleiben würde.

Daher schau ich halt lieber nach ob der Server irgendwas macht wie Filesystem reparieren, oder jemand drauf zugreift etc. also ob der Server auch tatsächlich genutzt wird.

Hehe das mit dem Ping hatte ich auch mal allerdings funktioniert das halt nur wirklich gut wenn man allein das Netz nutzt.
 
Zurück
Oben