Page 1 of 1

Feature Request: NUT Client

Posted: Fri Nov 07, 2014 5:14 am
by xcom
Is it possible to have an apk for a nut client/server?
This could be very beneficial to the community.

Regards!

Re: Feature Request: NUT Client

Posted: Fri Nov 07, 2014 8:10 am
by macgaiver
link to RFC or other standard would be useful :) it is first time i hear about something like that and searching for "nut" comes with lots of "different" results :)

Re: Feature Request: NUT Client

Posted: Fri Nov 07, 2014 8:14 am
by jarda
Having network attached ups it provides snmp. Why to implement nut it it the router?

Re: Feature Request: NUT Client

Posted: Fri Nov 07, 2014 8:55 am
by docmarius
+1

@macgaiver: http://www.networkupstools.org/

I had put this in discussion some time time ago:
http://forum.mikrotik.com/viewtopic.php?f=1&t=48762

But it seems that everyone understands to implement the NUT server, not the client. But you are right, nut may offer also snmp services through the nut-snmpagent wrapper.

Again, it is about the nut client. The possibility to connect to another system running the nut daemon to interrogate the UPS status and take decisions based on that data. No one said to implement nut on the router.

@jarda: having a network attached UPS starts with the false assumption that you have one.

And while supporting the APC protocol is nice, most of the UPSes out there are not APC compatible.
E.g. the blazer protocol is used by a lot of manufacturers (Ablerex, ActivePower, ARTronic, ATEK, some Belkins, Borri, Cover, Dynamix, Effekta, Ever, Fenton, GE Digital Energy, Gtec, Infosec, Ippon, Kolff, Krauler, Maxxtro, Microline, Mustek, Plexus, Powerex, Powerguard, PowerWalker, Soyntec, Sven, some Sweex, Sysgration, Tecnoware, Trust, Unitek, some Upsonic and a lot of others).
This protocol is of course not supported by MT, as if APC is the only "real" UPS manufacturer. And here comes nut into play, running on another system and offering a uniform network approach for EVERY UPS.
But for this, a network client on the router is needed.
And this is what xcom has asked.

Re: Feature Request: NUT Client

Posted: Fri Nov 07, 2014 4:40 pm
by xcom
+1

@macgaiver: http://www.networkupstools.org/

I had put this in discussion some time time ago:
http://forum.mikrotik.com/viewtopic.php?f=1&t=48762

But it seems that everyone understands to implement the NUT server, not the client. But you are right, nut may offer also snmp services through the nut-snmpagent wrapper.

Again, it is about the nut client. The possibility to connect to another system running the nut daemon to interrogate the UPS status and take decisions based on that data. No one said to implement nut on the router.

@jarda: having a network attached UPS starts with the false assumption that you have one.

And while supporting the APC protocol is nice, most of the UPSes out there are not APC compatible.
E.g. the blazer protocol is used by a lot of manufacturers (Ablerex, ActivePower, ARTronic, ATEK, some Belkins, Borri, Cover, Dynamix, Effekta, Ever, Fenton, GE Digital Energy, Gtec, Infosec, Ippon, Kolff, Krauler, Maxxtro, Microline, Mustek, Plexus, Powerex, Powerguard, PowerWalker, Soyntec, Sven, some Sweex, Sysgration, Tecnoware, Trust, Unitek, some Upsonic and a lot of others).
This protocol is of course not supported by MT, as if APC is the only "real" UPS manufacturer. And here comes nut into play, running on another system and offering a uniform network approach for EVERY UPS.
But for this, a network client on the router is needed.
And this is what xcom has asked.
Yes this is right! Thanks docmarius! :D
All my servers/nas/workstation connect to my NUT server and when we get a power outage they all shutdown (Different times for each) base on my configs.
Having this on my Mikrotik allows to safely shutdown the switch without having to run a dedicated serial cable to it or for that matter a dedicated UPS.
I have a whole office UPS and connects to my electrical breaker unit.

Re: Feature Request: NUT Client

Posted: Fri Nov 07, 2014 5:15 pm
by jarda
How do you start remotely your mikrotik devices when the outage is gone if you shut down them before?

Re: Feature Request: NUT Client

