- O Network UPS Tools permite gerenciar e monitorar um ou mais sistemas UPS, centralizando alertas e ações de desligamento automático.
- Utilizar um Raspberry Pi como controlador NUT oferece baixo consumo de energia, alta flexibilidade e compatibilidade com diversos modelos de UPS.
- A automação por meio de arquivos de configuração e do script upssched-cmd é fundamental para coordenar desligamentos e notificações ordenados.
- A configuração adequada de segurança, o registro de logs e os testes reduzem os riscos ao expor NUTs na rede e melhoram a confiabilidade do sistema.
Ter um nobreak, mas não configurar corretamente o software de desligamento automático , é como usar um cinto de segurança desatado: parece proteger, mas em um momento crítico, não funciona. Se você chegou até aqui, provavelmente está procurando uma maneira confiável de garantir que seus servidores, laboratório de virtualização ou computadores domésticos desliguem corretamente quando houver uma queda de energia.
Neste artigo, veremos como configurar um sistema de desligamento automático com um nobreak usando ferramentas de software, com foco especial no Network UPS Tools (NUT) no Linux/Raspbian, mas também abordando alternativas e exemplos práticos, como o típico nobreak APC Smart-UPS, que não possui mais suporte oficial para certas soluções VMware. O objetivo é que, ao final deste artigo, você tenha uma compreensão clara das suas opções, de como configurá-lo passo a passo e dos pontos-chave a serem considerados para não ser pego de surpresa por uma queda de energia.
Por que você precisa de um desligamento automático no seu nobreak?

Muitos usuários compram um nobreak pensando apenas em obter alguns minutos de energia de reserva, mas esquecem que seu verdadeiro valor reside na automatização do desligamento seguro quando a bateria começa a ficar fraca. Sem essa medida, suas máquinas virtuais ou servidores podem ser desligados inesperadamente, com o consequente risco de corrupção de dados.
Em ambientes de laboratório com hosts ESXi, clusters ou sistemas com múltiplas VMs , o cenário ideal é que o nobreak sinalize que está funcionando com bateria e que o software coordene um desligamento ordenado: primeiro as máquinas virtuais críticas, depois os serviços secundários e, por fim, os próprios hosts. Quando o fabricante deixa de dar suporte ao seu próprio software (como aconteceu com algumas soluções de desligamento de rede para VMware), é preciso encontrar alternativas.
O que é o Network UPS Tools (NUT) e por que ele é tão utilizado?

