Script Para o Desligamento do Sistema
Publicado por Leandro Santiago 28/02/2007
[ Hits: 6.463 ]
Homepage: http://leandrosan.wordpress.com
Essa é uma segunda versão de um script que eu escrevi para essa dica:
"Desligando o seu computador com o dedão do pé"(http://www.vivaolinux.com.br/dicas/verDica.php?codigo=793)
A "instalação" dele é a mesma descrita na dica.
Desculpem-me pelo script estar mal-comentado, ou não haver um ToDo, Changelog, ou coisa do tipo.. rsrs
#!/bin/bash
######################################################################################################################
## Script escrito por: Leandro Santiago da Silva ##
## e-mail: leandrosansilva@gmail.com ##
## 21/01/2007 Maringá/PR Brasil ##
## O que esse script realmente faz?
## Ele serve para você fazer um desligamento seguro do seu computador quando você aperta o botão de desligar do gabinete
## Os metodos usados são pelo modo texto mesmo e pelo KDM (por enquanto...),
## mas não há nada que impeça que você adicione funções para outros ambientes gráficos ou gerenciadores de login.
## Para isso, copie este script para a pasta /etc/acpi, com o nome de acpi_handler.sh e dê permissão de execução à ele
## Depois, abra o arquivo o arquivo /etc/acpi/events/default
## E vá até a linha 17 e a deixe assim:
## event=button power.*
## Nota: Isso tudo dará certo se você já estiver usando o acpid sem problemas.
## Reinicie o computador e voiala...
######################################################################################################################
# Algumas definições importantes:
Cliente_Grafico='kdm'
KDEDIR=/opt/kde/
## Função usada para fazer o desligamento normal. Aquele que vem por padrão, entende?
## No caso, executo o comando init 0, que entra no runlevel 0 do init, que faz o computador desligar.
DesligarConsole()
{
/sbin/init 0
}
# Função que faz a verificação se o usuário (recebido como índice 1) está ou não no KDE.
# Se sim, aparece o diálogo de desligamento para ele.
DesligarGrafico()
{
# Esta função recebe três parâmetros, que são:
# 1: Um login (nome de usuário)
# 2: Um comando de desligamento
# 3: O nome da sessão que o usuário está usando (default,kde,wmaker,enlightenment,etc)
# Se estiver usando o KDE faz o que tem que fazer,
# senão, faz um outro tipo de desligamento, que no caso abaixo é via kdialog
echo "${3}" | egrep '(kde|default)' && su - "${1}" -c "${2}" || ( su - "${1}" -c "export DISPLAY=${4} ; $KDEDIR/bin/kdialog --error 'Ainda não Implementado' & " ) #DesligarConsole
return 0
}
# Função que realiza o processo de verificação se os usuários estão logados via terminal gráficos (não console nem screen).
# A verificação é feita usuário por usuário
function DesligarUsuarios
{
# Inicializo a variável que irá representar cada usuário, num dado momento
Usuario=1
# Vetor que guarda todos os usuários logados no computador, com algumas informações a mais (digite "kdmctl list" para ver quais)
KDMLIST=(`$KDEDIR/bin/kdmctl list`)
# O While abaixo funciona assim:
# Enquanto o usuário verificado estiver numa sessão gráfica, faça o processo de questionamento sobre o desligamento para ele,
# e incremente a variável $Usuario, para que façamos a verificação do próximo.
while echo ${KDMLIST[$Usuario]} | cut -f1 -d, | egrep -v '(tty|pts)' && [ "`echo ${KDMLIST[$Usuario]}`" != "" ]
do
UsuarioGrafico=$(echo ${KDMLIST[$Usuario]} | cut -f3 -d,)
HaltDisplay=$(echo ${KDMLIST[$Usuario]} | cut -f1 -d,)
HaltCommand="export DISPLAY=$HaltDisplay; $KDEDIR/bin/dcop kdesktop KDesktopIface logout"
UserSessao="`echo ${KDMLIST[$Usuario]} | cut -f4 -d,`"
DesligarGrafico "${UsuarioGrafico}" "${HaltCommand}" "${UserSessao}" "${HaltDisplay}"
# Incremento Usuario, para poder analisar o próximo (e para o while funcionar)
((Usuario++))
done
# Quando terminar, eu verifico se eu fiz com sucesso a verificação para algum usuário.
# Se não fiz (que significa que não há ninguém com uma sessão gráfica, via KDM),
# aí eu faço o desligamento antigo (sem perguntar)
if [ $Usuario -eq 1 ]
then
DesligarConsole
fi
return 0
}
# A função a seguir diz que se o KDM estiver em execução, é executado o desligamento gráfico,
# senão é utilizado o desligamento padrão, em modo texto
PowerProcess()
{
fuser -vm / 2>&1 | grep $Cliente_Grafico && DesligarUsuarios || DesligarConsole
}
## Aqui eu faço tudo isso definido acima.
PowerProcess
## FIM DO SCRIPT ##
Instalador de novas versões do Java no Debian
Criando uma lixeira p/ o usuário
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Mint Xfce não mantém a conexão no wi-fi (2)
Problemas com Driver NVIDIA (5)
Warcraft II Remastered no Linux? (8)









