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

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

Re: [shell-script] Uptime de Serviços


From: Luiz Sales
Subject: Re: [shell-script] Uptime de Serviços
Date: Tue, 9 Jul 2013 18:21:41 -0300

Surgiram alguns erros.. com relação as horas, minutos..

[root@D01LS150V ~]# /home/zabbix/procupdate.sh nmbd
+ um_dia=86400
+ uma_hora=3600
+ um_minuto=60
++ ps h -C nmbd
++ head -n1
++ awk '{print $1}'
+ processo=1980
++ ps -eo pid,etime
++ grep 1980
+ Reg=' 1980 32-00:40:19'
+ grep -F -
 1980 32-00:40:19
+ grep -E '0-([0-9]{2}:){2}[0-9]{2}'
++ sed s/0-/0-00:/
+ Reg='1980 32-00:40:19'
+ IFS=' -:'
+ read Lixo Dias Horas Mins Secs
++ echo 2764800
+ dia_s=2764800
+ echo 'Dia: 2764800'
Dia: 2764800
++ echo 0
+ hora_s=0
+ echo 'Hora: 0'
Hora: 0
++ echo 2400
+ min_s=2400
+ echo 'Minuto: 2400'
Minuto: 2400
+ echo 2767219
2767219
[root@D01LS150V ~]# /home/zabbix/procupdate.sh smbd
+ um_dia=86400
+ uma_hora=3600
+ um_minuto=60
++ ps h -C smbd
++ head -n1
++ awk '{print $1}'
+ processo=6139
++ ps -eo pid,etime
++ grep 6139
+ Reg=' 6139    08:18:50'
+ grep -F -
++ sed -r 's/6139 +/6139 0-/'
+ Reg=' 6139 0-08:18:50'
+ grep -E '0-([0-9]{2}:){2}[0-9]{2}'
6139 0-08:18:50
+ IFS=' -:'
+ read Lixo Dias Horas Mins Secs
++ echo 0
+ dia_s=0
+ echo 'Dia: 0'
Dia: 0
/home/zabbix/procupdate.sh: line 22: 08: value too great for base (error
token is "08")
+ hora_s=
+ echo 'Hora: '
Hora:
++ echo 1080
+ min_s=1080
+ echo 'Minuto: 1080'
Minuto: 1080
/home/zabbix/procupdate.sh: line 28: 0++min_s+50: syntax error in
expression (error token is "++min_s+50")
[root@D01LS150V ~]# /home/zabbix/procupdate.sh slapd
+ um_dia=86400
+ uma_hora=3600
+ um_minuto=60
++ ps h -C slapd
++ awk '{print $1}'
++ head -n1
+ processo=4685
++ ps -eo pid,etime
++ grep 4685
+ Reg=' 4685 34-02:09:42'
+ grep -F -
 4685 34-02:09:42
+ grep -E '0-([0-9]{2}:){2}[0-9]{2}'
++ sed s/0-/0-00:/
+ Reg='4685 34-02:09:42'
+ IFS=' -:'
+ read Lixo Dias Horas Mins Secs
++ echo 2937600
+ dia_s=2937600
+ echo 'Dia: 2937600'
Dia: 2937600
++ echo 7200
+ hora_s=7200
+ echo 'Hora: 7200'
Hora: 7200
/home/zabbix/procupdate.sh: line 24: 09: value too great for base (error
token is "09")
+ min_s=
+ echo 'Minuto: '
Minuto:
+ echo 2944842
2944842
[root@D01LS150V ~]#

 Pode ser algo com o sed la de cima...




2013/7/9 Luiz Sales <address@hidden>

