Created
March 23, 2023 14:04
-
-
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…
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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