Como o tempo de atividade pode ser usado para desencadear uma ação?

Como o tempo de atividade pode ser usado para desencadear uma ação?

Quero escrever um código shell ou perl que me envie uma notificação após x dias. Basicamente, no servidor SUSE Linux, é necessária a reinicialização após 208 dias, caso contrário o sistema congelaria. Este é um bug conhecido. Então, para evitar isso, quero que um e-mail de notificação chegue até mim antes de 8 dias, algo assim... apenas um alerta.

O script deve verificar o tempo de atividade atual e depois calcular os dias restantes necessários para um total de 208 dias. Espero que isso faça sentido.

Responder1

Você pode determinar facilmente o tempo de atividade em dias com o awk:

# Print days of uptime, or zero if less than 1 day.
uptime | awk '/days?/ {print $3; next}; {print 0}'

Você pode usar isso com substituição de comando para executar qualquer ação desejada com base nos resultados. Por exemplo:

#!/bin/bash
days () { uptime | awk '/days?/ {print $3; next}; {print 0}'; }
UPTIME_THRESHOLD=200
if [ $(days) -ge $UPTIME_THRESHOLD ]; then
    : # Take some action.
fi

Obviamente, a ação que você toma depende de você. Você pode enviar mensagens para si mesmo, agendar uma reinicialização com onocomando ou qualquer outra coisa que você sinta necessário fazer.

Você também pode configurar esse script como um cron job diário, para que ele acione a ação definida quando o limite de tempo de atividade for excedido. Se você tiver acesso root, você pode simplesmente colocar o script em /etc/cron.daily/, ou pode configurar seu crontab pessoal para chamar esse script uma vez por dia.

Responder2

Inspirado na resposta do CodeGnome, fiz um pequeno script para mac, onde uma notificação aparece depois que o computador é ligado às 8h30. Também tive que configurar o cron para rodar isso a cada minuto.

#!/bin/bash
timeup () { uptime | awk  '{print $3}'; }
UPTIME="8:30,"
if [ $(timeup) == $UPTIME ]; then
    osascript -e 'tell app "Finder" to display dialog "8:30 uptime! Go Home!"' &
    osascript -e 'display notification "8:30 uptime! Go Home!" with title "Go Home!!"' &
fi

informação relacionada