Posted: Fri Nov 07, 2014 5:31 pm
by xcom
How do you start remotely your mikrotik devices when the outage is gone if you shut down them before?
It all depends how your ups is configured along with NUT. In my case. I have my system configured via nut to shutdown when the ups reaches critical stages.
Once nut knows all of the systems are down the UPS shutsdown and wait for electrical power to be restored. Once electrical power is restored the battery waits 10Min before it supply's power to the sockets. Once the sockets are energized all systems power up just like if you where connecting your power cable behind your switch... It just turns on.

For my servers I have them enable to comeback online when power is restore. Other devices require manual innervation and I turn them on via WOL.

Re: Feature Request: NUT Client

Posted: Fri Nov 07, 2014 5:41 pm
by jarda
This is smart. Thanks for answer. But doesn't it just prolonging the outage time? And what if not all devices went down correctly? Do you still recycle the power? Nut client could be useful in some cases, I agree. But I still would rather see mikrotik focusing on errors corrections then implementing such marginal features.

Re: Feature Request: NUT Client

Posted: Fri Nov 07, 2014 6:06 pm
by xcom
This is smart. Thanks for answer. But doesn't it just prolonging the outage time? And what if not all devices went down correctly? Do you still recycle the power? Nut client could be useful in some cases, I agree. But I still would rather see mikrotik focusing on errors corrections then implementing such marginal features.
No solution is perfect. :D
The 10Min wait time is a buffer to charge the battery enough in case of another outage, This gives time for NUT to shutdown the systems again if need it. Technically yes it prolongs the outage but I rather have a buffer for things to shutdown cleanly than not having it.... :D
I have not had a problem where all devices have shutdown uncleanly though I am ready for such issues... Backups =]

Re: Feature Request: NUT Client

Posted: Mon Nov 17, 2014 10:57 pm
by iScape
+1 for xcom request

Re: Feature Request: NUT Client

Posted: Mon Dec 29, 2014 3:40 am
by 111111
/system ups print oid
Ros 6.15
 model=.1.3.6.1.2.1.33.1.1.2 
 version=.1.3.6.1.2.1.33.1.1.3 
 status=.1.3.6.1.2.1.33.1.2.1 
 remaining=.1.3.6.1.2.1.33.1.2.3 
 battery-charge=.1.3.6.1.2.1.33.1.2.4 
 voltage=.1.3.6.1.2.1.33.1.2.5 
 temperature=.1.3.6.1.2.1.33.1.2.7 
ROS 6.24
 model=.1.3.6.1.2.1.33.1.1.2 
 version=.1.3.6.1.2.1.33.1.1.3 
 status=.1.3.6.1.2.1.33.1.2.1 
 remaining=.1.3.6.1.2.1.33.1.2.3 
 battery-charge=.1.3.6.1.2.1.33.1.2.4 
 voltage=.1.3.6.1.2.1.33.1.2.5 
 temperature=.1.3.6.1.2.1.33.1.2.7 
 replace-battery=.1.3.6.1.2.1.33.1.6.2.1.2.1 
 low-battery=.1.3.6.1.2.1.33.1.6.2.1.2.2 
 overload=.1.3.6.1.2.1.33.1.6.2.1.2.3 
 line-voltage=.1.3.6.1.2.1.33.1.3.3.1.3 
 frequency=.1.3.6.1.2.1.33.1.3.3.1.2 
 output-voltage=.1.3.6.1.2.1.33.1.4.4.1.2 
 load=.1.3.6.1.2.1.33.1.4.4.1.5
