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

Langage Perl Discussion :

ligne de commande avec argument


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Par défaut ligne de commande avec argument
    Bonjour,

    Je reviens vous voir parce que j'ai un problème pour un script que je dos réaliser.
    Ce script la doit grâce a l'argument que je vais lui passer en ligne de commande me sortir le numéro du port, et le nom du switch sur le quel l'@ IP ou l'@ mac du serveur est connecter. l'argument passé sur la ligne de commande sera soit une adresse IP soit une adresse MAC!

    donc la ligne de commande devrait être comme ça:
    soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./script -mac X:X:X:X:X:X
    Mais déjà la première question que je me pose, c'est comment faire pour le "-ip" ou "-mac" parce que l'argument qui doit être pris en compte c'est après!!

    donc si je comprend bien il doit y avoir une option que je peux utiliser! on m'a parler de getopt, après quelques recherche sur mon ami google.. j'ai pas compris sa fonction et comment l'utiliser dans un script perl.


    J'espère vous pourrez m'éclairer!!!

    Merci

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Le module Perl qui permet de faire cela proprement est le module Getopt::Long

    Pour te faciliter la vie, voici un exemple :
    Je souhaite appeler mon script de cette façon
    ./script -mac X:X:X:X:X:X -ip X.X.X.X
    Script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/perl
    use strict;
    use Carp;
    use warnings;
    use Getopt::Long;
     
    my ($AdressMac, $IP) = ();
    GetOptions(
      'mac=s'         => \$AdressMac,
      'ip=s'       => \$IP,
    );
     
    print "Adresse IP : $IP\n" if (defined $IP);
    print "Adresse Mac: $AdressMac\n" if (defined $AdressMac);
    A toi de rajouter des options, tester les options voulu ou non, etc.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Par défaut
    SAlut,
    Merci pour ta solution!

    Mais je me demandais, je viens de tester ton code, il marche OK mais moi je lance soit avec une IP soit avec une MAC!!! toi tu m'es les 2! mais quand je lance soit l'un soit l'autre avec ton script sa marche quand meme, donc sa ne pause pas de probleme?

    Autre question: la je lance mon script et j'ai ce message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -bash: ./script.pl: /usr/bin/perl^M: bad interpreter: Aucun fichier ou répertoire de ce type
    alors que sur un autre onglet du meme terminal pas de msg d'erreur... bizarre, ca peut venir d'ou?

    Merci

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Non ça ne pose pas de problème.
    C'est toi qui fait les tests.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "Adresse IP : $IP\n" if (defined $IP);
    Si $IP est définie, ça veut dire qu'il a été rentré par l'utilisateur.

    Pour ton second problème, c'est du à des retour chariot dans ton fichier. Surement à cause d'un fichier windows passé sur linux => problème de fin de ligne.
    Vire les ^M de ton fichier. Pour cela, tu peux faire sous ta console linux cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi.bak -e 's/\r\n/\n/g' TonScript.pl
    Il te remettra ton script au propre et te fais une sauvegarde de ton ancien script.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Par défaut
    Ah merci sa marche impécable!!!

    Merci maintenant je peux continué mon script!! si j'ai d'autres probleme je les posterais ICI!

    Merci encore a toi!

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Par défaut
    Re, enfin non c'est pas bon...

    Je viens d'effectuer des tests, et quand je rentre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./script -ip x.x.x.x -mac xxxx.xxxx.xxxx
    Il me sort les 2 en arguments... et je veux pas sa:!!
    je veux juste soit l'un soit l'autre!!!
    comment faire??
    DSL tout a l'heure j'ai dis des betises en disant c'etait bon
    merci

Discussions similaires

  1. [Batch] Ligne de commande avec un chemin avec espaces
    Par Oluha dans le forum Scripts/Batch
    Réponses: 17
    Dernier message: 11/10/2018, 11h36
  2. Lancer logiciel de musique en ligne de commande avec arguments
    Par quake3 dans le forum Applications et environnements graphiques
    Réponses: 18
    Dernier message: 13/05/2012, 22h15
  3. Réponses: 8
    Dernier message: 11/05/2012, 19h31
  4. Réponses: 5
    Dernier message: 20/04/2010, 15h59
  5. [DEBUTANT] Ligne de commande avec ShellExecute()
    Par alainpeniche dans le forum Windows
    Réponses: 3
    Dernier message: 22/08/2005, 12h08

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