O NUT é um conjunto de ferramentas de código aberto projetado para gerenciar sistemas de alimentação ininterrupta (UPS) em sistemas Unix e Linux. Ele inclui drivers, daemons e utilitários de monitoramento que permitem ler o status do UPS, reagir a eventos e orquestrar desligamentos automáticos.
Uma de suas maiores vantagens é o modelo mestre/escravo : um dispositivo atua como servidor NUT, conectado fisicamente ao nobreak (geralmente via USB ou serial), e um ou mais clientes se conectam a ele pela rede para monitorar seu status e tomar decisões de desligamento. Isso permite, por exemplo, ter um Raspberry Pi gerenciando o nobreak e vários servidores Windows conectados como escravos.
Além disso, o NUT é muito apreciado por sua ampla compatibilidade de hardware . Ele suporta diversos fabricantes e modelos: APC, Salicru, Eaton, CyberPower e muitos outros. Mesmo assim, é sempre recomendável consultar a Lista de Compatibilidade de Hardware no site oficial antes de iniciar o programa, para confirmar se o seu modelo específico é suportado.
Outro aspecto interessante é que, por ser um software livre sob a licença GPL, ele se mantém ativo e bem atualizado . Recebe frequentemente melhorias, correções de bugs e novos drivers, o que é especialmente útil em comparação com soluções proprietárias que os fabricantes podem abandonar da noite para o dia.
Vantagens e desvantagens de usar o NUT como software de desligamento automático
Antes de abordar comandos e arquivos de configuração, é uma boa ideia ter uma lista clara dos prós e contras do NUT para avaliar se ele se adequa ao seu cenário ou se vale a pena considerar alternativas comerciais.
Principais vantagens do NUT
Um dos maiores pontos fortes do NUT é o seu monitoramento remoto centralizado e a capacidade de complementá-lo com políticas de energia avançadas . A partir de um único servidor, você pode visualizar o status de uma ou mais unidades UPS: nível de carga, porcentagem da bateria, tempo restante estimado, eventos recentes e assim por diante. Isso simplifica bastante o monitoramento em redes com múltiplos dispositivos.
Ele também se destaca pela capacidade de gerenciar vários sistemas UPS a partir da mesma instalação. Você pode começar com um único UPS doméstico e expandir para configurações mais complexas com vários dispositivos em diferentes racks ou salas, mantendo a mesma lógica de notificação e desligamento automático.
Outra vantagem são os seus recursos de automação de ações . O NUT permite definir o que deve acontecer em cada evento: quando a energia acaba, quando a bateria está fraca, quando a comunicação com o UPS é perdida, etc. A prática usual é iniciar desligamentos ordenados do servidor, mas você também pode executar scripts personalizados, desligar serviços específicos ou enviar alertas antes de um desligamento completo.
Em relação às notificações, a NUT oferece uma plataforma muito flexível. Com o script certo, você pode enviar e-mails, mensagens SMS ou notificações push para aplicativos de terceiros. O e-mail é normalmente usado por padrão, mas com integrações com Twilio, Pushover, Slack, Telegram ou sistemas de monitoramento como Nagios ou Zabbix, as opções se multiplicam.
Por fim, vale destacar que se trata de uma solução leve em termos de consumo de recursos . Mesmo em hardware mais modesto ou antigo, como um Raspberry Pi de geração anterior, o impacto no desempenho é mínimo, tornando-a ideal para funcionar 24 horas por dia, 7 dias por semana, sem se preocupar com o consumo de energia.
Desvantagens e pontos sensíveis do NUT
A principal desvantagem é que sua configuração inicial não é trivial . Não há um assistente gráfico simples; tudo é feito por meio de arquivos .conf em /etc/nut/. Isso exige um certo nível de conhecimento técnico e leitura atenta da documentação, especialmente se você estiver usando vários modelos de UPS ou ambientes com muitos clientes.
Existe também uma certa dependência da rede ao usar o modelo mestre/escravo. Se a rede falhar ou houver problemas de conectividade durante uma queda de energia, os dispositivos escravos podem parar de receber informações do UPS e não desligar como esperado, a menos que possuam mecanismos de backup locais.
Do ponto de vista da segurança, expor o daemon NUT na rede exige cautela. Se usuários, senhas e restrições de acesso não estiverem configurados corretamente, o sistema poderá ficar vulnerável a acessos não autorizados, com o risco óbvio de alguém desligar remotamente equipamentos críticos.
Por fim, embora a comunidade seja muito ativa, continua sendo uma ferramenta de código aberto com suporte da comunidade . Você não terá suporte comercial 24 horas por dia, 7 dias por semana, como algumas soluções proprietárias, o que pode ser uma desvantagem se for gerenciada por pessoas inexperientes.
Cenário típico: UPS APC, VMware e alternativas quando o software oficial não está disponível.
Um cenário muito comum hoje em dia é alguém comprar um APC Smart-UPS para proteger um laboratório de virtualização com vários hosts ESXi e descobrir que o fabricante exige uma placa de gerenciamento adicional para usar sua solução de desligamento de rede. E, para piorar a situação, descobre-se que o software de desligamento para VMware foi descontinuado ou não oferece mais suporte às versões mais recentes do hipervisor.
Nesse contexto, faz sentido buscar uma solução independente do fabricante que permita configurar os desligamentos de forma flexível . É aí que o NUT entra como intermediário: você conecta o APC via USB a uma máquina Linux (por exemplo, um Raspberry Pi ou um pequeno servidor) e usa esse sistema como o "cérebro" que detecta eventos e aciona os desligamentos nas outras máquinas.
Para hosts ESXi, existem diversas estratégias: desde o uso de scripts remotos que enviam comandos de desligamento para as VMs e o host, até a utilização de uma máquina virtual de gerenciamento que, ao receber um alerta NUT, desliga todo o ambiente de forma controlada . Não é tão simples quanto o software original do fabricante, mas permite recuperar o controle mesmo com produtos que não são mais oficialmente suportados.
A ideia geral é a mesma em todos os casos: uma equipe de controle monitora o UPS, detecta os estados da bateria e, em caso de risco, orquestra o desligamento gradual de todos os sistemas envolvidos, sejam eles físicos ou virtuais.
Utilizando um Raspberry Pi com NUT como servidor mestre de UPS
Uma configuração muito popular é usar um Raspberry Pi com Raspbian como servidor mestre NUT. Essa abordagem tem várias vantagens claras: o Pi consome muito pouca energia, pode ficar ligado permanentemente, é barato e também permite personalizar notificações, integrações e scripts sem depender do sistema principal que protege o UPS.
A arquitetura é simples: você conecta o UPS ao Raspberry Pi via USB ou porta serial , instala o NUT a partir dos repositórios oficiais e configura os diversos arquivos .conf para definir o driver, o modo de operação (autônomo, mestre, escravo), os usuários e as ações de desligamento. Depois disso, você pode adicionar dispositivos escravos que monitoram o status do UPS pela rede.
Antes de mais nada, é recomendável verificar a compatibilidade do modelo do nobreak com o NUT. No caso de um nobreak Salicru SPS SOHO+ 1400VA , por exemplo, o driver blazer_usb com porta automática é utilizado, mas cada modelo pode exigir um driver diferente, portanto, é uma boa ideia consultar a documentação oficial ou a lista de hardware compatível.
Instalando o NUT no Raspbian
A instalação é muito simples, pois o pacote está disponível nos repositórios padrão. Basta executar o seguinte comando como superusuário para instalar o software base juntamente com suas dependências:
sudo apt-get install nut
Após a instalação, é importante confirmar se o usuário e o grupo "nut" foram criados corretamente , pois são eles que os daemons do NUT usarão para interagir com o hardware e gerenciar os serviços. Se, por algum motivo, eles não tiverem sido criados, será necessário adicioná-los manualmente.
Arquivos de configuração básica em /etc/nut/
A configuração do NUT é feita principalmente em /etc/nut/ , que contém vários arquivos .conf. Os mais importantes e seus respectivos papéis em uma configuração típica com o Raspberry Pi como mestre estão resumidos abaixo:
Primeiro, temos o arquivo nut.conf , que define o modo de operação geral. Em uma configuração simples de um único dispositivo que controla o UPS e gerencia seu próprio desligamento, normalmente se utiliza o seguinte:
MODE=standalone
Em seguida, encontramos o arquivo ups.conf , onde o UPS e o driver a serem usados são declarados. Para o Salicru mencionado, a configuração de exemplo seria:
driver = blazer_usb
port = auto
desc = "SAI Salicru"
O arquivo upsd.conf controla o comportamento do daemon que escuta as requisições dos clientes NUT. Ele inclui parâmetros como a idade máxima dos dados ou o número máximo de conexões. Um exemplo típico seria:
MAXAGE 15
MAXCONN 1024
LISTEN 127.0.0.1 3493
LISTEN ::1 3493
Para definir como o UPS é monitorado e o que fazer em caso de eventos, utiliza-se o arquivo upsmon.conf . Este arquivo especifica qual UPS está sendo monitorado, o usuário que realiza a autenticação, o comando de desligamento do sistema e diversos parâmetros de temporização e notificação. Um trecho representativo seria:
MONITOR salicru@localhost 1 nonmaster contraseña master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
NOTIFYCMD /bin/upssched-cmd
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC
NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC
NOTIFYFLAG NOPARENT SYSLOG+WALL+EXEC
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
O arquivo `upsd.users` define os usuários autorizados a interagir com o daemon NUT, suas senhas e as ações que eles podem executar. Um exemplo simples seria:
password = contraseña
actions = set
instcmds = ALL
upsmon master
Por fim, o arquivo upssched.conf gerencia a relação entre os eventos NUT e as ações específicas executadas pelo script de programação. Nele, são definidos os temporizadores, os comandos e o pipeline usado para comunicar os eventos. Um trecho típico poderia ser semelhante a este:
CMDSCRIPT /bin/upssched-cmd
PIPEFN /var/run/nut/upssched/upssched.pipe
LOCKFN /var/run/nut/upssched/upssched.lock
AT COMMOK * EXECUTE notify
AT COMMBAD * EXECUTE notify
AT REPLBATT * EXECUTE notify
AT NOCOMM * EXECUTE notify
AT FSD * EXECUTE forced-shutdown
AT NOPARENT * EXECUTE notify
AT SHUTDOWN * EXECUTE notify
AT ONLINE * CANCEL-TIMER shutdown
AT ONLINE * EXECUTE resume
AT ONBATT * START-TIMER shutdown 60000
AT ONBATT * EXECUTE shutdown-warning
AT LOWBATT * START-TIMER shutdown
AT LOWBATT * EXECUTE shutdown-warning
O papel do script upssched-cmd no desligamento automático.
Tudo isso faz sentido quando acessamos o arquivo /bin/upssched-cmd , que é o script responsável por executar as ações específicas associadas a cada evento: enviar e-mails, reiniciar drivers, iniciar desligamentos ou simplesmente gravar registros no sistema de log.
O script é normalmente escrito em shell script e utiliza a variável de ambiente NOTIFYTYPE para determinar qual evento NUT ocorreu. Com base nesse valor, ele constrói uma mensagem e a envia por e-mail, além de registrar o evento no syslog. Exemplos de eventos suportados incluem:
- ONLINEO equipamento volta a funcionar normalmente com uma fonte de alimentação normal.
- EM COMBATEA energia foi interrompida e o nobreak está funcionando com bateria.
- BAIXA BATERIAO nível da bateria está baixo e desligamentos iminentes estão se aproximando.
- FSD (Desligamento forçado): O equipamento é desligado à força.
- COMMOK / COMBATEDOR: a comunicação com o UPS é restabelecida ou perdida.
- REPLATAT: indica que a bateria precisa ser substituída.
- NOCOMM / NOPARENTO sistema UPS está indisponível ou o desligamento não pode ser delegado.
Um detalhe prático é que, em alguns casos, como COMMBAD ou NOCOMM, o script pode tentar reiniciar o driver do UPS com um comando como:
upsdrvctl start salicru
Além de lidar com eventos, o script normalmente aceita parâmetros adicionais que definem ações específicas, como “aviso de desligamento”, “desligar”, “retomar” ou “desligamento forçado”. Dependendo do parâmetro, ele constrói mensagens diferentes e pode até executar comandos como:
shutdown -p now o shutdown -h 100
Ao final do script, é comum escrever a mensagem gerada no syslog do sistema usando uma linha como esta:
logger -t upssched-cmd "${_message}"
Dessa forma, todos os eventos são registrados e podem ser revisados posteriormente para depurar falhas ou verificar o comportamento durante quedas de energia reais.
Verificações, registros e solução de problemas do NUT
Após configurar os arquivos e o script, é recomendável realizar alguns testes de funcionalidade antes de considerar o sistema completo. Uma medida simples é reiniciar o sistema operacional para garantir que todos os serviços NUT iniciem corretamente na inicialização.
Um comando muito útil para verificar se o driver do UPS inicia sem problemas é:
upsdrvctl start salicru
Se este comando falhar, a primeira coisa a fazer é verificar os logs do sistema, filtrando por NUTs ou mensagens relacionadas ao UPS. Uma maneira rápida de fazer isso é:
tail -f /var/log/syslog | grep ups
Erros comuns, como porta USB ocupada, permissões insuficientes, modelo não compatível ou problemas com o driver selecionado, geralmente são encontrados nessa seção. Se um problema com o driver for detectado, você pode tentar reinstalar o NUT ou usar um driver alternativo compatível com esse modelo, consultando a documentação de compatibilidade. Também é importante verificar se o nobreak está ligado e conectado corretamente.
No caso do Raspbian, vale a pena verificar se o kernel reconhece o dispositivo quando ele está conectado via USB. Comandos como `lsusb` ou `dmesg` podem fornecer pistas caso o sistema sequer detecte o hardware.
Clientes escravos, integrações e outros sistemas operacionais
Assim que o servidor mestre NUT estiver estável, você poderá adicionar clientes escravos em outras máquinas na rede. No Linux, basta instalar o cliente NUT e configurar o sistema para apontar para o endereço IP do servidor mestre, autenticar com o usuário definido em upsd.users e configurar o upsmon para realizar o desligamento automático quando receber sinais de bateria fraca ou eventos FSD.
Em sistemas Windows, você pode usar ferramentas como o WinNUT , que funciona como um cliente para se conectar ao servidor NUT e ler o status do UPS. A partir daí, você pode configurar o desligamento automático do computador Windows quando o servidor principal indicar que a bateria está com pouca carga.
O NUT também está disponível para macOS , geralmente através de gerenciadores de pacotes como o Homebrew (por exemplo, com um comando como “brew install nut”). No entanto, o suporte a drivers USB no macOS pode ser mais limitado, portanto, nem sempre é tão simples quanto no Linux.
Em relação ao Windows, embora existam maneiras de fazer o NUT funcionar, em muitos casos é mais prático usar soluções específicas do fabricante, como o APC PowerChute, para ambientes exclusivamente Windows, desde que o produto ainda tenha suporte ativo.
Notificações avançadas e integração com sistemas de monitoramento
Um dos aspectos mais poderosos (e menos explorados) do NUT é a personalização de notificações . O script upssched-cmd não precisa se limitar ao envio de e-mails; ele também pode ser integrado a APIs externas para enviar mensagens SMS usando serviços como o Twilio, ou notificações push com o Pushover ou o Pushbullet.
Além disso, o NUT integra-se perfeitamente com plataformas de monitoramento como Nagios, Icinga, Zabbix e Prometheus por meio de plugins ou scripts personalizados. Isso permite que você receba alertas de bateria fraca, quedas de energia ou falhas de comunicação por meio de seus canais habituais: Slack, Telegram, painéis de controle e muito mais.
A chave é aproveitar as chamadas do upssched-cmd para executar os scripts apropriados ou fazer solicitações HTTP aos endpoints do seu serviço de alertas. Dessa forma, qualquer evento crítico do UPS ficará visível no mesmo ecossistema onde você já monitora o status do restante da sua infraestrutura.
Boas práticas de segurança ao expor NUTs em uma rede
Como qualquer serviço acessível pela rede, o daemon NUT deve ser configurado com a segurança em mente desde o início . Não podemos esquecer que ele pode, em última instância, desligar máquinas críticas, portanto, é melhor proceder com cautela.
A primeira camada de proteção consiste em usar nomes de usuário e senhas fortes no arquivo upsd.users, evitando senhas triviais ou compartilhadas com outros serviços. Também é recomendável restringir as permissões de cada usuário ao estritamente necessário: nem todos precisam executar comandos administrativos.
No arquivo upsd.conf, é uma boa prática limitar os endereços que podem se conectar ao daemon usando diretivas como LISTEN, apontando apenas para IPs específicos ou tornando o serviço acessível somente a partir da rede de gerenciamento. Combinado com regras de firewall, isso pode reduzir significativamente a superfície de ataque.
Em ambientes críticos para a segurança, considere compilar o NUT com suporte a SSL/TLS e criptografar as conexões entre o servidor mestre e os servidores escravos, especialmente se elas passarem por redes não confiáveis. E, como sempre, revise os logs regularmente para detectar tentativas de acesso não autorizado ou comportamentos incomuns.
Por fim, é recomendável manter o sistema operacional e o NUT atualizados , aplicando patches de segurança e novas versões de software assim que forem lançadas, para reduzir o risco de vulnerabilidades conhecidas.
Ter um nobreak é apenas metade da batalha; a outra metade envolve configurar um sistema de software de desligamento automático bem ajustado que combine ferramentas como o NUT, um Raspberry Pi leve, clientes escravos em computadores diferentes e uma estratégia sólida de notificação e segurança. Ao configurar cuidadosamente os arquivos em /etc/nut/, ajustar o script upssched-cmd e monitorar os logs, você pode ter um sistema robusto que responde rapidamente a quedas de energia, protege seus dados e oferece flexibilidade mesmo quando o fabricante deixa de oferecer suporte oficial para o seu ambiente.
Escritor apaixonado pelo mundo dos bytes e da tecnologia em geral. Adoro compartilhar meu conhecimento por meio da escrita, e é isso que farei neste blog, mostrar a vocês tudo o que há de mais interessante sobre gadgets, software, hardware, tendências tecnológicas e muito mais. Meu objetivo é ajudá-lo a navegar no mundo digital de uma forma simples e divertida.