Я пытаюсь запустить NUT (Network UPS Tools) на моем Mac (MacOS 10.9.5), чтобы мой сервер Mac mini полностью отключился в случае сбоя питания и разрядился аккумулятор ИБП. Я следовал этим инструкциям:
На моем Synology NAS работает сервер NUT, а на моем Mac mini (через Fink) установлен клиент NUT, и я могу запустить его вручную, выполнив:
sudo upsmon
Я отключил питание ИБП и увидел события, связанные с питанием, записанные в терминал и консоль. Я еще не дал ему опустошиться, но, похоже, он работает до сих пор.
Моя проблема в том, что я не смог запустить его автоматически с OS X. Я попытался запустить скрипт, который был включен в инструкции:
#!/bin/sh
##
# UPS Monitor script
# Using Network UPS Tools executables
##
. /etc/rc.common
FINK_BIN="/sw/sbin"
StartService ()
{
ConsoleMessage "Starting NUT (UPS Service)"
if [ -n "`ps acxw | grep -i "upsmon" | awk {'print $1'}`" ]; then
ConsoleMessage -f "NUT (UPS Service)"
echo "Failed to start NUT (UPS Service): It is already running."
exit 0
fi
${FINK_BIN}/upsmon &
if [ -n "`ps acxw | grep -i "upsmon" | awk {'print $1'}`" ]; then
ConsoleMessage -s "NUT (UPS Service)"
echo "NUT (UPS Service) successfully started."
exit 0
else
ConsoleMessage -f "NUT (UPS Service)"
echo "Failed to start NUT (UPS Service): Either the application has been deleted or it has no execution right."
exit 0
fi
}
StopService ()
{
ConsoleMessage "Stopping NUT (UPS Service)"
if [ -z "`ps acxw | grep -i "upsmon" | awk {'print $1'}`" ]; then
ConsoleMessage -s "NUT (UPS Service)"
echo "Failed to stop NUT (UPS Service): It is not running."
exit 0
fi
${FINK_BIN}/upsmon -c stop
if [ -n "`ps acxw | grep -i "upsmon" | awk {'print $1'}`" ]; then
ConsoleMessage -s "NUT (UPS Service)"
echo "Failed to stop NUT (UPS Service) out of unknown reason."
exit 0
else
ConsoleMessage -s "NUT (UPS Service)"
echo "NUT (UPS Service) successfully stopped."
exit 0
fi
}
StopServiceForcefully()
{
ConsoleMessage "Stopping NUT (UPS Service)"
if [ -z "`ps acx | grep -i "upsmon" | awk {'print $1'}`" ]; then
echo "Failed to stop NUT (UPS Service): It is not running."
else
kill -kill `ps acxw | grep -i "upsmon" | awk {'print $1'}`
if [ -n "`ps acxw | grep -i "upsmon" | awk {'print $1'}`" ]; then
echo "Failed to stop NUT (UPS Service) out of unknown reason."
else
echo "NUT (UPS Service) successfully stopped."
fi
fi
}
RestartService()
{
ConsoleMessage "Trying to restart NUT (UPS Service)."
StopService
StartService
exit 0
}
RunService "$1"
Тем не менее, я получаю эту ошибку в терминале:
line 75: $1: unbound variable
Можно ли исправить этот скрипт? Можно ли просто создать новый скрипт, который просто запустит upsmon и сделает его простым. Я не могу понять это; Я попробовал несколько вещей, чтобы сделать это, но не смог заставить его работать.