DÚVIDA COM $?

1. DÚVIDA COM $?

olacomovai
olacomovaivc

(usa Debian)

Enviado em 04/07/2013 - 11:29h

alguem pode me explicar como posso usar a $? ?

estou tentando fazer algo do tipo

ping -c 1 www.google.com

while $?; do
ping -c 1 www.google.com
done;

mas ta dando erro!!!!

o ping ele executa la em cima...

tentei de todos os jeitos, pls, alguem me ajuda...

dei uma boa lida ja em introducoes ao SC mas ta osso!!!


  


2. Re: DÚVIDA COM $?

olacomovai
olacomovaivc

(usa Debian)

Enviado em 04/07/2013 - 12:47h

Bom , achei a resposta, tem que por entre [ ]

fica assim [ $? ]

então bom.. fica como resolvido ai, e para futuras dúvidas não tenham esse desleixe! hehehe

para if também tem que fazer dessa forma..


pessoal que trabalha com 3g é uma boa por um tempo no ping ou usando o sleep.

[]'s


3. Re: DÚVIDA COM $?

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 04/07/2013 - 13:06h

Cara... se você quer lidar com o status de saída do último comando e jogar isso em um loop while vai ser doidera. Me conta aí, o que você realmente quer fazer com esse script?


4. Re: DÚVIDA COM $?

olacomovai
olacomovaivc

(usa Debian)

Enviado em 04/07/2013 - 13:16h

Então meu caro, eu quero verificar o tempo todo se estou conectado na internet.


Isto pq este script vai ficar em um raspberry pi, com conexao 3g..

a 3g se fica ociosa ela cai, e nós estmaos trabalhando com banco de dados,precisamos que esteja
se possivel o máximo conectado, trocando informacoes.

sou iniciante na area de SC, então pela lógica básica faço um ping antes e dpz faço um while infinito testando o ping..

logico que mais pra frente vou por um sleep ou timer para nao ficar consumindo tanto da máquina..


vc me sugere outra solucao? estou de portas abertas para novas sugestoes :)


5. Re: DÚVIDA COM $?

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 04/07/2013 - 13:24h

olacomovaivc escreveu:

Então meu caro, eu quero verificar o tempo todo se estou conectado na internet.


Isto pq este script vai ficar em um raspberry pi, com conexao 3g..

a 3g se fica ociosa ela cai, e nós estmaos trabalhando com banco de dados,precisamos que esteja
se possivel o máximo conectado, trocando informacoes.

sou iniciante na area de SC, então pela lógica básica faço um ping antes e dpz faço um while infinito testando o ping..

logico que mais pra frente vou por um sleep ou timer para nao ficar consumindo tanto da máquina..


vc me sugere outra solucao? estou de portas abertas para novas sugestoes :)


Pra fazer while infinito é melhor fazer assim:
 while [ 1 ] ; do ping -c www.google.com.br ; done 

Que nem a gente faz quando usa menus com ncurses e dialog. Em algumas distros o while [ 1 ] tem que ser substituído pelo while [ 0 ] pra dar certo, mas a idéia é a mesma. Dessa forma gera menos processamento, porque o while [ $? ] pára pra ler o último comando executado (uma camada a mais de processamento), enquanto o while [ 1 ] não. Sacou?

Enfia um sleep depois do ping, assim
 while [ 1 ]; do ping -c www.google.com.br ; sleep 5s ; done  

Pra ele dar um sleep de 5 segundos. Pra um sleep de 1 minuto, troque o 5s por 1m, e assim vai.


6. Re: DÚVIDA COM $?

olacomovai
olacomovaivc

(usa Debian)

Enviado em 04/07/2013 - 13:29h

opa me expliquei mal , vou mudar aqui, teria que ser assim na real:


ping -c 1 www.google.com

while [ $? -eq 0 ]; do
ping -c 1 www.google.com
done;

ai tipo, se a saida for diferente de 0, entao ele sai.

saindo ele faz um comando embaixo do tipo:

reconnect();

pois se ele nao esta mais pingando é pq a conexao caiu.. hehe nao me liguei nesse detalhe!


7. Re: DÚVIDA COM $?

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 04/07/2013 - 13:33h

olacomovaivc escreveu:

opa me expliquei mal , vou mudar aqui, teria que ser assim na real:


ping -c 1 www.google.com

while [ $? -eq 0 ]; do
ping -c 1 www.google.com
done;

ai tipo, se a saida for diferente de 0, entao ele sai.

saindo ele faz um comando embaixo do tipo:

reconnect();

pois se ele nao esta mais pingando é pq a conexao caiu.. hehe nao me liguei nesse detalhe!


Ah, tá... Nesse seu caso realmente é melhor puxar pelo $? mesmo, nem tem escolha ;-)


8. Re: DÚVIDA COM $?

olacomovai
olacomovaivc

(usa Debian)

Enviado em 04/07/2013 - 13:41h

valeu pela ajuda!


9. Re: DÚVIDA COM $?

Fernando
phoemur

(usa Debian)

Enviado em 04/07/2013 - 21:03h

Uma sugestão:

[code]
reconnect() {
#aqui os seus comandos pra reconectar
}

while true; do
ping -c2 www.google.com
if [ "$?" -ne "0" ]; then
reconnect()
fi
sleep 10s
done
[code]


Assim ele fica no loop infinito e não precisa sair dele pra reconectar...


10. Re: DÚVIDA COM $?

Fernando
phoemur

(usa Debian)

Enviado em 04/07/2013 - 21:05h

Deu pau na formatação, era assim:


reconnect() {
#aqui os seus comandos pra reconectar
}

while true; do
ping -c2 www.google.com
if [ "$?" -ne "0" ]; then
reconnect()
fi
sleep 10s
done







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts