shutdown server linux logo após falta de energia enquanto no UPS

1

Eu quero desligar meu servidor linux logo após a falta de energia enquanto ele está na UPS. O UPS funciona como por mais 30 minutos. Eu sei que alguns UPSs podem desligar os servidores automaticamente, mas este não é o meu caso agora.

Então eu tenho em mente fazer ping no roteador (ou um PC na rede) e se o ping falhar, isso significa falta de energia (pode haver um problema com a rede também, mas não importa) e o script será executado

"#shutdown now"

Como posso fazer isso?

Editar: A UPS está alimentando dois pequenos servidores, então não posso usar a porta serial (pelo menos para os dois ao mesmo tempo). Nosso motor em Chipre destruído por uma explosão assim até eu obter UPS para cada servidor eu preciso de uma solução temporária. É por isso que estou perguntando isso.

    
por Ergec 12.07.2011 / 16:07

7 respostas

6

você está usando um apc ups? Se sim, olhe para o apcupsd, é ótimo e pode fazer isso e muitas outras coisas semelhantes com facilidade.

como diz o bmdan, é muito improvável que seus altos não façam isso.

    
por 12.07.2011 / 16:24
2

Muitos sistemas Linux incluem o pacote watchdog . Este pacote irá observar determinadas condições executando testes e, por padrão, reinicializará o sistema se houver uma falha.

Com a opção repair-binary você pode dizer para executar algo como shutdown -h em vez de reinicializar. Watchdog inclui um teste de ping por padrão.

    
por 12.07.2011 / 19:02
1

Monit pode fazer isso e seria preferível ao cron.

Tente uma linha de configuração como:

Check host router with address 192.168.1.1
     if failed icmp type echo with timeout 120 seconds
       then exec "/sbin/shutdown now"
       alert root@localhost

Realmente a melhor solução aqui seria APCUPSD, você deve obter algo que tenha recursos de monitoramento (USB, Serial, Ethernet).

    
por 12.07.2011 / 16:21
1

No Ubuntu eu uso mii-tool para verificar se o link da LAN está OK Se o link não estiver OK por 3 vezes, eu desativo o sistema

Depois que a energia é restaurada eu tenho linksys com firmware openwrt para enviar wake on lan para o meu sistema.

    
por 26.02.2012 / 09:11
0

crie um bashsscript e adicione-o a chron:

 $1 = "some.host.ip.address";

    if ! ping -c 1 -w 5 "$1" &>/dev/null ; then 

      shutdown -h now

    fi

Tenha em mente que, se o seu roteador falhar em vez do seu servidor, você estará inoperante ...

    
por 12.07.2011 / 16:11
0

Se você estiver usando o NUT (Network UPS Tool) para monitorar seu servidor, seus clientes poderão fazer isso. O host ao qual o no-break está conectado deve ser o último a descer. O servidor NUT é executado no UNIX ou Linux, mas um cliente está disponível para o Windows.

Existe uma opção para executar um script em vários eventos (com atrasos, se desejado). No seu caso, você gostaria de acionar o desligamento em uma interrupção de alguns segundos. Se você tiver o wake on LAN você pode acionar um evento de ativação algum tempo depois que a energia for restaurada.

    
por 12.07.2011 / 18:44
0

Com base no problema de dois servidores e um no-break, essa solução agora fica muito mais simples (e mais robusta!). Provavelmente existem maneiras melhores de fazer isso, mas minha abordagem seria adicionar um usuário que possa executar sudo /sbin/shutdown -h now na caixa não conectada ao no-break e, em seguida, modificar a entrada pf: em / etc / inittab na máquina # 1 para (tentar) criar uma conexão ssh para a máquina 2 e executar esse comando antes de concluir seu próprio desligamento.

Implementação completa para duas máquinas, onde Volta (com conexão serial UPS) e Nulla (sem conexão UPS) são os nomes das duas máquinas:

  • /etc/sudoers no Nulla:
Defaults:remoteshutdown !requiretty
remoteshutdown ALL=(ALL) NOPASSWD: /sbin/shutdown
  • /etc/inittab no Volta:
pf::powerfail:/usr/local/sbin/powerdown
  • /usr/local/sbin/powerdown (chmod 700) no Volta:
#!/bin/bash

# Run in the background lest we block on it and thus wait too long to schedule our own shutdown.
# Remember to connect by hand once and accept Nulla's host key as root
/usr/bin/ssh remoteshutdown@Nulla 'sudo /sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"' &

#Shut ourselves down
/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

Como eu disse, provavelmente há outra maneira de fazer isso, mas esta é a solução que posso escrever sem ter que baixar nada. ;)

    
por 13.07.2011 / 14:24

Tags