but the problem is with real situation
snmpwalk -v 1 -c public 10.0.0.1 .1.3.6.1.2.1.33.1
iso.3.6.1.2.1.33.1.1.2.0 = STRING: "Smart-UPS SC620 "
iso.3.6.1.2.1.33.1.1.3.0 = STRING: "726.1.I"
iso.3.6.1.2.1.33.1.2.1.0 = INTEGER: 2
iso.3.6.1.2.1.33.1.2.3.0 = INTEGER: 660
iso.3.6.1.2.1.33.1.2.4.0 = INTEGER: 100
iso.3.6.1.2.1.33.1.2.5.0 = INTEGER: 13
iso.3.6.1.2.1.33.1.2.7.0 = INTEGER: 0
iso.3.6.1.2.1.33.1.3.2.0 = INTEGER: 1
iso.3.6.1.2.1.33.1.3.3.1.2.1 = INTEGER: 5000
iso.3.6.1.2.1.33.1.3.3.1.3.1 = INTEGER: 231
iso.3.6.1.2.1.33.1.4.3.0 = INTEGER: 1
iso.3.6.1.2.1.33.1.4.4.1.2.1 = INTEGER: 231
iso.3.6.1.2.1.33.1.4.4.1.5.1 = INTEGER: 58
iso.3.6.1.2.1.33.1.6.1.0 = Gauge32: 0
what are this zeroes on end
snmpget -v 1 -c public 10.0.0.1 .1.3.6.1.2.1.33.1.2.3
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: iso.3.6.1.2.1.33.1.2.3

snmpget -v 1 -c public 10.0.0.1 .1.3.6.1.2.1.33.1.2.3.0
iso.3.6.1.2.1.33.1.2.3.0 = INTEGER: 600
is this a bug

Re: Feature Request: NUT Client

Posted: Sat Apr 30, 2016 10:41 am
by benoga
+1

NUT Client to Shutdown the Mikrotik would be very nice!

Re: Feature Request: NUT Client

Posted: Mon May 02, 2016 12:35 am
by nickjail
+1
Must have

Re: Feature Request: NUT Client

Posted: Thu Jun 02, 2016 6:49 pm
by dgcapel
Yes, I'm searching about this function in Mikrotik. +1

Re: Feature Request: NUT Client

Posted: Sat Jun 04, 2016 5:42 pm
by korniza
+1
ups status for network rerouting scenarios

Re: Feature Request: NUT Client

Posted: Sun Jul 24, 2016 2:09 pm
by nickjail
+1
NUT is useful

Re: Feature Request: NUT Client

Posted: Sat Aug 06, 2016 2:07 am
by Zorro
but it never really become "standard", yet. right?
so its not really good idea to push harder for proprietary stuff that replace some of really Standard things, even if they intend to "converge" or "simplify", "unify" or whatever of them they doing.
its like https://xkcd.com/927/ or something.

p.s.
jebus, what i name. initially i thouigh that was "NUT" container from (almost abandoned, sadly)Snow video compression codec and that resulted in insta-headache(if you read its code you know why.
(things like shrodinger, av1, daala, thor and more bogus things like upcoming/speculated theora encoders - are Way better documented and had well-written code in 70-90% portions of it) ;)

Re: Feature Request: NUT Client

Posted: Sat Aug 06, 2016 2:14 am
by IntrusDave
NUT would be nice. My Eaton Power Systems all have NUT servers embedded.
However - the MikroTik guys have stated a few times that there is no problem with RouterOS losing power, it does not hurt them.

Re: Feature Request: NUT Client

Posted: Sat Aug 06, 2016 5:14 am
by Zorro
NUT would be nice. My Eaton Power Systems all have NUT servers embedded.
However - the MikroTik guys have stated a few times that there is no problem with RouterOS losing power, it does not hurt them.
some folks i worked with - would go for anything "NUT"-labeled just "for fun", because name itself ;)
atleast you always can say "WUT? NUT!" to you boss in any case ;)

Re: Feature Request: NUT Client

Posted: Sat Aug 06, 2016 6:20 am
by IntrusDave
I have a tech that loves to point out that any updates always seem to "bust a nut".

Re: Feature Request: NUT Client

Posted: Sat Aug 06, 2016 4:41 pm
by docmarius
NUT would be nice. My Eaton Power Systems all have NUT servers embedded.
However - the MikroTik guys have stated a few times that there is no problem with RouterOS losing power, it does not hurt them.
Then why did they put ANY ups support into the routers? Was it just for fun?

BTW, it is not necessarily about powering down the router. It could be about reconfiguring the network by script into a backup/power down configuration. e.g. not all setups use a single power line, and they may down a server or two with rerouting...
Remember that bypass switch on the RB1100 doing similar stuff?

Re: Feature Request: NUT Client

