Script Para o Desligamento do Sistema
Publicado por Leandro Santiago 28/02/2007
[ Hits: 6.148 ]
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 ##
SabATT - Facilitador de atualização (Equo - Sabayon)
Escrever números, datas, horas e outros por extenso
Checagem de ping com link down e link up
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Notebook Novo. Aceita Duplo Boot? (7)
Desempenho abaixo do esperado - travadas e congelamento do sistema ope... (2)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta