Prosseguir só quando pingar [RESOLVIDO]

1. Prosseguir só quando pingar [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 22/09/2012 - 20:48h

Como faço para continuar o script só quando responder um ping para www.terra.com.br

#!/bin/sh
# pingar para site e quando estiver ok continuar

TMP=/tmp/ip.txt

wget -q -O $TMP http://checkip.dyndns.org
ip=$(cat $TMP | awk '{print $6}' | cut -d"<" -f1)
echo "\nIP Externo Atual: $ip \n"
rm -rf $TMP


  


2. MELHOR RESPOSTA

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 23/09/2012 - 13:36h

think linux escreveu:

Usei da seguinte forma...

#!/bin/sh
IP=NO
until [ "$IP" = "YES" ]; do
controle=$(netstat 8.8.8.8 | grep -e "ESTABELECIDA")
if [ ! -z "$controle" ]; then
IP="YES"
fi
done
TMP=/tmp/ip.txt
wget -q -O $TMP http://checkip.dyndns.org
ip=$(cat $TMP | awk '{print $6}' | cut -d"<" -f1)
echo "\nIP Externo Atual: $ip \n"
rm -rf $TMP


mas quando esta sem conexão ele continua o script, onde deveria executar só se estivesse conectado.


Isso vai dar ruim mesmo. Usa o netstat como eu sugeri, --ip no literal, esse é o parâmetro.

3. Re: Prosseguir só quando pingar [RESOLVIDO]

Daniel Macedo
Daniel Macedo

(usa Debian)

Enviado em 22/09/2012 - 21:29h

Você vai usar o "ponto e virgula" assim Exemplo:
comando1 ; comando2

No seu caso seria,

#ping site.com ; ./seuscript





4. Re: Prosseguir só quando pingar [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 22/09/2012 - 23:24h

Mas quero colocar este teste dentro do script,

Vou colocar na inicialização e ai quando conectar na internet ele executa o resto do script, enquanto ele nao conecta ele fica testando o ping.


5. Re: Prosseguir só quando pingar [RESOLVIDO]

Bruno
BrunoTecnico

(usa Sabayon)

Enviado em 23/09/2012 - 09:05h

" Vou colocar na inicialização e ai quando conectar na internet ele executa o resto do script "

# Vai colocar no Contrab?
Eu deixaria a linha dessa forma:

@reboot    root     ping -c2 www.terra.com.br && /caminho/seu/script  


* O importante nessa linha é o &&.
O Script só vai ser executado se pingar, exatamente como vc quer.


6. Re: Prosseguir só quando pingar [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 23/09/2012 - 10:00h

Bruno Tecnico escreveu:

" Vou colocar na inicialização e ai quando conectar na internet ele executa o resto do script "

# Vai colocar no Contrab?
Eu deixaria a linha dessa forma:

@reboot    root     ping -c2 www.google.com && /caminho/seu/script  


* O importante nessa linha é o &&.
O Script só vai ser executado se pingar, exatamente como vc quer.


O chato de fazer dessa maneira é que se ele não conseguir pingar o script não vai. Seria melhor ele realizar o teste com um laço until e pelo netstat, algo mais ou menos assim

teste=NADA
until [ "$teste" = "APROVADO" ]; do
controle=$(netstat --ip | grep -e "ESTABELECIDA") - nota: às vezes o netstat vem em inglês, neste caso use ESTABLISHED
if [ -ne "$controle" ]; then
teste="APROVADO"
fi
done
resto do script



7. Re: Prosseguir só quando pingar [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 23/09/2012 - 11:51h

Isso, eu quero que se nao pingar ele fica testando, e assim que pingar continua o processo.


8. Re: Prosseguir só quando pingar [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 23/09/2012 - 12:02h

think linux escreveu:

Isso, eu quero que se nao pingar ele fica testando, e assim que pingar continua o processo.


Então coloca isso aqui no início do script:

#!/bin/bash

## Teste de conexão
## Colocar este script após os comandos que realizam a conexão com a internet, do contrário o computador vai travar

teste=NADA
until [ "$teste" = "APROVADO" ]; do
controle=$(netstat --ip | grep -e "ESTABELECIDA") - nota: às vezes o netstat vem em inglês, neste caso use ESTABLISHED
if [ ! -z "$controle" ]; then
teste="APROVADO"
fi
done


## Coloque abaixo disso o resto do script



9. Re: Prosseguir só quando pingar [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 23/09/2012 - 13:29h

Usei da seguinte forma...

#!/bin/sh
IP=NO
until [ "$IP" = "YES" ]; do
controle=$(netstat 8.8.8.8 | grep -e "ESTABELECIDA")
if [ ! -z "$controle" ]; then
IP="YES"
fi
done
TMP=/tmp/ip.txt
wget -q -O $TMP http://checkip.dyndns.org
ip=$(cat $TMP | awk '{print $6}' | cut -d"<" -f1)
echo "\nIP Externo Atual: $ip \n"
rm -rf $TMP


mas quando esta sem conexão ele continua o script, onde deveria executar só se estivesse conectado.


10. Re: Prosseguir só quando pingar [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 23/09/2012 - 13:45h

lcavalheiro escreveu:

think linux escreveu:

Usei da seguinte forma...

#!/bin/sh
IP=NO
until [ "$IP" = "YES" ]; do
controle=$(netstat 8.8.8.8 | grep -e "ESTABELECIDA")
if [ ! -z "$controle" ]; then
IP="YES"
fi
done
TMP=/tmp/ip.txt
wget -q -O $TMP http://checkip.dyndns.org
ip=$(cat $TMP | awk '{print $6}' | cut -d"<" -f1)
echo "\nIP Externo Atual: $ip \n"
rm -rf $TMP


mas quando esta sem conexão ele continua o script, onde deveria executar só se estivesse conectado.


Isso vai dar ruim mesmo. Usa o netstat como eu sugeri, --ip no literal, esse é o parâmetro.




Agora funcionou... Muito Obrigado!!!

#!/bin/sh
IP=NO
until [ "$IP" = "YES" ]; do
controle=$(netstat --ip | grep -e "ESTABELECIDA")
if [ ! -z "$controle" ]; then
IP="YES"
fi
done
TMP=/tmp/ip.txt
wget -q -O $TMP http://checkip.dyndns.org
ip=$(cat $TMP | awk '{print $6}' | cut -d"<" -f1)
echo "\nIP Externo Atual: $ip \n"
rm -rf $TMP



11. Re: Prosseguir só quando pingar [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 24/09/2012 - 23:59h

Se resolveu então, por favor, marque a melhor resposta.
O próximo membro que necessitar dele ficará grato.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts