Bohnenhans
Captain
- Registriert
- Okt. 2022
- Beiträge
- 3.100
Weiss nicht wo das sinnvollerweise hingehört so richtig Progammieren ist das ja nicht
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 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?
in der .conf hab ich halt so Kram den ich zentral konfiguriere
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 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: