Perl,mysql,telnet..?

potiok Messages postés 481 Statut Membre -  
potiok Messages postés 481 Statut Membre -
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

--
ici, c'est la cour des miracles lol
Configuration: Windows XP Internet Explorer 6.0

3 réponses

  1. potiok Messages postés 481 Statut Membre 63
     
    personne n'a meme une vague idée? :(
    0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  3. potiok Messages postés 481 Statut Membre 63
     
    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