Posted: Sat Aug 06, 2016 5:51 pm
by IntrusDave
Oh, I agree complete. I was just restarted with the support guys said.

Re: Feature Request: NUT Client

Posted: Wed Mar 14, 2018 3:07 am
by JorgeAmaral
+1

For remote sites this would be awesome, one mikrotik acting as nut server and a couple of other devices with nut clients.

Re: Feature Request: NUT Client

Posted: Thu Oct 18, 2018 12:50 am
by iScape
+1

Has anyone figured out how to script MT in a way, that if APC (attached via UBS) goes on battery, then MT notifies all other network devices about power down?

Re: Feature Request: NUT Client

Posted: Sat Mar 30, 2019 5:56 am
by inteq
+ for MT NUT client support

Re: Feature Request: NUT Client

Posted: Sun Nov 17, 2019 9:25 pm
by nwa
+1

pro nut-client !
because... the router board suck the battery totally empty on a long power failure

Re: Feature Request: NUT Client

Posted: Mon Nov 18, 2019 12:00 am
by anav
Haha I am the manual NUT in the family.
Is this another item to move to the raspberry pi?

Re: Feature Request: NUT Client

Posted: Fri May 20, 2022 12:09 am
by webrunner
Hi,

You can install a nut on a raspberry pi and connect a UPS through usb to raspberry. Video: https://www.youtube.com/watch?v=vyBP7wpN72c&t=1645s

If a help is needed with any part, do not hesitate to ask.

I was able to set up Home assistant as the docker container on a raspberry Pi and add my Green Cell UPS there - actually Home Assistant detected it automatically. :) I see basic information like load, power etc. I had to do that because I am using AdGuard Home on a raspberry and I was not able to run it together. The Home Assistant is working locally so, I had to create a ssh tunnel to be able to access it from my laptop.

I had to change the driver to nutdrv_qx and modify a little bit the ups.conf to be able to work with the mentioned UPS. Finally I have it working and the Raspberry Pi is shutting down as it should. Early shutdown I set to 180 seconds. Now it is time to write a bash script that will log into Mikrotik router and perform the shutdown command before the raspberry will shut down. I will use a bash script that I tested on my Mikrotik hap ac2.
#!/bin/bash
# The result of the script execution is recorded in the mikrotik.log located in the /root directory.
LOG_FILE=/root/mikrotik.log
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>${LOG_FILE} 2>&1
data=$( date +"%Y-%m-%d %H:%M:%S" )
nutlog=/var/log/nut.log
if [ "`grep "Mikrotik" "$nutlog"`" ]; then
        echo "$data -> Mikrotik router will go down."
        echo "UPS is down!" | mail -s "UPS ALERT DOWN" admin@example.com -A /root/mikrotik.log
        echo "UPS is down!" | mail -s "UPS ALERT DOWN" youremail@gmail.com -A /root/mikrotik.log
        rm -f $nutlog
        touch $nutlog
        chown root:adm $nutlog
        chmod 640 $nutlog
        systemctl restart rsyslog
        sshpass -f /root/creds ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o CheckHostIP=no -p 2244 nut@192.168.88.1 "/system shutdown; /y; /quit;"
        exit
else
        echo "$data -> Mikrotik router will remain powered on."
        exit
fi

Of course sshpass has to be installed with the below command
sudo apt install sshpass
-p 2244 is a nonstandard ssh port

I created a nut user on a mikrotik and additionally tested it with RSA keys without a passphrase what in LAN is let's say secure enough. All you have to do is to save private and public key in openSSH format, but not the newest one, but instead the standard format - hope I explained it well, just because Puttygen allow syou to save the RSA key in new openSSH format. Anyway you have to upload the private key into the Files in mikrotik, and then in system - users section im port the key for a user. But you can also just use ordinary password with sshpass as I did in the password. If yopu want use RSA, you have to remove this from bash script: spawn sshpass -f /root/creds

Then you have to add the below line to crontab for root account but it can be also a pi user and it will run every two minutes.
*/2 * * * * root /root/mikrotik.sh
*/2 * * * * pi /home/pi/mikrotik.sh
for the pi user you have to add sudo before each command in the above bash script

