<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000000">
Boa noite pessoal!<br>
<br>
Fiz um programinha (meu primeiro programa !!) para descobrir quais s&atilde;o
os IP's ativos na minha rede e surgiram algumas d&uacute;vidas.<br>
Abaixo segue o programa (&eacute; tosco, mas funcionou!..rsrs!):<br>
<br>
<font color="#3333ff">#!/usr/bin/perl <br>
<br>
use strict;<br>
use warnings;<br>
<br>
print "Digite a rede que deseja consultar: \n";<br>
print "Ex: Digite \"0\" se a rede for 192.168.0.0\n";<br>
<br>
my $rede = &lt;STDIN&gt;;<br>
chomp($rede);<br>
<br>
foreach (1..254) {<br>
#foreach ( 99 .. 101, 251 .. 254 ) {<br>
<br>
&nbsp;&nbsp;&nbsp; my $ip = "192.168.$rede.$_";<br>
<br>
&nbsp;&nbsp;&nbsp; if ( system("ping -c 1 $ip &gt; /dev/null") ) {<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my @inativo = $ip;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "Os INATIVOS s&atilde;o:\n", "$ip\n";<br>
<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; else {<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my @ativo = $ip;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "Os IP\`s ATIVOS na rede s&atilde;o:\n", "$ip\n";<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
}</font><br>
<br>
<br>
Minhas d&uacute;vidas s&atilde;o:<br>
<br>
1) Gostaria de imprimir os IP's localizados da seguinte forma:<br>
Os IP`s ATIVOS na rede s&atilde;o:<br>
192.168.1.10<br>
192.168.1.25<br>
192.168.1.41<br>
...<br>
<br>
Mas do jeito que est&aacute;, por causa do "foreach" o programa imprime na
tela:<br>
<br>
Os IP`s ATIVOS na rede s&atilde;o:<br>
192.168.1.10<br>
Os IP`s ATIVOS na rede s&atilde;o:<br>
192.168.1.25<br>
...<br>
<br>
Como posso fazer isso?<br>
<br>
Pra tentar imprimir como eu queria, tentei armazenar os resultados num
array "my @ativo = $ip;" e tir&aacute;-lo de dentro do "foreach" para tentar
evitar a repeti&ccedil;&atilde;o conforme mencionei acima. Mas se eu tentar "tirar"
este array de dentro do bloco do "else" o programa me retorna o erro "<b>Global
symbol "@ativo" requires explicit package name at...</b>"<br>
<br>
Como posso tipo, "exportar" este array para fora deste bloco ?<br>
<br>
2) No caso do teste do "IF", <u>se a condi&ccedil;&atilde;o &eacute; verdadeira</u>, ou
seja, se &eacute; poss&iacute;vel pingar um IP, ele n&atilde;o deveria ser retornado dentro
do primeiro bloco do "IF" ??...E na verdade o que acontece &eacute; que a
condi&ccedil;&atilde;o (que &eacute; veradadeira) me &eacute; retornada s&oacute; no bloco do "else".<br>
Deixa ver se explico melhor:<br>
<br>
<br>
foreach (1..254) {<br>
<br>
&nbsp;&nbsp;&nbsp; my $ip = "192.168.$rede.$_";<br>
<br>
&nbsp;&nbsp;&nbsp; if ( system("ping -c 1 $ip &gt; /dev/null") ) {<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my @inativo = $ip;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "Os INATIVOS s&atilde;o:\n", "$ip\n";&nbsp; ===&gt; N&Atilde;O ERA PRA SER
AQUI O RESULTADO DE QUANDO A CONDI&Ccedil;&Atilde;O &Eacute; VERDADEIRA? (consegui pingar um
IP da rede?)<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
===&gt; N&Atilde;O ERA NESTE BLOCO QUE OS <u>IP'S ATIVOS</u> ERAM PARA ESTAR?<br>
<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; else {<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my @ativo = $ip;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "Os IP\`s ATIVOS na rede s&atilde;o:\n", "$ip\n"; ===&gt; E NA
VERDADE, S&Oacute; ENCONTRO OS ATIVOS AQUI NESTE BLOCO<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
}<br>
<br>
N&atilde;o sei se soube me expressar bem!...espero que tenham entendido a
d&uacute;vida<br>
<br>
<br>
3) Pessoal, tem como escrever melhor este programa, para torn&aacute;-lo mais
r&aacute;pido?<br>
Por exemplo, ele vai tentar pingar do IP 1 at&eacute; o 254, e isto demora um
pouco!!<br>
<br>
O que vcs me sugerem para melhorar este programa?<br>
<br>
abra&ccedil;o,<br>
Fl&aacute;vio<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
</body>
</html>