Você está na página 1de 2

Desligar e ligar automaticamente servidores todos os

dias
Colaborao: Wendell Almeida
Data de Publicao: 14 de dezembro de 2012
Podemos colaborar com a TI verde desligando servidores que no necessitam ficar
ligados 24hs por dia 7 dias por semana.
Pensando em uma empresa que funciona somente em horrio comercial de segunda a
sexta feira entre 09:00 e 18:00hs, podemos realizar uma programao para que
automaticamente o servidor desligue por volta das 20:00hs e ligue no dia seguinte s
08:55hs, permanecendo desligado sbado e domingo.
O script abaixo realiza essa operao:
#!/bin/bash
logger=$(which logger)
test -x $logger || exit 1
# Horrio que o servidor ser ligado
HOUR_UP="08:55:00"
# Primeira segunda do ms o servidor no ser desligado
WEEKDAY1=Mon
LANG=C
LC_ALL=C
DATE=$(date +%a)
DAY=$(date +%d)
shutdown=$(which shutdown)
poweroff="$shutdown -h now"
THIS="shutdown_system"
date="date -u"
WAKEALARM=/sys/class/rtc/rtc0/wakealarm
## Ligar o servidor na data e horrio definidos
wakeup(){
echo 0 > $WAKEALARM
test "$DATE" = "Fri" && $date -d "+ 3 day $HOUR_UP" +%s > $WAKEALARM
test "$DATE" = "Sat" && $date -d "+ 2 day $HOUR_UP" +%s > $WAKEALARM
$date -d "+ 1 day $HOUR_UP" +%s > $WAKEALARM
#cat /proc/driver/rtc
}

Desligar e ligar automaticamente servidores todos os dias

## Desligar o servidor
halt(){
$logger -t $THIS "The System Shutdown!!"
wakeup
$poweroff
exit 0
}
## Verifica se o servidor ser desligado ou no
validate(){
test $DAY -lt 7 || halt
test "$WEEKDAY1" = "$DATE" || halt
$logger -t $THIS "The System NOT Shutdown!!"
}
validate

Salve o script com o nome zzzshutdown e copie para /etc/cron.daily.


Ele deve ser o ltimo script a ser executado para no interferir na execuo das outras
tarefas dirias. Por isso iniciei o nome com zzz.
Agende as tarefas semanais e mensais no cron para que sejam executas quando o
servidor estiver ligado. Exemplo: /etc/crontab
17 *
00 20
00 13

* * *
* * *
* * 4

root
root
root

cd / && run-parts --report /etc/cron.hourly


test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.dai
test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.wee

# Toda primeira segunda feira do ms ser executado os scripts mensais


30 12 * * 1
root
test `date +\%d` -gt 7 || ( cd / && run-parts --report /etc/cron.monthly
# Tarefa que ser executada na primeira tera do ms durante a madrugada.
# O servidor no dever ser desligado.
00 1
* * 2
root
test `date +\%d` -gt 7 || /usr/slib/system.diagnostic

Sistema aplicado: Debian Squeeze. Talvez seja necessrio ajustes para outras
distribuies.

Desligar e ligar automaticamente servidores todos os dias

Você também pode gostar