IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Librairies] Telnet pour ping broadcast


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 140
    Points : 66
    Points
    66
    Par défaut [Librairies] Telnet pour ping broadcast
    Je souhaite effectuer un ping en broadcast sur des switchs à travers un script TELNET Perl ou PHP.
    Le but est simplement de remplir la table arp des équipements.
    Je n'ai donc pas besoin de récupérer les résultats mais seulement d'envoyer la commande, sans aucune verif. Afin que tous cela se déroule assez rapidement.


    Comment faut-il faire pour envoyer la commande sur l'équipement et interrompre le script ou passer à l'équipement suivant ?

    J'ai fait cela, mais c'est extremement long !!!
    Pour 400 équipements, + de 24 heures !!!!!!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    #!/usr/bin/perl
    #
    # Script de ping par telnet
    # 
    # 
    use warnings;
    require '/home/www/tools/cisco.pl';
    use Config::IniFiles;
    use Time::HiRes qw( usleep ualarm gettimeofday tv_interval );
     
    #my $cfg=new Config::IniFiles( -file => "/home/www/config/config.ini");
    #my $login=$cfg->val("login");
    my $login="*********";
    #my $passwd=$cfg->val("passwd");
    my $passwd="*********";
    my $enable='enable_password';
    my $LOGDIR='/home/www/log/ping';
    my $output="$LOGDIR/migCE2out.csv";
    $DEBUG=1;
    #$LIMITE=100;  # Nombre max de routeurs que l'on souhaite tester
    my $addrAdmin=$ARGV[0];
    my $mask=$ARGV[1];
    my $eqtype=$ARGV[2];
     
    if(not defined($addrAdmin)){
        print "STATUS=0\n";
        exit;
    }else{
        print "ipAdmin=$addrAdmin\n";
    }
     
    open(F,">>$output") || die "Cannot open input file $output:$!\n";
    #my $rtr=CiscoLogin2($login,$passwd,$addrAdmin,60);
    my $rtr=Net::Telnet::Cisco->new(Host=>$addrAdmin,Errmode=>'return',
                                    Timeout=>10,
                                    Input_log=>"$LOGDIR/$addrAdmin.log"
                                    );
    if($rtr){
        my $prompt='/(?m:^[\w.-]+\s?(?:\(config[^\)]*\))?\s?[\$#> ]\s?(?:\(enable\))?\s*$)/';
        $rtr->ignore_warnings;
        $rtr->errmode("return");
        if($rtr->login(Name=>$login,Password=>$passwd,Prompt=>$prompt)){
        }else{
            print "$addrAdmin;echec login;\n";
            print "STATUS=0\n";
            exit;
        }
    }else{
        print "$addrAdmin;echec telnet;\n";
        print "STATUS=0\n";
        exit;
    }
    my $status=0;
    if($rtr){
        $telnetStatus='OK';
     
      # ping pour equipement catalyst
        if($eqtype=~m/CAT(.*)/i){
     
            my @cmd=("ping -s $mask 56 2");
            push(@cmd,"exit");
     
            foreach(@cmd){
                print ">> $_\n";
                @output=CiscoCmd($rtr,$_);
            }
        }else{
     
        # ping pour equipement cisco
     
            my @cmd=("ping","ip","$mask","2","56","2","n","n");
     #my @cmd=("ping $mask");
            push(@cmd,"exit");
     
            foreach(@cmd){
                print ">> $_\n";
                @output=CiscoCmd($rtr,$_);
            }
        }
     
     
        $status=1;
    }else{
        debug("HS\n");
    }
    print F "$addrAdmin;$telnetStatus;\n";
    CiscoLogout($rtr);
    close F;
    print "STATUS=$status\n";
     
    sub debug{
        if($DEBUG==1){
            print @_;
        }
    }
    Merci

  2. #2
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Hello,

    à priori il suffit de :
    1) se connecter en telnet
    2) executer le ping en tache de fond
    3) se déconnecter

    Ca prend maximum 2 secondes...
    Google is watching you !

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    D'accord mais comment fais tu cela ????????

  4. #4
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    sous la plupart des UNIX il suffit d'ajouter un "&" en fin de ligne... et pour être sûr que la commande ne soit pas interrompue quand tu vas te deco, la lancer via "nohup".

    Le but étant d'exécuter un truc de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nohup ping xxxxxx > /dev/null &
    Google is watching you !

  5. #5
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Ok pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div style="text-align: left;">nohup ping xxxxxx > /dev/null &</div>
    Mais le ping doit être exécuter sur un switch et non un serveur.
    Donc je pense que cette solution n'est pas possible.
    Non?

  6. #6
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    bah il faut l'executer par Telnet... comme tu fais déjà... :S
    Google is watching you !

  7. #7
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Je me suis mal exprimé.
    Je dois me connecter en telnet sur le switch.
    Et ensuite je réalise le ping à partir du switch.
    Ma méthode fonctionne mais je cherchais seulement 1 moyen d'aller plus vite en attendant pas la réponse que me renvoie le switch par la session telnet.
    Je demandais alors si quelqu'un avait une idée ou si quelqu'un connaissais un script optimisé pour réduire les temps d'attente durant la session telnet.
    Merci

  8. #8
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Oui, et c'est ce je t'ai répondu...

    Si tu fais le ping en tache de fond tu peux te déconnecter de la session telnet immédiatement, sans avoir à attendre de résultat.
    Google is watching you !

  9. #9
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Mais le switch ne va pas comprendre :
    nohup ping xxxxxx > /dev/null &

  10. #10
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Bah c'est un Unix dessus non ? Je ne me suis jamais connecté dessus, mais la plupart des commandes de base devraient être dispos... le mieux serait d'essayer.
    Google is watching you !

  11. #11
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Et bien non, les commandes sur un switch (ou router) sont limitées.
    Pour les ciscos le systeme n'est pas un UNIX mais propriétaire (IOS).

  12. #12
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Et bien non, les commandes sur un switch (ou router) sont limitées.
    Pour les ciscos le systeme n'est pas un UNIX mais propriétaire (IOS).

  13. #13
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Et bien non, les commandes sur un switch (ou router) sont limitées.
    Pour les ciscos le systeme n'est pas un UNIX mais propriétaire (IOS).

  14. #14
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    J'étais persuadé qu'IOS était un "UNIX-like", évidement "light".
    Mais le principe reste le même : si tu ne testes pas, tu ne sauras pas si cela fonctionne ou non...
    Google is watching you !

  15. #15
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    J'ai testé et cela ne fonctionne pas. IOS est un UNIX très très light qui a son propre jeux de commandes spécifiques.

Discussions similaires

  1. Réponses: 15
    Dernier message: 04/01/2007, 11h15
  2. Ajouter des librairies externes pour la compilation en C++
    Par Roming22 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/07/2005, 10h15
  3. Librairies gratuites pour générer du PDF
    Par Noxexplorer dans le forum ASP
    Réponses: 2
    Dernier message: 02/05/2005, 20h18
  4. librairie c++ pour xml.???
    Par elekis dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 08/11/2004, 20h46
  5. Librairies référence pour produits (UPC / ISBN etc..)
    Par zatomik dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 15/09/2004, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo