Posez votre question Signaler

Perl,mysql,telnet..?

potiok 477Messages postés 13 février 2008Date d'inscription 19 août 2010Dernière intervention - Dernière réponse le 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
Lire la suite 

Perl,mysql,telnet »

3 réponses
Réponse
+0
moins plus
personne n'a meme une vague idée? :(
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « perl,mysql,telnet..? » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook