Você pode verificar se há conexões ativas com:
netstat -an | grep ESTABLISHED | grep ":[portname] " | wc -l
- A porta 22 é para conexões ssh.
- A porta 445 é para conexões de samba.
Portanto, adicione isso a um script bash e adicione o script bash a um cronjob.
-
Criando um cronjob:
sudo su crontab -e
Insira algo assim para um cheque às 24:00 e um desligamento forçado às 01:00:
# Check for shutdown system at 24:00 every day 00 0 * * * /usr/bin/shutdown_script # Shutdown at 01:00 every day 00 1 * * * /usr/bin/shutdown -h now
-
Crie o script (ainda como root;)):
gedit /usr/bin/shutdown_script
e adicione os comandos que você deseja verificar:
#!/bin/bash users_ssh='netstat -an | grep ESTABLISHED | grep ':[445] ' | wc -l' users_ssh_alertvalue="0" if [ "$users_ssh" -eq "$users_ssh_alertvalue" ]; then /sbin/shutdown -h now fi
e, claro, torná-lo executável.
Você pode tornar isso mais refinado adicionando mais opções ao if
. Tudo o que você precisa fazer é encontrar o comando correto para encontrar o valor que deseja verificar. Ainda não achei uma boa verificação de E / S ( iostat
e iotop
parecem promissores).
edite:
enquanto procurava por um comando de verificação de E / S, encontrei mpstat
. Ele relata as estatísticas relacionadas aos processadores (consulte man mpstat
). Tempo ocioso da CPU de mpstat
:
mpstat | grep all | sed -s 's/.* all// ; s/ * / /g' | cut -d ' ' -f10
Você pode adicionar isso e desligar quando o tempo ocioso da CPU for maior que 98%.