Quindi ho questo script per arrestare i Mac dopo il runtime di 24 ore.
#!/bin/bash
my_macs=( Mac1 Mac2 Mac3 )
MAX_UPDAYS=1
CURR_TIME=$(date +%s)
MAX_UPTIME=$(( MAX_UPDAYS * 86400 ))
ADMINUSER="pcpatch"
echo "Remote Shutdown Check vom $(date)" | tee -a /Users/admin/Shutdown/Log/Shutdown 2>&1
for MAC in "${my_macs[@]}"
do
echo -n "Überprüfe ${MAC}... "
if /sbin/ping -q -c3 "${MAC}" >/dev/null; then
echo "${MAC} ist angeschaltet. Laufzeit wird ermittelt... "
BOOT_TIME=0
BOOT_TIME=$(ssh "${ADMINUSER}@${MAC}" sysctl -n kern.boottime | sed -e 's/.* sec = \([0-9]*\).*//')
if [ "$BOOT_TIME" -gt 0 ] && [ $(( CURR_TIME - BOOT_TIME )) -ge $MAX_UPTIME ]; then
echo "${MAC} ist über 24 Stunden online. Shutdown wird ausgeführt!"
ssh "${ADMINUSER}@${MAC}" 'sudo /sbin/shutdown -h now'
else
echo "${MAC} ist noch keine 24 Stunden online. Shutdown wird abgebrochen!"
fi
else
echo "${MAC} ist nicht erreichbar (Ping fehlgeschlagen)"
fi
done | tee -a /Users/pcpatch/Shutdown/Log/Shutdown 2>&1
echo " " | tee -a /Users/pcpatch/Shutdown/Log/Shutdown 2>&1
Quando lo eseguo attraverso il terminale funziona correttamente, i Mac che sono in linea più di 24 ore di spegnimento, tutto il resto non fa nulla.
Fin qui tutto bene, ma voglio eseguire questo script attraverso un cronjob ogni giorno alle 23:00 in punto. Così ho fatto questo cronjob:
00 23 * * * /Users/admin/Shutdown/Shutdown.sh
Ora lo script viene eseguito ogni giorno, la stessa linea di cron funziona. I Mac però non si spengono e il registro dice solo che i Mac non sono stati eseguiti più di 24 ore. Anche se ho spesso Mac che funzionano più di 3-4 giorni.
Qualcuno sa come risolvere questo problema?
Modifica: ho aggiunto $BOOT_TIME
e $CURR_TIME
al log, e distribuisce qualcosa come questo: 1492549200
come CURR_TIME
e nulla come BOOT_TIME
, sebbene il Mac fosse sicuramente in esecuzione, come è adesso (6 giorni online). Questo Mac ha installato OSX Sierra e un altro Mac (con OS X El Capitan) ha impostato BOOT_TIME
come 1492505076
e CURR_TIME
come 1492549200
Non so davvero cosa significhi questo numero, però ...