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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 140
    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 émérite
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    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...

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

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    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 &

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 140
    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 émérite
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    bah il faut l'executer par Telnet... comme tu fais déjà... :S

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