• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Erweitertes upsshutdown Script funktioniert nicht

Slashwalker

Winterbanana
Registriert
15.05.06
Beiträge
2.213
Hallo,
ich hab seit kurzem eine APC USV an meinem iMac. Diese wird auch ordentlich erkannt.
Da ich aber auch noch ein Synology NAS habe, dachte ich mir ich passe einfach /usr/libexec/upsshutdown an, um das NAS herunterzufahren.

Code:
#!/bin/sh
#
# Pick up the email recipient from /etc/hostconfig, if defined.
#
#. /etc/hostconfig
#
# Initialize...
#
PATH=/bin:/usr/bin:/sbin:/usr/sbin
SI_PATH=/System/Library/StartupItems
MAIL=mail
MSG="Shutting down due to power loss!"

logger -i -p daemon.emerg -t UPS "${MSG}"

#
# Send notification to the same address used for IP Failover.
#
if ! [ "${FAILOVER_EMAIL_RECIPIENT:=-AUTOMATIC-}" = "-AUTOMATIC-" ] ; then

        SUBJECT="UPS Notification: ${MSG}"

        ${MAIL} -s "${SUBJECT}" ${FAILOVER_EMAIL_RECIPIENT} < /dev/null

fi

# Take the NAS down.

ssh [email protected] poweroff &> /dev/null

# Take the system down.
#
if [[ -n $1 && "WaitForUPS" == $1 ]] ; then
   #
   # Wait for UPS to take the system down abruptly and unexpectedly.
   #
   shutdown -hu now "${MSG}"
else
   #
   # Gently shutdown the system immediately.
   #
   shutdown -h now "${MSG}"
fi

Den Befehl ssh [email protected] poweroff &> /dev/null habe ich manuell getestet und dieser funktioniert auch.
Nun habe ich den USV Shutdown "simuliert", in dem ich mit sudo /usr/libexec/upsshutdown das Script manuell ausgeführt habe. Der iMac fuhr auch herunter, aber das NAS nicht.

Ich habe ehrlich gesagt keine Ahnung, weshalb es nicht funktioniert. ssh auf das NAS funktioniert mit Public Key, daher auch keine Übergabe des Passworts. Der Remote-Befehl kommt vor dem if/else Block und sollte daher immer ausgeführt werden.
 

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Ich denke es ist sowieso sinnvoll launchd zu verwenden.

Code:
touch /Users/Shared/logoutHook.sh
sudo chmod +x /Users/Shared/logoutHook.sh

Code:
#!/bin/bash
ssh [email protected] poweroff &> /dev/null

Code:
sudo defaults write com.apple.loginwindow LogoutHook /Users/Shared/logoutHook.sh


Ich habe das zwar selbst noch nie so eingerichtet, aber ich hoffe das klappt bei dir! Es sieht zumindest nach einer sauberen Lösung aus, siehe die Quelle.
 

Slashwalker

Winterbanana
Registriert
15.05.06
Beiträge
2.213
Ich denke es ist sowieso sinnvoll launchd zu verwenden.

Code:
touch /Users/Shared/logoutHook.sh
sudo chmod +x /Users/Shared/logoutHook.sh

Code:
#!/bin/bash
ssh [email protected] poweroff &> /dev/null

Code:
sudo defaults write com.apple.loginwindow LogoutHook /Users/Shared/logoutHook.sh


Ich habe das zwar selbst noch nie so eingerichtet, aber ich hoffe das klappt bei dir! Es sieht zumindest nach einer sauberen Lösung aus, siehe die Quelle.
Mein Script hat die ganze Zeit funktioniert. Problem lag an der Fritzbox, die kann keine Jumbo Frames. Wieso dann nicht alle Pakete verworfen wurden, ist mir unklar. iMac und NAS direkt am Switch der Jumbo Frames unterstützt angeschlossen und schon klappt's.

Das "Problem" an deiner Lösung wäre, soweit ich das herausgelesen habe, dass dieser Hook bei jedem Reboot bzw. Shutdown ausgeführt wird. Ich möchte aber das NAS nur herunterfahren, wenn der Shutdown von der USV getriggert wurde ;)
Normale Reboots oder Shutdowns sollen das NAS nicht herunterfahren.