shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re[4]: [shell-script] Status dos servicos


From: Viktor Mota
Subject: Re[4]: [shell-script] Status dos servicos
Date: Sun, 20 May 2007 00:45:14 -0300

Olá Bruno Gunter Fricke,

Em segunda-feira, 14 de maio de 2007, 07:52:11, você escreveu:

Modifiquei  o  script, para uma versão mais leve (eu acho), e consegui
resolver  o  problema  de levantar o servico tb. Penso que agora ficou
legal (ao menos, ele me atende perfeitamente).

Segue uma cópia do mesmo. Para os demais do grupo, fiquem a vontade
para modifica-lo!

==============================================================================
#!/bin/bash
# Script: religa.sh
# Data: 13/05/07
# Ultima modificacao: 19/05/07
#
# Objetivo:
# Testar os daemons para ver se estao rodando, caso negativo liga-os!

# Limpar a tela
clear

# A funcao VERIFICA resolve o problema dos lacos e diminuiu a
# programacao, permitindo uma manutencao mais efetiva.

function verifica () {
/sbin/pidof $servico > /dev/null
        if [ $? -eq 0 ]
                then
                        echo "Programa rodando" $servico
                else
                        tput bold
                        echo 
"--------------------------------------------------"
                        echo "Programa não está rodando" $servico
                        echo "-----> tentando levantar o serviço"
                        service $sdaemon stop
                        service $sdaemon start
                        echo 
"--------------------------------------------------"
                        tput sgr0

        fi
}

#---------------------------------------------------------------------
#Testando o servico: SQUID
servico=squid
sdaemon=squid
verifica
#---------------------------------------------------------------------

#---------------------------------------------------------------------
#Testando o servico: SYSLOGD
servico=syslogd
sdaemon=syslog
verifica
#---------------------------------------------------------------------

#---------------------------------------------------------------------
#Testando o servico: PPPOE
servico=pppoe
sdaemon=adsl-init
verifica
#---------------------------------------------------------------------

#---------------------------------------------------------------------
#Testando o servico: MYSQLD
servico=mysqld
sdaemon=mysql
verifica
#---------------------------------------------------------------------

#---------------------------------------------------------------------
#Testando o servico: NAMED
servico=named
sdaemon=named
verifica
#---------------------------------------------------------------------

#---------------------------------------------------------------------
#Testando o servico: HTTPD
servico=httpd
sdaemon=httpd
verifica
#---------------------------------------------------------------------

#---------------------------------------------------------------------
#Testando o servico: CROND
servico=crond
sdaemon=crond
verifica
#---------------------------------------------------------------------

exit 0
==============================================================================

> Dependendo  da  distribuição,  não precisa desse monte de linhas não
> ;-)
> 
> Por  exemplo, se for red hat, você pode criar vários scripts simples
> que  checam  o status do serviço com o "service status" e colocar na
> cron  para  verificar  de  30  em  30 segundos. Se der "pau", roda o
> "service restart".
> 
> Simples  e  funcional.  Eu  uso  red  hat  e  faço  assim nas minhas
> máquinas. Creio que outras distros tenham comandos parecidos.
> 
> []'s
> Bruno Gunter
> 
> ----- Original Message ----- 
> From: Viktor Mota 
> To: Edson Marquezani Filho 
> Sent: Sunday, May 13, 2007 11:28 PM
> Subject: Re[2]: [shell-script] Status dos servicos
> 
> Olá Edson Marquezani Filho,
> 
> Em sábado, 12 de maio de 2007, 18:55:55, você escreveu:
> 
> Muito obrigado pela ajuda, seguindo os pensamentos, fiz o seguinte
> 
> ----------------------------------------------------------
> #!/bin/bash
> # Script: religa.sh
> # Data: 13/05/07
> # Ultima modificacao: 13/05/07
> #
> # Objetivo:
> # Testar os daemons para ver se estao rodando, caso negativo liga-os!
> 
> # Limpar a tela
> clear
> 
> # Definindo variaveis
> #raiz=/etc/rc.d/init.d
> 
> # Definando o laço para a variavel servicos (squid, syslogd, etc)
> for servicos in squid syslogd pppoe mysqld named httpd crond sshd qmaild
> do
> /sbin/pidof $servicos > /dev/null
> if [ $? -eq 0 ]
> then
> echo "Programa rodando" $servicos
> else
> tput bold
> echo "Programa não está rodando" $servicos
> echo "----->> Tentando levantar o serviço"
> tput sgr0
> service $servico start
> fi
> done
> 
> #echo Pegando o IP do VELOX
> #IF0="ppp0"
> #IP_IS=`ifconfig $IF0 | grep inet | cut -d : -f 2 | cut -d \ -f 2`
> 
> #echo O IP eh $IP_IS
> #IFO=""
> 
> exit 0
> ----------------------------------------------------------
> 
> Ainda nao consegui startar o servico de dentro do religa.sh, haja
> visto que no laco "for" os nomes informados nao necessariamente
> condizem com os arquivos no /etc/rc.d/init.d
> 
> Exemplo:
> Parei propositalmente o MySql, so que nao consigo startar o bendito
> pois no "for" ele se chama "mysqld" e no /etc/rc.d/init.d/ chama-se
> apenas "mysql" sem o "D"!
> 
> Aceito outras sugestões de todo o grupo, e sintam-se a vontade para
> melhorar e/ou criticar o script acima!
> 
>>Eu sou bem fraquinho de bash-script, mas a primeira coisa que me vem
>>à cabeça é usar o comando pidof pra ver se o daemon em questão tá
>>rodando.
> 
>>Tente, no shell:
> 
>># pidof programa > /dev/null && echo "Programa rodando" || echo
>>"Programa não está rodando"
>>
>>Se o processo existir vai jogar "Programa rodando" na tela ou
>>"Programa não está rodando" se não estiver.
>>O redirecionamento pra /dev/null é só pra não jogar o PID do programa na tela.
>>
>> Uma maneira melhor de você poder tratar a ação a ser executada de
>> acordo com o estado do programa, é usando a variável $?, que guarda o
>> código de retorno do último comando executado.
>> A grande maioria dos programas de Unix retornam 0 (zero) como código
>> de sucesso, e 1 em caso contrário.
>> 
>> Por exemplo, num script:
>> 
>> #!/bin/bash
>> 
>> pidof programa >> /dev/null
>> if [ $? -eq 0 ]; then
>> echo "Programa rodando"
>> else
>> echo "Programa não está rodando"
>> fi
>> 
>> Se quiser saber o PID do processo é só atribuir o comando a uma
>> variável, assim:
>> 
>> PID=`pidof programa`
>> 
>> A partir disso você pode escolher o que fazer quando um programa que
>> deveria estar rodando, não está e tal. Fica a seu gosto.
>> 
>> Inclusive se você for verificar vários deles, como citado, seria
>> mais inteligente fazer uma lista e ir varrendo com um laço FOR cada um
>> deles, e iniciando os que estivessem parados e tal, se essa for sua
>> intenção.
> 
> -- 
> Sds,
> Viktor Mota
> address@hidden
> "Se um homem tiver realmente muita fé, pode dar-se ao luxo de ser cético." 
> [Friedrich Nietzsche]


-- 
Sds,
Viktor Mota
address@hidden
"Não tenho um caminho novo. O que eu tenho de novo é um jeito de caminhar." 
[Thiago de Melo]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]