<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2800.1400" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Vivan,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp; tenho um script que uso bastante 
para telnet em roteadores cisco. Acho que pode te ajudar. </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp; Não sou um expert em Perl, e sou 
novo na lista... Gostaria de receber comentários sobre as funções. </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp; Utilizei o expect para verificar 
as respostas, mas estou implementando coisa melhor.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>#!/usr/bin/perl<BR>#<BR># Versao : 1.0 
</FONT></DIV>
<DIV><FONT face="Courier New" size=2># Arquivo: telnet.pl<BR>#<BR># O formato 
para uso deste script e:<BR># telnet.pl &lt;Listagem_dos_hosts&gt; 
&lt;Arquivo_de_Comandos&gt; [Arquivo_Log]<BR># &lt;&gt; - Obrigatorio<BR># [] - 
Opcional<BR>#</FONT></DIV>
<DIV><FONT face="Courier New" size=2># o arquivo de host deve ser no seguinte 
formato:</FONT></DIV>
<DIV><FONT face="Courier New" size=2># IP&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 
HOSTNAME</FONT>&nbsp;<FONT face="Courier New" size=2>&nbsp;&nbsp;&nbsp; 
|&nbsp;&nbsp;&nbsp; plataforma(7500, 2500 etc)</FONT></DIV>
<DIV><FONT face="Courier New" size=2>#</FONT></DIV>
<DIV><FONT face="Courier New" size=2># os comandos devem estar um em cada linha, 
incluindo config terminal, end e tudo mais</FONT></DIV>
<DIV><FONT face="Courier New" size=2>#</FONT></DIV>
<DIV><FONT face="Courier New" size=2># </FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>if ( $ARGV[0] eq "" ) {<BR>print 
&lt;&lt;ECHO;<BR>O formato para uso deste script e:<BR>telnet.pl 
&lt;Listagem_dos_hosts&gt; &lt;Arquivo_de_Comandos&gt; [opcoes]<BR>&lt;&gt; - 
Obrigatorio<BR>[] - Opcional</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>As opcoes disponiveis sao:<BR>-log:&lt;nome 
do arquivo&gt;&nbsp; -&gt; gera um unico arquivo de log, conforme especificado 
no nome do arquivo.<BR>-logrouter:&lt;diretorio&gt; -&gt; gera um arquivo de log 
para cada roteador, no formato 
&lt;plataforma&gt;_hostname.log<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; 
no diretorio especificado. Se nao for especificado nenhum, sera gerado 
no<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; 
diretorio corrente.</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV>
<DIV><FONT face="Courier New" size=2>&nbsp;o arquivo de host deve ser no 
seguinte formato:</FONT></DIV>
<DIV><FONT face="Courier New" size=2>&nbsp;IP&nbsp;&nbsp;&nbsp; 
|&nbsp;&nbsp;&nbsp; HOSTNAME</FONT>&nbsp;<FONT face="Courier New" 
size=2>&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; plataforma(7500, 2500 
etc)</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>&nbsp;os comandos devem estar um em cada 
linha, incluindo config terminal, end e tudo mais</FONT></DIV></DIV><FONT 
size=2>
<DIV><FONT face=Arial></FONT><FONT face=Arial></FONT><FONT 
face=Arial></FONT><BR><FONT 
face="Courier New">ECHO<BR>exit(0);<BR>}</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New">use Net::Ping;<BR>use Term::ReadKey;</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"># Lendo e processando os argumentos de 
execucao.<BR>#<BR>$HOSTS=$ARGV[0];<BR>$CMDFILE=$ARGV[1];<BR>for 
($m=2;$m&lt;10;$m++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$n=$m-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; last if ($ARGV[$m] eq 
"");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$OPCAO=$OPCAO.$ARGV[$m];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>$n--;</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"># Somente duas opcoes podem ser executadas 
simultaneamente.<BR>#<BR>if ($n &gt; 2) 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &lt;&lt;ECHO;<BR>Erro! 
Muitas opcoes foram especificadas. Especifique no maximo duas 
opcoes.</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><BR><FONT 
face="Courier New">ECHO<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print 
"$n\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
exit(1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"># Trantando os argumentos.<BR>#<BR>if ($OPCAO =~ 
"-log:") {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$LOG="1";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ($cum,$DIR) = split 
(/\:/,$OPCAO,2);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New">if ($OPCAO =~ "-logrouter") 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$LOGROUTER="1";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ($cum,$LOGDIR) = 
split (/\:/,$OPCAO,2);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New">print "$LOG - $DIR\n";<BR>print "$LOGROUTER - 
$LOGDIR\n";</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New">#exit(0);</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"># A primeira operacao a ser realizada e solicitar 
o USERNAME e<BR># o PASSWORD para acessar os equipamentos da rede.</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New">print "Enter your username: ";<BR>ReadMode 
'normal';<BR>$username = ReadLine(0);<BR>chomp $username;<BR>print "Enter your 
password: ";<BR>ReadMode 'noecho';<BR>$password = ReadLine 0;<BR>chomp 
$password;<BR>print "\nEnable secret: ";<BR>$enable = ReadLine 0;<BR>chomp 
$enable;<BR>ReadMode 'normal';</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><BR><FONT face="Courier New"># Lendo o arquivo de hosts especificado pela 
variavel $HOSTS.<BR>$m=0;<BR>open (F,"$HOSTS") || die "Cade o arquivo $HOSTS 
?";<BR>while (&lt;F&gt;) {<BR>&nbsp;&nbsp;&nbsp; 
s/\s+$//g;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #remove 
"branco" no final da linha por nada<BR>&nbsp;&nbsp;&nbsp; s/\s/ 
/g;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #substitui 
"branco" por espaco<BR>&nbsp;&nbsp;&nbsp; 
s/\n//;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
#substitui &lt;ENTER&gt; por nada<BR>&nbsp;&nbsp;&nbsp; 
s/\s//g;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
#remove espacos entre os caracteres<BR>&nbsp;&nbsp;&nbsp; next if 
/^\s*\!/;&nbsp;&nbsp; #ignora linhas de comentarios<BR>&nbsp;&nbsp;&nbsp; next 
if /^\s*$/;&nbsp;&nbsp;&nbsp; #ignora linhas vazias<BR>&nbsp;&nbsp;&nbsp; 
$TARGET[$m] = $_;<BR>&nbsp;&nbsp; $m++;<BR>}<BR>close (F);<BR>print "O arquivo 
de alvos \"$HOSTS\" contem $m host(s).\n";</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><BR><FONT face="Courier New"># Lendo o arquivo de comandos especificado 
pela variavel $CMDFILE.<BR>$n=0;<BR>open (F,"$CMDFILE") || die "Cade o arquivo 
$CMDFILE ?";<BR>while (&lt;F&gt;) {<BR>&nbsp;&nbsp;&nbsp; 
s/\s+$//g;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #remove 
"branco" no final da linha por nada<BR>&nbsp;&nbsp;&nbsp; s/\s/ 
/g;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #substitui 
"branco" por espaco<BR>&nbsp;&nbsp;&nbsp; 
s/\n//;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
#substitui &lt;ENTER&gt; por nada<BR>&nbsp;&nbsp;&nbsp; next if 
/^\s*\!/;&nbsp;&nbsp; #ignora linhas de comentarios<BR>&nbsp;&nbsp;&nbsp; next 
if /^\s*$/;&nbsp;&nbsp;&nbsp; #ignora linhas vazias<BR>&nbsp;&nbsp;&nbsp; 
$COMANDOS[$n] = $_;<BR>&nbsp;&nbsp;&nbsp; $n++;<BR>}<BR>close (F);<BR>print "O 
arquivo de comandos \"$CMDFILE\" contem $n linhas de 
instrucoes(s).\n\n";</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"># Inicializando variaveis que necessitam de um 
valor 
inicial<BR>$TOTALCOMMMANDS=$m*$n;<BR>$TOTALERROS=0;<BR>$TOTALTIMEOUTS=0;</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"># Gerando o cabecalho do log, se 
especificado.<BR>if ($LOG) {<BR>open (LOG,"&gt;&gt;$DIR");</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"># Obtem data e hora do inicio da 
execucao.<BR>($mon,$mday,$year,$hour,$min) = 
(localtime())[4,3,5,2,1];<BR>$year=$year+1900;<BR>$mon++;</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New">print LOG 
"\n\n################################################################################\n\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
"O arquivo de alvos \"$HOSTS\" contem $m 
host(s).\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ."O arquivo de 
comandos \"$CMDFILE\" contem $n linhas de 
instrucoes(s).\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
"Iniciando execucao em $mday/$mon/$year - $hour:$min\n\n";<BR>close 
(LOG);<BR>}</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"># Executando o TELNET aos hosts especificados no 
arquivo de alvos e executando os comandos<BR># contidos no arquivo de 
comandos.<BR>foreach (@TARGET) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&amp;EXECUTA($_);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"># Gerando o rodape do log, se especificado.<BR>if 
($LOG) {<BR>open (LOG,"&gt;&gt;$DIR");<BR>print LOG 
"\n\n################################################################################\n\n"<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; 
SUMARIO DA EXECUCAO\n\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
"Numero total de hosts: 
$m\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ."Nomero de hosts que 
nao responderam: 
$TOTALTIMEOUTS\n\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Numero 
de comandos executados: 
$TOTALCOMMMANDS\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Numero 
de erros durante execucao: 
$TOTALERROS\n\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Listagem 
de hosts que nao 
responderam:\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
"$HOSTSTIMEOUT\n\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
"Listagem de erros ocorridos em cada host\n";<BR>for $HOST (sort keys 
(%LOGERROS)) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print LOG "- 
Ocorreram&nbsp; $QTDERROS{$HOST} em 
$HOST:\n\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
"$LOGERROS{$HOST}\n\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>print LOG 
"\n\n################################################################################\n\n";<BR>close 
(LOG);<BR>}</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"># Sub-rotina de execucao condicional do TELNET a 
um host. Checa se o host esta respondendo a<BR># ICMP ECHO (ping).<BR>sub 
EXECUTA {<BR>($IP,$HOSTNAME,$PLATAFORM) = split (/\|/,$_[0],3);</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"># Obtem data e hora da execucao para cada 
host.<BR>($mon,$mday,$year,$hour,$min) = 
(localtime())[4,3,5,2,1];<BR>$year=$year+1900;<BR>$mon++;</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"># Gera o log da operacao, se especificado.<BR>if 
($LOG) {<BR>open (LOG,"&gt;&gt;$DIR");<BR>print LOG "\n\nLote de comandos: 
$CMDFILE\nHost: $HOSTNAME ($IP)\nData: $mday/$mon/$year - 
$hour:$min\n\n";<BR>close (LOG);<BR>}</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"># Primeiro testa se a porta 23 esta aberta no 
dispositivo, enviando um pacote de 32 Bytes com 2 segundos<BR># de 
timeout.<BR>$p = Net::Ping-&gt;new("tcp",10,32);<BR>$p-&gt;{port_num} = 
getservbyname("telnet", "tcp");<BR>if ( $p-&gt;ping($IP, 2) ) 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "Executando os comandos em 
$HOSTNAME ($IP)\n";;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&amp;TELNET;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "O host $IP nao esta 
respondendo.\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$TOTALTIMEOUTS++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$HOSTSTIMEOUT=$HOSTSTIMEOUT."- $HOSTNAME ($IP) : $mday/$mon/$year - 
$hour:$min\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Gera o log da 
operacao, se especificado.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if 
($LOG) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; open 
(LOG,"&gt;&gt;$DIR");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print LOG "O 
Host nao responde.\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close 
(LOG);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>$p-&gt;close();<BR>}</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><BR><FONT face="Courier New"># Sub-rotina para execucao do TELNET a um 
host, utilizando EXPECT.<BR>sub TELNET {<BR>open 
(F,"&gt;/tmp/telnet-router");<BR>print F "#!/usr/bin/expect 
-f\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ."spawn telnet 
$IP\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ."expect \"Username: 
\"\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ."send 
\"$username\\r\"\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ."expect \"Password: 
\"\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ."send 
\"$password\\r\"\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ."expect 
\"*&gt;\"\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ."send 
\"enable\\r\"\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ."expect \"Password: 
\"\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ."send 
\"$enable\\r\"\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ."expect 
\"*#\"\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ."send \"term len 
0\\r\"\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ."expect \"*#\"\n";<BR>foreach 
(@COMANDOS) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( $_ eq "&lt;CR&gt;" ) 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
print F "send \"</FONT><A href='file://\\r\\r\"\n'><FONT 
face="Courier New">\\r\\r\"\n</FONT></A><FONT 
face="Courier New">"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
"expect 
\"$HOSTNAME#\"\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
print F "send 
\"$_\\r\"\n"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
"expect 
\"$HOSTNAME#\"\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>}<BR>print F "send \"exit\\r\"\n";<BR>close (F);<BR>system("chmod 777 
/tmp/telnet-router");<BR>$cum=`/tmp/telnet-router &gt; 
/tmp/lastlog`;</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"># Alimentando o log unico.<BR>#<BR>if ($LOG) 
{<BR>&nbsp;&nbsp; system ("cat /tmp/lastlog &gt;&gt; $DIR");<BR>&nbsp;&nbsp; 
}</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"># Analisando os logs dos comandos executados no 
host em execucao.<BR>open (LOGTEMP,"/tmp/lastlog");<BR>$o=0;<BR>while 
(&lt;LOGTEMP&gt;) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $DADOS[$o] = 
$_;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( ($_ =~ "% Invalid input 
detected at") ) 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$LOGERROS{$HOSTNAME} = 
$LOGERROS{$HOSTNAME}.$DADOS[$o-2];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$QTDERROS{$HOSTNAME}++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$TOTALERROS++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$TOTALLINHAS++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$o++;<BR>}<BR>close (F);</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New"># Gerando o LOG individual de cada 
roteador.<BR>#<BR>if ($LOGROUTER) 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$FILE="";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $FILE=$LOGDIR."/" if 
!($LOGDIR eq "");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$FILE=$FILE.$PLATAFORM."_".$HOSTNAME.".log";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
system("cp /tmp/lastlog $FILE");<BR>}</FONT></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New">unlink ("/tmp/telnet-router");<BR>unlink 
("/tmp/lastlog");<BR>}</FONT></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV></BODY></HTML>