Script de desligamento

1

Estou usando o Ubuntu 11.10.

Eu gostaria de fazer um script de shell que desligue o computador se ninguém logar por uma hora.

Mas se alguém logar (localmente ou com conexão SSH remota), eu não quero desligar o computador ..

E seria muito bom se alguém pudesse me informar o que devo fazer para aplicar esse script.

Muito obrigado!

    
por voretaq7 23.04.2012 / 04:03

1 resposta

1

O ambiente de trabalho terá configurações que controlam coisas como modos de espera e hibernação. Isso geralmente é bom o suficiente para economizar eletricidade e colocar o HD para dormir.

No entanto, para responder à pergunta que você fez, um script poderia facilmente fazer um teste simples. Para daemonizar este script é um pouco mais complicado, mas aqui está um exemplo em Ruby para você começar:

last_user = Time.now
loop do
  last_user = Time.now if 'who | wc -l'.to_i > 0
  system 'sudo shutdown -P +2' if Time.now - last_user >= 60 * 60
  sleep 10
end

Ele nem sempre detecta logins breves com menos de 10 segundos, conforme escrito ...

É um pouco mais complicado no bash, especialmente sem usar && para if , mas o equivalente é algo assim:

last_user='date +%s'
while :; do
  if [ 'who | wc -l' -gt 0 ]; then
    last_user='date +%s'
  fi
  if [ $(('date +%s' - $last_user)) -ge 3600 ]; then
    sudo shutdown -P +2
  fi
  sleep 10
done
    
por 23.04.2012 / 04:30