> Erro meu... variaveis nao condiziam... desculpe.
>
>
> 2013/7/9 Luiz Sales <address@hidden>
>
>> Li o seu codigo, porem quando copiei e colei, eu percebi que o mesmo
>> adicionou o 0- antes dos serviços que nao tem dias e deixou os serviços com
>> dias intactos, porem nao consegui assimilar como colocaria no meu codigo..
>>
>> copiando e colando continuam os mesmos erros..
>>
>> [root@D01LS150V ~]# ./prc.sh smbd
>> 648 0-01:24:52
>> ./prc.sh: line 19: *86400: syntax error: operand expected (error token is
>> "*86400")
>> Dia:
>> ./prc.sh: line 21: *3600: syntax error: operand expected (error token is
>> "*3600")
>> Hora:
>> ./prc.sh: line 23: *60: syntax error: operand expected (error token is
>> "*60")
>>  Minuto:
>> Uptime smbd em segundos: 1
>> 2
>> [root@D01LS150V ~]# ./prc.sh sshd
>>  1487 36-07:13:07
>> ./prc.sh: line 19: *86400: syntax error: operand expected (error token is
>> "*86400")
>> Dia:
>> ./prc.sh: line 21: *3600: syntax error: operand expected (error token is
>> "*3600")
>> Hora:
>> ./prc.sh: line 23: *60: syntax error: operand expected (error token is
>> "*60")
>> Minuto:
>> Uptime sshd em segundos: 1
>> 2
>>
>>
>>
>> 2013/7/9 Julio C. Neves <address@hidden>
>>
>> Luiz, favor ser mais explicito. O que "não fechou" significa. Escrevi umas
>>> 30 linhas para te ajudar e vc me responde em 1/2 linha!
>>>
>>> Abcs,
>>> Julio
>>> *@juliobash
>>> *
>>>
>>>
>>>
>>> Em 9 de julho de 2013 16:58, Luiz Sales <address@hidden> escreveu:
>>>
>>> > **
>>> >
>>> >
>>> > Julio,
>>> > Nao consegui entender seu raciocinio, e quando no shell, alguma linha
>>> nao
>>> > fechou :P
>>> >
>>> > Marcelo,
>>> > Pelo que vi, com esse codigo eu perco os meus dias.. se eles
>>> existirem..
>>> >
>>> > deixei da seguinte maneira..
>>> >
>>> > day=$(ps -eo pid,time | sed -r 's/ (([0-9]{2}:){2}[0-9]{2})/ 0-\1/g' |
>>> > grep $processo | awk -F " " '{print $2}' | awk -F "-" '{print $1}')
>>> > echo "Dias: $day"
>>> >
>>> > [root@D01LS150V ~]# ./procupdate.sh sshd
>>> > Dias: 0
>>> > Dia: 0
>>> > Hora: 21600
>>> > Minuto: 960
>>> > Uptime sshd em segundos: 22562
>>> > 22562
>>> > [root@D01LS150V ~]# ./procupdate.sh slapd
>>> > Dias: 0
>>> > Dia: 0
>>> > Hora: 0
>>> > Minuto: 2460
>>> > Uptime slapd em segundos: 2519
>>> > 2519
>>> >
>>> > e sem o seu codigo..
>>> >
>>> > [root@D01LS150V ~]# ./procupdate.sh sshd
>>> > Dias: 36
>>> > Dia: 3110400
>>> > Hora: 21600
>>> > Minuto: 1020
>>> > Uptime sshd em segundos: 3133072
>>> > 3133072
>>> > [root@D01LS150V ~]# ./procupdate.sh slapd
>>> > Dias: 34
>>> > Dia: 2937600
>>> > Hora: 0
>>> > Minuto: 2580
>>> > Uptime slapd em segundos: 2940228
>>> > 2940228
>>> >
>>> > alterando um pouco o script..
>>> >
>>> > # Pega a quantos dias o processo ta rodando.
>>> > day=$(ps -eo pid,etime | grep $processo | awk -F " " '{print $2}' |
>>> > awk -F "-" '{print $1}')
>>> > echo "Dias: $day"
>>> > if [ -z $day ];
>>> > then
>>> > day=$(ps -eo pid,time | sed -r 's/
>>> > (([0-9]{2}:){2}[0-9]{2})/ 0-\1/g' | grep $processo | awk -F " " '{print
>>> > $2}' | awk -F "-" '{print $1}')
>>> > echo "Dias: $day"
>>> > fi
>>> >
>>> > [root@D01LS150V ~]# ./procupdate.sh sshd
>>> > Dias: 36
>>> > Dia: 3110400
>>> > Hora: 21600
>>> > Minuto: 1260
>>> > Uptime sshd em segundos: 3133316
>>> > 3133316
>>> > [root@D01LS150V ~]# ./procupdate.sh smbd
>>> > Dias: 33:47
>>> > ./procupdate.sh: line 32: 33:47*86400: syntax error in expression
>>> (error
>>> > token is ":47*86400")
>>> > Dia:
>>> > ./procupdate.sh: line 34: *3600: syntax error: operand expected (error
>>> > token is "*3600")
>>> > Hora:
>>> > ./procupdate.sh: line 36: *60: syntax error: operand expected (error
>>> token
>>> > is "*60")
>>> > Minuto:
>>> > Uptime smbd em segundos: 1
>>> > 2
>>> > [root@D01LS150V ~]#
>>> >
>>> > o smbd nao tem dias.. e o sshd tem..
>>> >
>>> > 2013/7/9 Marcelo Neto <address@hidden>
>>> >
>>> > > Melhorando o comando mais um pouquinho:
>>> > >
>>> > > *ps -eo pid,time | sed -r 's/ (([0-9]{2}:){2}[0-9]{2})/ 0-\1/g'*
>>> > >
>>> > >
>>> > >
>>> > > Em 9 de julho de 2013 16:20, Marcelo Neto <address@hidden>
>>> > > escreveu:
>>> > >
>>> > > > Seguinte,
>>> > > >
>>> > > > quando você executa somente "ps -eo pid,time" aparece o seguinte:
>>> > > >
>>> > > > 23574 1-14:09:54
>>> > > > 23650 00:00:02
>>> > > >
>>> > > > eu aconselharia adicionar "0-" antes das horas que não possuem dias
>>> > > > executando o comando com um sed:
>>> > > >
>>> > > > *ps -eo pid,time | sed -r 's/ ([0-9][0-9]:[0-9][0-9]:[0-9][0-9])/
>>> > 0-\1/g
>>> > > > *
>>> > > > *
>>> > > > *
>>> > > > *23574 1-14:09:54*
>>> > > > *23650 0-00:00:02*
>>> > > >
>>> > > > com isso você padronizaria.
>>> > > >
>>> > > >
>>> > > > Em 9 de julho de 2013 15:18, Luiz Sales <address@hidden>
>>> escreveu:
>>> > > >
>>> > > >> **
>>> > > >>
>>> > > >>
>>> > > >> Amigos,
>>> > > >>
>>> > > >> Estou trabalhando em uma soluçao para descobrir o uptime dos
>>> > serviços...
>>> > > >> eu estou buscando o resultado em segundos.
>>> > > >>
>>> > > >> Segue o script que "estou" desenvolvendo..
>>> > > >>
>>> > > >> #!/bin/sh -x
>>> > > >> um_dia="86400"
>>> > > >> uma_hora="3600"
>>> > > >> um_minuto="60"
>>> > > >>
>>> > > >> processo=$(ps h -C $1 | head -n1 | awk '{print $1}')
>>> > > >> if [ -z $processo ];
>>> > > >> then
>>> > > >> echo "Processo nao encontrado!"
>>> > > >> exit 1
>>> > > >> else
>>> > > >> # Pega a quantos dias o processo ta rodando.
>>> > > >> day=$(ps -eo pid,etime | grep $processo | awk -F " " '{print $2}'
>>> |
>>> > > >> awk -F "-" '{print $1}')
>>> > > >> echo $day
>>> > > >> if [ -z $day ];
>>> > > >> then
>>> > > >>
>>> > > >> day="0"
>>> > > >> fi
>>> > > >>
>>> > > >> # Calcular passado
>>> > > >> # Hora
>>> > > >> hour=$(ps -eo pid,etime | grep $processo | awk -F " " '{print $2}'
>>> > > >> | awk -F "-" '{print $2}' | awk -F ":" '{print $1}')
>>> > > >> echo $hour
>>> > > >> minute=$(ps -eo pid,etime | grep $processo | awk -F " " '{print
>>> > > >> $2}' | awk -F "-" '{print $2}' | awk -F ":" '{print $2}')
>>> > > >> echo $minute
>>> > > >> seconds=$(ps -eo pid,etime | grep $processo | awk -F " " '{print
>>> > > >> $2}' | awk -F "-" '{print $2}' | awk -F ":" '{print $3}')
>>> > > >> echo $seconds
>>> > > >>
>>> > > >> dia_s=`echo $(($day*$um_dia))`
>>> > > >> echo "Dia: $dia_s"
>>> > > >> hora_s=`echo $(($hour*$uma_hora))`
>>> > > >> echo "Hora: $hora_s"
>>> > > >> min_s=`echo $(($minute*$um_minuto))`
>>> > > >> echo "Minuto: $min_s"
>>> > > >>
>>> > > >> echo "Uptime $1 em segundos: $(($dia_s+$hora_s+min_s+seconds))"
>>> > > >> echo $(($dia_s+$hora_s+min_s+seconds))
>>> > > >>
>>> > > >> fi
>>> > > >>
>>> > > >> com o comando
>>> > > >> ps h -C <nome do serviço> eu consigo pegar o pid e com o comando
>>> > > >> ps -eo pid,time eu pego o tempo de execução, mas alguns serviços
>>> nao
>>> > tem
>>> > > >> dias(no ar) e eu acabo pegando outra variavel, acho que devido a
>>> > posição
>>> > > >> de
>>> > > >> cada atributo.. teria como delimitar o para o time ser sermpre em
>>> uma
>>> > > >> coluna.. ou algo quen houvesse um padrao..
>>> > > >>
>>> > > >> se o serviço tiver dia hora minuto segundo funciona corretamente,
>>> mas
>>> > se
>>> > > >> nao tiver dia, ele ja da erro no shell e eu perco as informações
>>> > > >>
>>> > > >> --
>>> > > >> Luiz Sales
>>> > > >> aka redhate
>>> > > >> Certified Zimbra, LPIC-2 e ITIL v2
>>> > > >> Linux User #347508
>>> > > >> aMSN: address@hidden
>>> > > >> Licq: 251384040
>>> > > >>
>>> > > >> [As partes desta mensagem que não continham texto foram removidas]
>>> > > >>
>>> > > >>
>>> > > >>
>>> > > >
>>> > > >
>>> > > >
>>> > > > --
>>> > > > Marcelo Neto
>>> > > > (85) 8886.5730
>>> > > > Fortaleza - Brasil
>>> > > >
>>> > >
>>> > >
>>> > >
>>> > > --
>>> > > Marcelo Neto
>>> > > (85) 8886.5730
>>> > > Fortaleza - Brasil
>>> > >
>>> > >
>>> > > [As partes desta mensagem que não continham texto foram removidas]
>>> > >
>>> > >
>>> > >
>>> > > ------------------------------------
>>> > >
>>> > > ----------------------------------------------------------
>>> > > Esta lista não admite a abordagem de outras liguagens de programação,
>>> > como
>>> > > perl, C etc. Quem insistir em não seguir esta regra será moderado sem
>>> > > prévio aviso.
>>> > > ----------------------------------------------------------
>>> > > Sair da lista: address@hidden
>>> > > ----------------------------------------------------------
>>> > > Esta lista é moderada de acordo com o previsto em
>>> > > http://www.listas-discussao.cjb.net
>>> > > ----------------------------------------------------------
>>> > > Servidor Newsgroup da lista: news.gmane.org
>>> > > Grupo: gmane.org.user-groups.programming.shell.brazil
>>> > >
>>> > > Links do Yahoo! Grupos
>>> > >
>>> > >
>>> > >
>>> >
>>> > --
>>> > Luiz Sales
>>> > aka redhate
>>> > Certified Zimbra, LPIC-2 e ITIL v2
>>> > Linux User #347508
>>> > aMSN: address@hidden
>>> > Licq: 251384040
>>> >
>>> > [As partes desta mensagem que não continham texto foram removidas]
>>> >
>>> >
>>> >
>>>
>>>
>>> [As partes desta mensagem que não continham texto foram removidas]
>>>
>>>
>>>
>>> ------------------------------------
>>>
>>> ---------------------------------------------------------------------
>>> Esta lista não admite a abordagem de outras liguagens de programação,
>>> como perl, C etc. Quem insistir em não seguir esta regra será moderado sem
>>> prévio aviso.
>>> ---------------------------------------------------------------------
>>> Sair da lista: address@hidden
>>> ---------------------------------------------------------------------
>>> Esta lista é moderada de acordo com o previsto em
>>> http://www.listas-discussao.cjb.net
>>> ---------------------------------------------------------------------
>>> Servidor Newsgroup da lista: news.gmane.org
>>> Grupo: gmane.org.user-groups.programming.shell.brazil
>>>
>>> Links do Yahoo! Grupos
>>>
>>>
>>>
>>
>>
>> --
>> Luiz Sales
>> aka redhate
>> Certified Zimbra, LPIC-2 e ITIL v2
>> Linux User #347508
>> aMSN: address@hidden
>> Licq: 251384040
>>
>
>
>
> --
> Luiz Sales
> aka redhate
> Certified Zimbra, LPIC-2 e ITIL v2
> Linux User #347508
> aMSN: address@hidden
> Licq: 251384040
>



-- 
Luiz Sales
aka redhate
Certified Zimbra, LPIC-2 e ITIL v2
Linux User #347508
aMSN: address@hidden
Licq: 251384040


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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