Agendamento fácil de desligamento do Linux

De Wiki Hackstore

Desligamento de Linux convencional

Visto que o crontab do Linux é "burro" não possuindo opção de ano, segue um script para agendamento de desligamento facilitado, podendo ser configurado apenas alterando as variáveis:

#!/bin/bash

DIA_DESLIGAMENTO="06"
MES_DESLIGAMENTO="01"
ANO_DESLIGAMENTO="2016"
HORA_DESLIGAMENTO="10:28"

###########################

DATA_PROGRAMADA="${DIA_DESLIGAMENTO}-${MES_DESLIGAMENTO}-${ANO_DESLIGAMENTO}"
DATA="$(date +%d-%m-%Y)"
HORA="$(date +%H:%M)"

if [ ${DATA} == "${DATA_PROGRAMADA}" ] && [ ${HORA} == "${HORA_DESLIGAMENTO}" ];then
        halt
fi

OBS: Caso vc use systemd de bosta, altere o comando "halt" para "shutdown -h now" visto que o sistema é tão lixo que se vc desligar via comando "halt" o sistema congela.


Adicione ao crontab e seja feliz!

# Desligamento agendado
* * * * *       root    /etc/scripts/desligamento.sh



Desligamento de Vmware ESXi

Aplique permissões de escrita no arquivo

chmod +w /var/spool/cron/crontabs/root

Edite o arquivo local.sh para que seja criado o arquivo de crontab após reboot

vi /etc/rc.local.d/local.sh

Adicione as linhas abaixo

#!/bin/sh

# local configuration options

# Note: modify at your own risk!  If you do/use anything in this
# script that is not part of a stable API (relying on files to be in
# specific places, specific tools, specific output, etc) there is a
# possibility you will end up with a broken system after patching or
# upgrading.  Changes are not supported unless under direction of
# VMware support.

/bin/kill $(cat /var/run/crond.pid)
/bin/echo -e '#!/bin/sh\nDIA_DESLIGAMENTO="05"\nMES_DESLIGAMENTO="12"\nANO_DESLIGAMENTO="2016"\nHORA_DESLIGAMENTO="19:55"\n\n###########################\n\nDATA_PROGRAMADA="${DIA_DESLIGAMENTO}-${MES_DESLIGAMENTO}-${ANO_DESLIGAMENTO}"\nDATA="$(date +%d-%m-%Y)"\nHORA="$(date +%H:%M)"\n\nif [ ${DATA} == "${DATA_PROGRAMADA}" ] && [ ${HORA} == "${HORA_DESLIGAMENTO}" ];then\n        /bin/halt\nfi' > /etc/desligamento.sh
/bin/chmod +x /etc/desligamento.sh
/bin/echo '*    *    *   *   *   /etc/desligamento.sh' >> /var/spool/cron/crontabs/root
/bin/crond        

exit 0

Execute o comando auto-backup.sh para salvar o rc.local

auto-backup.sh