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

Programmation et administration système Perl Discussion :

problème script Perl


Sujet :

Programmation et administration système Perl

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut problème script Perl
    Bonjour, c'est le premier script en Perl que je fait et j'ai un peu de mal avec ,
    je dois faire un script qui se connecte sur les equipement en telenet pour prendre le fichier de log.
    voici le script Pas fini mais j'ai deja des erreur

    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
    #!/usr/bin/perl -w
    use strict;
    use warnings;
    my $i;
    my $choix;
    my $nom;
    my $ip;
    my $telnet;
    my $username="admin";
    my $passwd="motsdepasse";
    unshift(@INC,"C:/Perl/site/lib");
    use Net::Telnet;
    use Net::SNMP;
    my $HOST=('$ip');
    my $HOSTS=('$nom');
    my $snmp_port = 161;
    my $oid = « 1.3.6.1.4.1.318.1.1.12.1.5, 1.3.6.1.4.1.318.1.1.12.1.1 »;
    my $host = « $ip »;
    my $community = « private » 
    my ($session, $error) = Net::SNMP->session(-hostname = $host,-timeout = 3,-retries = 1,-community = $community,-port = $snmp_port);
    do 
    {
    print "vous voulez recherche par nom ou Par adresse Ip ?\n";
    print "nom=1 et Adresse Ip=2 Quitter=3\n";
    print"choix:";
    $choix=<STDIN>;
     
    if( $choix == 1 )
    {
    	print"vous avez fait le choix 1 \n";
    	print"Saisir un nom : ";
    	$nom=<STDIN>;
    	$telnet->open($HOSTS);
    	$telnet->login($username, $passwd);
    	@ $oid 
     
     
    }
    elsif( $choix == 2 )
    { 
    	print"vous avez fait le choix 2\n";
    	print"saisir une adresse IP :";
    	$ip=<STDIN>;
    	$telnet->open($HOST);
    	$telnet->login($username, $passwd);
    	@ $oid
    	}
    else
    {
    	print"vous avez fait aucun choix \n";
     
    }
    } until( $choix==3);
    voila l'erreur


    desole j'ai flooter un peu le dossier personnel.

    donc je dois faire un petit script qui va sur l'adresse de l'équiment et remonter par smnp les info .

    donc j'ai un peu de mal c'est pour ca que je demande votre aide .

    merci Scrathi

  2. #2
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    apres, avoir relu j'ai vu mon erreur il arrivais pas trouver le fichier en question ,

    mais maitenant j'ai une autre erreur
    unrecognized charater \xAB ligne 17 ..

  3. #3
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Bonjour,

    Ce sont tes guillemets qui délimitent une chaîne de caractère qui posent problème. Ils devraient être une double quote -> " (en dessous du chiffre 3)

    Ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my $oid = « 1.3.6.1.4.1.318.1.1.12.1.5, 1.3.6.1.4.1.318.1.1.12.1.1 »;
    my $host = « $ip »;
    my $community = « private »
    devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my $oid = "1.3.6.1.4.1.318.1.1.12.1.5, 1.3.6.1.4.1.318.1.1.12.1.1";
    my $host = $ip;
    my $community = "private"
    Remarques :
    - pour ta variable $host les doubles quotes ne sont pas nécessaires puisque que $ip est une variable.
    - ta variable $oid est une chaîne de caractère . Si tu veux un tableau tu devras modifier ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my @oid = ("1.3.6.1.4.1.318.1.1.12.1.5" , "1.3.6.1.4.1.318.1.1.12.1.1");

  4. #4
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Merci bien, une faute d'inattention ,

    mais maitenant il me fait un autre erreur

    global symbol"$sessions" requires explicit package name ligne 20
    global symbol"$error" requires explicit package name ligne 20

    Donc je leur attribué une variable
    my $session;
    my $error;

    et donc il me fait ca actuellement syntax error at line near "my"

    donc je comprend pas du tout ...

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    L'erreur se situe sans doute à la ligne précédente le my en question. Par exemple, il manque peut-être un point-virgule à la fin de l'instruction. Peux-tu donner le contexte du code à cet endroit (avec le numéro de ligne) ?
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  6. #6
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    merci pour le temps accordé
    c'est ligne 22
    serait le petit tiret ?
    d'apres un site il le mettais donc je trouvais bizarre mais bon comme je connais pas j'allais pas remetre en doute .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my ($session, $error) = Net::SNMP-&gt;session(-hostname = $host,-timeout = 3,-retries = 1,-community = $community,-port = $snmp_port);
    merci

  7. #7
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Non, cela vient du fait que tu as utilisé l'opérateur = au lieu de l'opérateur virgule faible (=>) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my ($session, $error) = Net::SNMP->session(-hostname => $host,-timeout => 3,-retries => 1,-community => $community,-port => $snmp_port);
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  8. #8
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    merci oui ca marche beaucoup mieux mais cela voulez dire que le site sur lequel j'ai regarder etait en faute ?

    mais bon jamais 2 sans 3 encore une faute , mais au moins j'apprend de mes erreur pour plus les refaire

    can't locate object method "sessions via package "Net::SNMP" ligne 20

    don j'ai cru voir sur des forum qui faut passer par Mysql donc est ce normal ?

  9. #9
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Non, tu as sans doute oublié de faire un
    en début de script.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  10. #10
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    non , il est en ligne 13 je te remet le programme modifier grace a tes conseil

    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
    #!/usr/bin/perl -w
    use strict;
    use warnings;
    my $i;
    my $choix;
    my $nom;
    my $ip;
    my $telnet;
    my $username="admin";
    my $passwd="motsdepasse";
    unshift(@INC,"C:/Perl/site/lib");
    use Net::Telnet;
    use Net::SNMP;
    my $HOST=('$ip');
    my $HOSTS=('$nom');
    my $snmp_port = 161;
    my $oid = " 1.3.6.1.4.1.318.1.1.12.1.5, 1.3.6.1.4.1.318.1.1.12.1.1 ";
    my $host = $ip ;
    my $community = " private ";
    my ($session, $error) = Net::SNMP->session(-hostname => $host,-timeout => 3,-retries => 1,-community => $community,-port => $snmp_port);
    do 
    {
    print "vous voulez recherche par nom ou Par adresse Ip ?\n";
    print "nom=1 et Adresse Ip=2 Quitter=3\n";
    print"choix:";
    $choix=<STDIN>;
     
    if( $choix == 1 )
    {
    	print"vous avez fait le choix 1 \n";
    	print"Saisir un nom : ";
    	$nom=<STDIN>;
    	$telnet->open($HOSTS);
    	$telnet->login($username, $passwd);
    }
    elsif( $choix == 2 )
    { 
    	print"vous avez fait le choix 2\n";
    	print"saisir une adresse IP :";
    	$ip=<STDIN>;
    	$telnet->open($HOST);
    	$telnet->login($username, $passwd);
    }
    else
    {
    	print"vous avez fait aucun choix \n";
     
    }
    } until( $choix==3);
    c'est un peu cela que je ne comprend pas , pourtant il y a tout .. ou alors ca doit etre le SNMP.pm qui doit pas etre bon il m'avais fait une erreur il y a deux jour j'ai du le mettre mais ca doit etre ca non ?

  11. #11
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unshift(@INC,"C:/Perl/site/lib");
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    use lib "C:/Perl/site/lib";
    Malgré le fait qu'il soit placé avant, le unshift est exécuté après les use, tes librairies ne sont pas cherchées au bon endroit.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  12. #12
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unshift(@INC,"C:/Perl/site/lib");
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    use lib "C:/Perl/site/lib";
    Malgré le fait qu'il soit placé avant, le unshift est exécuté après les use, tes librairies ne sont pas cherchées au bon endroit.
    ouais j'ai fait comme tu ma dit mais j'ai toujours le même problème , cela na rien changer ... j'ai bien verifier dans les librairie si il l'avais quand meme il a bien un fichier nommer SNMP.pm , mais la je suis un peu bloqué

  13. #13
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Ton code ne génère pas d'erreur avec ma version de perl 5.10, et je ne vois pas d'où peut venir l'erreur, à part un mauvais lien vers le module.
    Tu as bien installé le module Net::SNMP avec la commande cpan (ou suivi la procédure d'installation du tutoriel pour Windows : http://djibril.developpez.com/tutori...n-modules/#LII) ?
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  14. #14
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    bonjour , oui j'ai télécharger la dernier version de perl jetait en 5.8
    j'ai le perl 5.10 maitenant ca marche ^^ ouais ca devrai etre une mauvaise manip lors de l'install ou autre


    je dois quand même te remercier de m'aider .

    mais bon maitenant je vais essayer de me mettre au tableau , mettre le resultat de la Mib dans un tableau au autre je pensais le faire en

    @

  15. #15
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    mais quand je le lance et fait un choix

    can't call method open on an undefined value line 41,<STDIN>line2.

    sauf que j'ai bien attribue une variable et la ligne deux c'est use strict alors pourquoi il me parle de <stdin> mauvaise syntax ?

  16. #16
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Tes messages sont confus... difficile, sans voir le source, de quoi tu parles.
    Toujours est-il que le message d'erreur t'indique juste qu'il y a une erreur en ligne 41 de ton script. Pour l'indication dans le fichier ouvert, comme aucun fichier ne semble ouvert, il t'indique juste STDIN, mais dans ton cas, ça n'apporte rien de plus, tu peux l'ignorer. L'important est de corriger la ligne 41.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

Discussions similaires

  1. problème script perl lancé par php sur un serveur
    Par Landraille dans le forum Web
    Réponses: 1
    Dernier message: 12/03/2013, 14h37
  2. Problème script Perl Gtk2 -> .exe standalone
    Par phoenix420 dans le forum Interfaces Graphiques
    Réponses: 50
    Dernier message: 04/04/2012, 17h14
  3. Problème script perl avec STDIN
    Par deimosfr dans le forum Langage
    Réponses: 2
    Dernier message: 23/07/2009, 10h22
  4. Problème Script Perl : Proxy Authentication Required
    Par Flipmode dans le forum Langage
    Réponses: 5
    Dernier message: 09/07/2009, 17h23
  5. Problème execution script perl
    Par 00sebbe dans le forum Apache
    Réponses: 1
    Dernier message: 29/08/2005, 14h43

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