shell script com ping

1. shell script com ping

Eduardo Bueno de Oliveira
predator

(usa Debian)

Enviado em 16/11/2007 - 11:01h

Olá pessoal!

Preciso de ajuda com um shell script que estou tentando fazer...

#!/bin/sh
ping -c 2 192.168.0.1

if [ "ping -c 2 192.168.0.1" == "64 bytes from" ];
then
#se o ip responder o ping mostra online
echo "online!"
else
#se o ip não responder mostra offline!
echo "offline!"

fi

fiz os teste , se o ip responder é mostrado online, e quando o ip não responde, também é mostrado online!

onde eu errei?

abraços




  


2. Online ou Offline?

Rodrigo Ferreira Valentim
engos

(usa openSUSE)

Enviado em 16/11/2007 - 11:14h

Aqui fiz o teste para um IP que responde e para um que não responde e o resultado foi sempre offline.

De qualquer maneira, você não pode fazer um teste desse tipo para saber se a máquina está ou não online.

O script precisa ser melhor validado.

Você precisa usar sed ou awk para validar se a resposta é "Destination Port Unreachable", caso contrário sim você pode dizer que está online.


3. Re: shell script com ping

Thiago Fernandes de Melo
m4tri_x

(usa Ubuntu)

Enviado em 16/11/2007 - 11:16h

ae criei um tb, não lembro ainda se funciona, mais da uma olhada ai, as vezes vc consegui tirar algo para corrigir o seu script, ou não... fiz em php e vc precisa do xajax pra rodar, eh simples de baixar eh soh ir no google e digitar: xajax
[]´s

---inicio---
<?
require_once("../comando/xajax.inc.php");
function testping($formData1)
{
$objResponse = new xajaxResponse();
$ipini = $formData1['ini'];
$ipfim = $formData1['fim'];

$ipiniar = array($ipini);
$ipiniar1 = explode(".", $ipiniar[0]);
$ipini4 = $ipiniar1[3];

$ipfimar = array($ipfim);
$ipfimar1 = explode(".", $ipfimar[0]);
$ipfim4 = $ipfimar1[3];

for($i = $ipini4; $i<=$ipfim4;$i++){
$ip = $ipiniar1[0].".".$ipiniar1[1].".".$ipiniar1[2].".".$i."";
$shell = shell_exec("ping -s4 -c1 $ip |grep '1 received'");

if($shell != "")
$results = "$ip , $shell"; #$ip <font size=2 color=green><b>On-Line</b></font>";
else
$results = "$ip , off"; #$ip <font size=2 color=red><b>Off-Line</b></font>";
$resultss .= "$results<br>";
}


$objResponse->addAssign("resultping","innerHTML", $resultss);


return $objResponse->getXML();

}
function gethost($formData)
{
$objResponse = new xajaxResponse();
$tmp = $formData['domain'];
$ip = gethostbyname($tmp);
if($tmp == $ip)
$stats = "<font color=red>Off-line</font>";
else
$stats = "<font color=green>On-line</font>";
$result = "Dominio: $tmp <br>IP: $ip<br>Status: $stats";

$objResponse->addAssign("resolv","innerHTML", $result);
return $objResponse->getXML();

}

$xajax = new xajax();
$xajax->registerFunction("gethost");
$xajax->registerFunction("testping");
$xajax->processRequests();
?>
<html>
<head>
<? $xajax->printJavascript(); ?>
</head>
<form name=teste>
<table border=1>
<tr><td>Ip/Domain Teste: <input type=text name=domain></td><td>
<input type=button name=ss value=Get onclick="xajax_gethost(xajax.getFormValues(teste))">
<br><br>
<div id="resolv"></div></td></tr>
</form>
</table>
<table border=1>
<form name=ping>
<tr><td>Ping por Faixa:</td></tr><tr><td>Inicial:<input type=text name=ini></td><br><td>Final:<input type=text name=fim></td><td><input type=button value=Test onclick="xajax_testping(xajax.getFormValues(ping))"></td></tr>
<tr><td><div id=resultping></div></td></tr>
</table>
</form>
</html>



4. shell script com ping

Eduardo Bueno de Oliveira
predator

(usa Debian)

Enviado em 16/11/2007 - 11:46h

obrigado pelas respostas rápidas!

Na verdade esse script com ping é só um teste, o que eu quero mesmo é um script que ping em um ip, se este ip estiver online ele continua pingando, mas se estiver offline ele desligue o computador!

será que é possivel?

abraços


5. ?

Rodrigo Ferreira Valentim
engos

(usa openSUSE)

Enviado em 16/11/2007 - 11:59h

Se ele está offline, como você vai mandar desligar o computador?


6. Re: shell script com ping

Eduardo Bueno de Oliveira
predator

(usa Debian)

Enviado em 16/11/2007 - 13:29h

a maquina que vai ser desligada, é a que possui o script


7. Resolvido! shell script com ping

Eduardo Bueno de Oliveira
predator

(usa Debian)

Enviado em 16/11/2007 - 14:09h

Consegui com esse script que achei...

#!/bin/sh

while :; do

ping -qc4 10.0.0.5

if [ $? -gt 0 ]; then

echo Sistema desligando por falta de energia em `date` > /tmp/falta-energia.log
/sbin/halt
fi

sleep 3s

done

abraços


8. Tenta isso...

Rodrigo Ferreira Valentim
engos

(usa openSUSE)

Enviado em 16/11/2007 - 14:22h

Agora sim consegui entender.

Verifique as modificações que fiz, executei um teste rapido e funcionou, só não esqueça de tirar o echo do shutdown.




#!/bin/sh

while true
do
CMD=$(ping -c1 192.168.0.2 | grep From | awk -F' ' '{ print $4 $5 $6}')
echo $CMD

if [ "$CMD" == "DestinationPortUnreachable" ];
then
#se o ip não responder mostra offline!
echo "shutdown -h now"
else
#se o ip responder o ping mostra online
echo "online!"
$(sleep 1)
fi
done



9. Re: shell script com ping

Rodrigo Ferreira Valentim
engos

(usa openSUSE)

Enviado em 16/11/2007 - 14:23h

Estava testando o script e não vi seu post anterior.

Fico contente que tenha conseguido sozinho.

Abraços.


10. Re: shell script com ping

Aldefax G. Kuhn
agk

(usa Debian)

Enviado em 17/11/2007 - 13:53h

Gente, acho que vcs estão complicando as coisas, isso é pra ser bem simples.
Olha o que eu uso:

#!/bin/bash
if ! ping -c 5 www.terra.com.br >/dev/null; then
echo "Internet down!!!"
else
echo "Internet ok !!!"
exit 1
fi
exit



11. Re: shell script com ping

Dênis Wallace de Souza
comfaa

(usa Debian)

Enviado em 21/09/2008 - 00:23h

Fala ai agk,

cara tudo que eu precisa ....
essa dica sua foi simples e objetiva ....

Obrigado !!

Abraços


12. boa dica

Jeffeson Luiz Oliveira de Campos
foguinho.peruca

(usa Ubuntu)

Enviado em 21/09/2008 - 07:24h

Gostei da dica acima. Vou anotar ela... simples e direta (bem ao estilo slack de ser.... ^^'')....



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts