Perl,mysql,telnet..?

Fermé
potiok Messages postés 475 Date d'inscription mercredi 13 février 2008 Statut Membre Dernière intervention 19 août 2010 - 26 juin 2009 à 15:45
potiok Messages postés 475 Date d'inscription mercredi 13 février 2008 Statut Membre Dernière intervention 19 août 2010 - 9 juil. 2009 à 13:47
Bonjour,
j'ai fait un script en Perl pour récupérer mes config switch et routeurs, il fonctionne sur un switch et je voudrais l'étendre à tous. J'ai fait une db avec mysql contenant les adresses ip, les noms, mots de passe... et là je bloque: comment une fois connecté au telnet, je peux consulter ma db?
J'ai essayé pas aml de choses sans résultat, si quelqu'un avait une idée, ça serait tip top :)
mici

3 réponses

potiok Messages postés 475 Date d'inscription mercredi 13 février 2008 Statut Membre Dernière intervention 19 août 2010 63
2 juil. 2009 à 20:26
personne n'a meme une vague idée? :(
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
2 juil. 2009 à 22:34
Salut,

Voici un exemple en local

1. La base mysql
lami20j@debian:~/trash/ccm_perl$ mysql -u root -p'azertyuiop' Personne
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 46
Server version: 5.0.51a-24+lenny1 (Debian)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show tables;
+--------------------+
| Tables_in_Personne |
+--------------------+
| Utilisateur        |
+--------------------+
1 row in set (0.00 sec)

mysql> desc Utilisateur;
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| nom    | char(50) | YES  |     | NULL    |       |
| prenom | char(50) | YES  |     | NULL    |       |
| age    | int(11)  | YES  |     | NULL    |       |
+--------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> select * from Utilisateur;
+--------+--------+------+
| nom    | prenom | age  |
+--------+--------+------+
| azerty | aaa    |   10 |
| qwerty | bbb    |   20 |
+--------+--------+------+
2 rows in set (0.00 sec)

mysql> exit
Bye
2. Le script + résultat
lami20j@debian:~/trash/ccm_perl$ cat dbi_view.pl
#! /usr/bin/perl

use DBI;
use strict;use warnings;

my $mysql_sock='/var/run/mysqld/mysqld.sock';
my $base = 'Personne';
my $host = 'localhost';
my $user = 'root';
my $pass = 'azertyuiop';

# connexion base de données
my $db_=DBI->connect("DBI:mysql:database=$base;host=$host;mysql_socket=$mysql_sock",$user,$pass);

# lire la table (préparation de la requête SELECT)
my $query=$db_->prepare("SELECT nom, prenom, age FROM Utilisateur");

# exécution de la requête
$query->execute();

# affiche les résultats
while (my ($nom, $prenom, $age)=$query->fetchrow_array){
        print "$nom\t$prenom\t$age\n";
}
__END__
lami20j@debian:~/trash/ccm_perl$ perl dbi_view.pl
azerty  aaa     10
qwerty  bbb     20
0
potiok Messages postés 475 Date d'inscription mercredi 13 février 2008 Statut Membre Dernière intervention 19 août 2010 63
9 juil. 2009 à 13:47
salut,
merci d'avoir répondu :)
en fait sur ton script, on a la connexion avec mysql, ça je gère lol
voilà mon script:


#!/usr/bin/perl -w

use Net::Telnet;

my $router = "xx.xx.xx.xx";
my $user = "moi";
my $pass = "mon_pass";
my $enable = "mon_enable_pass";
my $tftp_server = "xx.xx.xx.xx";
my $t = new Net::Telnet(Timeout => 10);

$t->open( $router );

$t->print( "$pass" );
sleep 2;
$t->print( "enable" );
$t->waitfor( '/Password:/' );
$t->print( "$enable" );
sleep 2;
$t->print( "copy startup-config tftp" );
sleep 2;
$t->print( "$tftp_server" );
sleep 2;
$t->print( "save.txt" );

et ce que je souhaiterais c'est que toutes mes variables user,pass... il aille les chercher directement dans ma db mysql

Après, peut-être qu'il y a un moyen plus simple..mais avec plus de 200 routeurs et switch, je ne me vois pas taper un script pour chaque conf :s

j'ai vu aussi que Perl avait un module spécial pour les cisco, mais évidemment je n'ai pas que des cisco, ça serait trop simple lol
0