Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico



  1. Olá amigos.

    Desenvolvi um script simples, para uma máquina que estava perdendo a rede wireless, devido a alguns problemas técnicos da placa wireless da máquina.


    #!/bin/bash

    vivo=`ping -c1 172.17.1.130 | grep received | cut -d" " -f4`

    if [ "$vivo" = 1 ]; then
    echo "AP01 NBCGIB está on-line"
    else
    echo "AP01 NBCGIB está inalcançável. Reiniciando serviço de rede"
    /etc/init.d/net.wlan0 restart
    fi



    Contudo, na man page do ping, tem essa passagem:


    ...
    If ping does not receive any reply packets at all it will exit with code 1. If a packet count and deadline are both specified, and fewer than count packets are received by the time the deadline has arrived, it will also exit with code 1. On other error it exits with code 2. Otherwise it exits with code 0. This makes it possible to use the exit code to see if a host is alive or not.
    ...



    Alguém pode me dizer como captar o exit code neste caso? .
    Porque assim, eu não preciso executar um comando que vai retornar um valor, o qual eu guardo numa variável e depois comparo. Basta executar o ping e captar o código de saída e depois comparar.
    Fiz alguns testes aqui, mas sem sucesso.

    Ab, Duca.
    Última edição por Duca; 25-11-2008 às 16:26.

  2. Duca, em shell script eu não sei, mas esse exit code (ou ret code) que ele se refere é pra chamadas de sistemas em linguagens de programação.

    Por exemplo, em c:


    #include <stdio.h>
    #include <stdlib.h>

    int main ()
    {
    int i;
    printf ("Testando o ping...\n");
    i=system("ping -c 172.17.1.130");
    printf ("Ret code: %d.\n",i);
    return 0;
    }



    ou em python:


    import os

    print 'testando ping...\n'
    ret = os.system('print -c 1 172.17.1.130')
    print "Ret code:",ret,"\n"



    O ret code é "acessado" pela chamada de sistema, no caso system ou os.system. Como o shell script tem acesso direto ao sistema, não sei se tem como ele obter esse retcode.

    Se quiser implementar isso em Python ou C posso te dar uma força...

    Até mais...



  3. Simples: $?

    O conteúdo da "variavel" " $? " é o exit code do último programa/função executada, logo:
    ping x.y.z.w
    if [ $? = 0 ]; then
    echo Beleza "campeao"!
    else
    echo Ih. Fu.."
    fi
    Última edição por candrecn; 25-11-2008 às 07:48.

  4. Citação Postado originalmente por candrecn Ver Post
    Simples: $?

    O conteúdo da "variavel" " $? " é o exit code do último programa/função executada, logo:
    ping x.y.z.w
    if [ $? = 0 ]; then
    echo Beleza "campeao"!
    else
    echo Ih. Fu.."
    fi

    Obrigado!
    Fiz uns testes e realmente ele guardou o exit code na variável $? .
    Desconhecia esse uso dessa variável.

    Agora, tentei guardar o exit code em uma variável comum, tipo :

    resultado=`ping -c1 172.17.1.130`



    mas este retornou:

    # echo $opa
    PING 172.17.1.130 (172.17.1.130) 56(84) bytes of data. 64 bytes from 172.17.1.130: icmp_seq=1 ttl=255 time=1.33 ms --- 172.17.1.130 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 1.332/1.332/1.332/0.000 ms



    Existe alguma maneira de guardar o exit code em um variável, assim como o $? guarda?

    Muito obrigado, Duca.
    Última edição por Duca; 25-11-2008 às 15:13.



  5. Já tinha ouvido falar desse $? mas nem lembrava mais... pra manter ele joga pra dentro de outra variável. Usando seu script:


    #!/bin/bash

    # Testa a conectividade
    ping -c1 172.17.1.130 > /dev/null
    # Armazena o exit code
    vivo=$?

    # Testa condição
    if [ $vivo = 1 ]; then
    echo "AP01 NBCGIB está on-line"
    else
    echo "AP01 NBCGIB está inalcançável. Reiniciando serviço de rede"
    /etc/init.d/net.wlan0 restart
    fi

    Última edição por Duca; 25-11-2008 às 16:27.






Tópicos Similares

  1. iptables - como monitorar o funcionamento de uma regra
    Por nataniel no fórum Servidores de Rede
    Respostas: 0
    Último Post: 19-10-2005, 22:31
  2. iptables - como monitorar o funcionamento de uma regra
    Por nataniel no fórum Servidores de Rede
    Respostas: 0
    Último Post: 19-10-2005, 21:17
  3. Respostas: 4
    Último Post: 20-05-2005, 13:47
  4. Como alterar o ip de uma placa
    Por miguiju no fórum Servidores de Rede
    Respostas: 7
    Último Post: 30-04-2005, 14:46
  5. como descobrir o ganho de uma antena
    Por Kd_marcinho no fórum Redes
    Respostas: 0
    Último Post: 24-06-2004, 22:50

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L