Esto es realmente rápido y sucio, no he tenido tiempo de probarlo. Básicamente, ejecutamos un script cuando se monta algo. Se ejecuta en cualquier momento, pero usamos el script para comprobar la unidad que estamos buscando. Es necesario ejecutar esto bajo un trabajo de launchd Root para tener permisos de apagado sin introducir la contraseña.
El siguiente es el archivo de configuración para instalar en /Library/LaunchDaemons.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin</string>
</dict>
<key>Label</key>
<string>server.shutdown</string>
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>/usr/local/bin/server_shutdown.sh</string>
</array>
<key>RunAtLoad</key>
<false/>
<key>StartOnMount</key>
<true/>
</dict>
</plist>
Tienes que ir a la Terminal y ejecutar como Root lo siguiente para cargar el
launchctl load /Library/LaunchDaemons/server.shutdown
A partir de aquí, se crea un nuevo script llamado server_shutdown.sh
en /usr/local/bin
y hacerla ejecutable con chmod +x /usr/local/bin/server_shutdown.sh
:
#!/bin/zsh
DIR="/Volumes/SHUTDOWN/"
if [ -d "$DIR" ]; then
# Take action if $DIR exists. #
say "The computer will shut down now."
#shutdown -h now
fi
Podrías poner un cheque para un reinicio si quisieras. Yo puse el say
para darle un mensaje audible. Simplemente borre el # delante del comando de apagado una vez que vea que el script funciona.
Espero que esto ayude.