The default system logger is rsyslog. Add the following to /etc/rsyslog.d/99-nut.conf
:syslogtag,contains,"upsmon" /var/log/nut.log
:syslogtag,contains,"nut" /var/log/nut.log
:syslogtag,contains,"upssched" /var/log/nut.log
Then perform the below commands:
touch /var/log/nut.log
chown root:adm /var/log/nut.log
chmod 640 /var/log/nut.log
systemctl restart rsyslog
All the nut logs will go there.

In the file /etc/nut/upssched.conf I defined below actions
AT ONBATT * START-TIMER onbatt 300
AT ONLINE * CANCEL-TIMER onbatt online
AT ONBATT * START-TIMER earlyshutdown 180
AT ONLINE * CANCEL-TIMER earlyshutdown
AT LOWBATT * START-TIMER shutdowncritical 30
AT ONLINE * CANCEL-TIMER shutdowncritical
AT COMMBAD * START-TIMER commbad 30
AT COMMOK * CANCEL-TIMER commbad commok
AT REPLBATT * EXECUTE replacebatt
And the /bin/upssched-cmd file contains the below:
case $1 in
       onbatt)
          logger -t upssched-cmd "The UPS is on battery"
          ;;
       online)
          logger -t upssched-cmd "The UPS is back on power"
          ;;
       commbad)
       logger -t upssched-cmd "The server lost communication with UPS"
          ;;
       commok)
          logger -t upssched-cmd "The server re-establish communication with UPS"
          ;;
       earlyshutdown)
          logger -t upssched-cmd "UPS on battery too long, forced Mikrotik shutdown"
          ;;
       shutdowncritical)
          logger -t upssched-cmd "UPS on battery critical, forced shutdown"
          /usr/sbin/upsmon -c fsd
          ;;
       upsgone)
          logger -t upssched-cmd "The UPS has been gone for awhile"
          ;;
       replacebatt)
          logger -t upssched-cmd "The UPS needs new battery"
          ;;
       *)
          logger -t upssched-cmd "Unrecognized command: $1"
          ;;
 esac
My bash script catches the Mikrotik phrase from the log. I had to test it to be sure for 100% it is working as expected.

Sending e-mails

Log as root with the below command
sudo -i
Install th below tools:
apt install ssmtp mailutils
Edit configurtation file, to be able to send e-mails with gmail:
nano /etc/ssmtp/ssmtp.conf
Set as below:
root=postmaster
mailhub=smtp.gmail.com:587
rewriteDomain=
hostname=yourhostname ##for example raspberrypi
UseSTARTTLS=YES
AuthUser=youremailaddress@gmail.com
AuthPass=google_mail_application_password
FromLineOverride=YES
Important: Not the mail password for your gmail. So, you have to generate application password. Guide: https://support.google.com/mail/answer/185833?hl=en

Create emailnotify.sh in /root
nano emailnotify.sh
Put into the file the below:
#!/bin/bash

sleep 60

IP=`hostname -i`
# Or you can comment the above and uncomment the below. In my case it presented the localhost IP address instead the IP from eth0 interface
# IP=`echo $(ifconfig eth0 | grep 'inet' | cut -d: -f2 | awk '{ print $2}')`
HOSTNAME=`hostname -f`
echo "$HOSTNAME online.  IP address: $IP" > /root/email.txt
echo >> /root/email.txt
date >> /root/email.txt

mail -s "$HOSTNAME online" -r raspberrypi@localhost yourmail@example.com < /root/email.txt
mail -s "$HOSTNAME online" -r raspberrypi@localhost yourmail@gmail.com < /root/email.txt

rm -rf /root/email.txt
Then set it as executable
chmod +x emailnotify.sh
Then edit crontab
crontab -e
and add the below entry:
@reboot /root/emailnotify.sh
Now if the UPS will go down you will be notified and also when the raspberry pi will boot up.

Re: Feature Request: NUT Client

Posted: Fri May 20, 2022 12:25 am
by webrunner
Haha I am the manual NUT in the family.
Is this another item to move to the raspberry pi?
See my post how I performed it. Hope you will enjoy. Let me know of some video tutorial will be needed - I can make one to present how particular steps have been done.