Skip to content

Instantly share code, notes, and snippets.

@DIEGOHORVATTI
Created March 23, 2023 14:04
Show Gist options
  • Save DIEGOHORVATTI/b5d29601c4b6280b7be87964b7bb2972 to your computer and use it in GitHub Desktop.
Save DIEGOHORVATTI/b5d29601c4b6280b7be87964b7bb2972 to your computer and use it in GitHub Desktop.
Este script adiciona variáveis de configuração no início do script para permitir que o usuário as altere facilmente. Ele também verifica se o comando "xset" está disponível e se o usuário tem permissão para executá-lo. Além disso, ele adiciona um manipulador de sinal para lidar com interrupções e uma verificação para um arquivo de controle que p…
#!/bin/bash
# Configurações
TIME=30m
LOG="/tmp/inativo.log"
STOP_FILE="/tmp/inativo.stop"
# Verifica se o comando xset está disponível
if ! which xset >/dev/null; then
echo "Erro: o comando xset não está disponível." >&2
exit 1
fi
# Verifica se o usuário tem permissão para executar o comando xset
if ! xset dpms force off >/dev/null 2>&1; then
echo "Erro: você não tem permissão para executar o comando xset." >&2
exit 1
fi
# Manipulador de sinal para lidar com interrupções
function cleanup {
rm -f "$LOG"
exit 0
}
trap cleanup INT TERM
# Remove o arquivo de controle se existir
rm -f "$STOP_FILE"
# Loop principal
while true; do
# Verifica se o arquivo de controle existe
if [ -e "$STOP_FILE" ]; then
echo "O script foi interrompido pelo arquivo de controle."
cleanup
fi
# Verifica a atividade do mouse e do teclado
TECLADO1=$(cat /proc/interrupts | grep 1: | grep -v 01: | grep -v 11: | grep -v 21: | awk '{print $2}')
MOUSE1=$(cat /proc/interrupts | grep 12: | awk '{print $2}')
sleep "$TIME"
TECLADO2=$(cat /proc/interrupts | grep 1: | grep -v 01: | grep -v 11: | grep -v 21: | awk '{print $2}')
MOUSE2=$(cat /proc/interrupts | grep 12: | awk '{print $2}')
# Desliga o monitor se não houver atividade
if [ "$MOUSE1" -eq "$MOUSE2" ] && [ "$TECLADO1" -eq "$TECLADO2" ]; then
echo "$(date): Não houve atividade detectada. Desligando o monitor."
xset dpms force off
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment