A la hora de trabajar con redes muchas tareas se vuelven repetitivas dia a dia. Entra a un switch cambiar una vlan, bajar una configuracion, sacar info de un puerto, etc. Es mas muchas veces estas tareas no se aplican a un solo equipo sino a N.
Como siempre la automatizaciond e estas tareas, siempre y cuando las mismas esten dentro de patrones controlados y conocidos por nosotros, se puede lograr mediante un script.
En particular con perl facilmente podemos establecer conexiones contra nodos mediante el protocolo telnet, para esto utilizamos el modulo "Net:Telnet".
Este modulo nos abre un camino muy amplio, y nos da herramientas sencillas y concisas, simplemente es muy facil utilizarlo!
Por ejemplo:
use Net::Telnet();
$username = "pepe"; # user del equipo.
$password = "pepito"; # passw. del equipo.
$ip = "10.1.1.2"; # ip del equipo.
$localdir = "c:/log_del_script\.txt"; # archivo de logs.
$session = Net::Telnet->new(timeout => 20, Errmode => 'return');
$session->open($ip); #Abro una conexion Telnet contra el dispostivo de ip $ip
$session->login($username,$password); #envio la info de login ($username / $password)
# Nota: Aqui ya deberia estar dentro del dispositivo.
$session->input_log($localdir); # Defino donde se van a alojar
$session->output_log($localdir); # los logs del script.
#Aclaracion: Supongamos un switch en el cual entramos directamente en modo enable.
$session->cmd('terminal length 0');
$session->cmd('show running');
$session->cmd('exit');
$session->close;
Con este sencillo codigo podemos entrar a un switch (cisco por ejemplo) y guardar su configuracion en el log definido por nosotros.
Este script es muy sencillo igualemnte se puede mejorar mucho, por ejemplo con la utilizacion de argumentos, asi se evita modificar el fuente.
Pero.. esto solo sirve para un equipo. SI!
No obstante es muy facil modificarlo.
#Podemos sacar los datos de un CSV en el cual se encuentre el nombre del equipo ","
# la ip del mismo.
open(DATOS, "<", "C:/IP.csv"); #Abro el archivo foreach $lines (
($name, $ip) = split(/,/,$lines); # separo los datos delimitados por el separador ","
$localdir = "C:/$name-$ip\.txt"; #Defino el nombre del log.
#... Desde aqui en adelante se utilizaria el mismo codigo que antes, siempre dentro
# dentro del foreach para que lo realize con cada IP.
}
Bueno espero que les sirva, como ven es muy util y muy sencillo. En particular para conexiones contra switches cisco se puede optar por el modulo Net:Telnet::Cisco que tiene muchas mas opciones de configuracion especificas de switches.
Mas info aqui: http://search.cpan.org/~jrogers/Net-Telnet-3.03/lib/Net/Telnet.pm#COPYRIGHT
Saludos,
Tuesday, May 27
Script & Telnet con Perl
Etiquetas:
Networking,
Programación
Subscribe to:
Post Comments (Atom)
0 comentarios:
Post a Comment