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 :

Problème script perl avec STDIN


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Problème script perl avec STDIN
    Bonjour à tous,

    J'ai un soucis avec Perl que je n'arrives pas à résoudre.

    Pour la petite histoire, je prépare un CD jumpstart (installation automatisée) pour Solaris, et j'ai la possibilité de lancer des scripts juste avant l'installation.

    J'en ai donc quelques uns que j'ai fais en perl et qui fonctionnent correctement sur Solaris 10. Cependant, je rencontre un problème lors de l'installation avec le STDIN. Il me fait défiler mes fonctions à l'écran, sans rien me demander, j'ai des erreurs, que je n'arrives pas à voir tellement c'est rapide.

    Bref, j'ai essayer de ruser en faisant un open sur /dev/stdin ou encore avec des Heredoc mais malheureusement, ça ne fonctionne pas non plus.

    Je désespère de faire fonctionner perl correctement là dessus. Pour info c'est une version 5.8.4 sur Solaris 10 x86.

    J'ai posté également sur le forum de Sun, mais visiblement tout le monde sèche : http://forums.sun.com/thread.jspa?threadID=5394140

    J'espère que quelqu'un pourra m'apporter une solution.

    Merci d'avance

  2. #2
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Sans script et message d'erreur, ça sera difficile de t'aider.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Le script était visible en suivant le liens ci dessus, mais tant pis, je le remet ici :

    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
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    #!/usr/bin/perl -w
    # Set Hostname Jumpstart
     
    use strict;
     
    sub hit_enter {
        print "Hit enter to continue\n";
        <STDIN>;
        print "\033[2J";
    }
     
    sub get_hostname {
        my %towns_list = (
            'Paris' => 'PA',
            'New-York' => 'NY',
            'Hong-Kong' => 'HK',
            'London' => 'LD',
            'Frankfurt' => 'FK',
            'Mumbai' => 'MB',
            'Sao-Polo' => 'SP',
        );
     
        my %sites_list = (
            'Office' => 'OFC',
            'Redbus' => 'RED',
            'Telehouse' => 'TLH',
            'DTC' => 'DTC',
            'iAdvantage' => 'IAD',
            'Nutley' => 'NUT',
            'Level3' => 'LV3',
            'Equinix' => 'EQX',
            'Tata' => 'TAT',
        );
     
        my %usage_list = (
            'Production' => 'PRD',
            'UAT' => 'UAT',
            'DMZ' => 'DMZ',
        );
     
        sub select_list {
            my $counter=-1;
            my %hash_list = @_;
            my @keys = keys %hash_list;
     
            # Clear screen
            print "\033[2J";
            print "In which country this machine is hosted or will be host and will be used ?\n\n";
     
            # Get all keys from hash
            while ((my $key) = each %hash_list ) {
                $counter++;
                print "$counter - $key\n";
            }
     
            print "\nChoose the number corresponding to your choice :\n";
            chomp (my $choice_number = <STDIN>);
     
            # Verify answer
            if (($choice_number =~ /\d+/) and ($choice_number <= $counter)) {
                # Add choice to chosen hostname
                my $chosen=$hash_list{$keys[$choice_number]};
                return $chosen;
            } else {
                print "\nYour answer is not correct, you need to enter a number between 0 and $counter\n";
                &hit_enter;
                &select_list;
            }
        }
     
        sub srv_number {
            print "\033[2J";
            print "What is the server number ?\n";
            chomp (my $server_number = <STDIN>);
            if ($server_number =~ /\d+/) {
                return $server_number;
            } else {
                print "\nYour answer is not correct, you need to enter a number\n";
                &hit_enter;
                &srv_number;
            }
        }
     
        my $full_hostname = &select_list(%towns_list).'-';
        $full_hostname = $full_hostname.&select_list(%sites_list).'-';
        $full_hostname = $full_hostname.'SRV-';
        $full_hostname = $full_hostname.&select_list(%usage_list).'-';
        $full_hostname = $full_hostname.&srv_number;
     
        sub write_hostname2tmp {
            open (HOSTNAME, ">/tmp/set_hostname") or warn "Couldn't write $_[0] to temp file : $!\n";
                print HOSTNAME "$_[0]\n";
            close (HOSTNAME);
        }
     
        print "\033[2J";
        print "Is $full_hostname the correct name for this server ? (y/n)\n";
        if (<STDIN> =~ /y|yes/i) {
            &write_hostname2tmp($full_hostname);
        } else {
            print "Would you like to retry (r) or set manually the hostname (s) ? (r/s)\n";
            if (<STDIN> =~ /s/i) {
                print "Type the full required name and hit enter when finished :\n";
                chomp ($full_hostname = <STDIN>);
                &write_hostname2tmp;
            } else {
                &get_hostname;
            }
        }
    }
     
    # Start configuration
    print "\033[2J";
    print "\n########################################################\n";
    print "#\t\t\t\t\t\t       #\n";
    print "#\t\t\tTEST\t\t\t       #\n";
    print '#  Solaris Environnement Installation for Datacenters  #';
    print "\n#\t\t\t\t\t\t       #";
    print "\n########################################################\n\n";
    print "Before starting installation, you need to enter a set of informations.\n(answer to all questions, you can Ctrl+C to stop now)\n\n";
    &hit_enter;
     
    &get_hostname;
    Et pour le message d'erreur, je n'ai vraiment rien qui s'affiche si je les lance simplement avec "perl monscript.pl". Si je le fais avec avec un Heredoc parcontre, ça défile en permanence et je ne peux rien faire.

    Je n'ai pas vraiment de messages d'erreurs malheureusement

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/04/2012, 01h45
  2. Problème Script Perl : Proxy Authentication Required
    Par Flipmode dans le forum Langage
    Réponses: 5
    Dernier message: 09/07/2009, 17h23
  3. Appel script Perl avec arguments
    Par metalcoyote dans le forum Général Java
    Réponses: 5
    Dernier message: 12/06/2008, 16h33
  4. [Système] Lancer un script perl avec PHP
    Par pepite dans le forum Langage
    Réponses: 2
    Dernier message: 09/01/2006, 12h30
  5. Réponses: 6
    Dernier message: 23/05/2005, 08h33

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