Last year we have installed about 1000 swithes as managed PoE sources to wireless Aps.
As you noted, PoE related commands are not very useful or informational.
Winbox UI is more frendly, until you need to power cycle all connected devices.
So, i made this code.
It defines 2 global function.
So you can place it into scheduler to load on device reload, and next execute directly from cli:
/system scheduler add name=POE on-event="import flash/poe_tools_v1.rsc" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon start-time=startup
content of .rsc script:
:if ([system routerboard get model]~"CRS328") do={
:global showPoeST do={
:put ("Interface\tPoE status ");
for i from 1 to 24 step 1 do {
:local ethpoest ([/interface ethernet poe monitor [find name=("ether" . $i)] once as-value ]->"poe-out-status");
:set ("$test"->("ether" . $i)) $ethpoest ;
:put ("ether" . $i . "\t\t" . $ethpoest)
}}
:global poeRELOAD do={
for i from 1 to 24 step 1 do {
:local ethpoest ([/interface ethernet poe monitor [find name=("ether" . $i)] once as-value ]->"poe-out-status");
if ($ethpoest="powered-on") do= {
/interface ethernet poe power-cycle [find name=("ether" . $i)] duration=30s;
:put ("Power-reset on interface ether" . $i) }}}
} else={ :if ([system routerboard get model]~"CRS112") do={
:global showPoeST do={
:put ("Interface\tPoE status ");
for i from 1 to 8 step 1 do {
:local ethpoest ([/interface ethernet poe monitor [find name=("ether" . $i)] once as-value ]->"poe-out-status");
:set ("$test"->("ether" . $i)) $ethpoest ;
:put ("ether" . $i . "\t\t" . $ethpoest)
}}
:global poeRELOAD do={
for i from 1 to 8 step 1 do {
:local ethpoest ([/interface ethernet poe monitor [find name=("ether" . $i)] once as-value ]->"poe-out-status");
if ($ethpoest="powered-on") do= {
/interface ethernet poe power-cycle [find name=("ether" . $i)] duration=30s;
:put ("Power-reset on interface ether" . $i) }
}}
}}
I`ve tried to get interface count directly from cli,
unfortunately "for" cycle, defined by some variables can`t be imported into environment variable (but works perfectly if you execute code directly).
So I have to make model check and define static number of interfaces for each one.
finally, you get something like:
> $showPoeST
Interface PoE status
ether1 powered-on
ether2 powered-on
ether3 powered-on
ether4 powered-on
ether5 powered-on
ether6 powered-on
ether7 powered-on
ether8 powered-on
ether9 powered-on
ether10 powered-on
ether11 powered-on
ether12 powered-on
ether13 powered-on
ether14 powered-on
ether15 powered-on
ether16 powered-on
ether17 powered-on
ether18 powered-on
ether19 waiting-for-load
ether20 powered-on
ether21 powered-on
ether22 powered-on
ether23 waiting-for-load
ether24 short-circuit
Hope my experience would be helpful)