Creo que estás usando el módulo Net::Telnet, con la función waitfor() para obtener el resultado de 'sh run'. Luego lo metes en el
array @salida, ya que te interesa ver qué es lo que ha devuelto...
Luego el problema está en cómo grabar la información a un fichero externo...
Prueba esto:
Using perl Syntax Highlighting
$session->waitfor(String => '#');
$session->print ('sh run');
@salida=$session->waitfor(String => "#");
open(FILEDATO, ">>Datos.txt") || die ("No se puede escribir en el fichero.");
print FILEDATO $salida[0];
close FILEDATO;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
A ver... depende de cómo quieras que salga el resultado en el fichero. Antes tenías puesto un split(), para que lo dividiera por líneas. Yo supongo que querrás que en el fichero de salida también esté dividido por líneas. Luego entonces no es necesario que hagas el split() en el caso de que la salida de 'sh run' ya lleve incorporada los caracteres de fin de línea. Otra cosa es que quieras poner tus propios caracteres.
En cuanto a cómo guardar el resultado en un fichero distinto, consiste en crear el nombre del fichero antes de pasárselo al open(). Algo así como:
Using perl Syntax Highlighting
my @hosts = ( "mi.host1.com", "host2.es", "212.127.98.33", );
# Bucle por todo los hosts a analizar
foreach my $host ( @hosts ) {
print "Analizando $host\n";
# Aqui ponemos el análisis, o nos conectamos a el y le sacamos
# la información.
# ...
# Grabación del resultado
# Creamos el nombre del fichero utilizando el nombre del $host
my $fichero = "Datos_$host.txt";
# Salida
open (FILEDATO, ">$fichero") or die "No puedo escribir en $fichero: $!\n";
print FILEDATO $salida[0];
close FILEDATO
}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
A propósito... hay unos cuántos módulos para hablar con equipos
Cisco... como por ejemplo el
Net::Telnet::Cisco.
Es posible que el
Net::Telnet::Cisco::IOS sea el que necesites... tiene un motón de
métodos para sacar la información...