Bonjour,

Je suis en train de réaliser un script qui permet de créer des comptes sur des serveurs UNIX (2ème version car la première était un peu une usine à gaz ).
Cette fois j'ai décidé de poser les questions à l'utilisateur via la console windows.

La récupération par <STDIN> fonctionne à merveille mais pour les mots de passe, il faut avouer que ce n'est pas le top. Je me suis donc tourner vers le module Term::ReadPassword::Win32 (trouvé dans les sources Perl, merci aux contributeurs).

Voici mon code :

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
GetOptions("server:s" => \my $server, "login:s" => \my $login, "account:s" => \my $account, "uid:s" => \my $uid);
 
$server = FindServer($server);
$login = FindLogin($server);
my $password = FindPassword($login);
$account = FindAccount($server);
$uid = FindUid($login);
...
sub FindServer
{
    if (defined($server))
    {
        return $server;
    }
    else
    {
        print "De quel serveur parle-t-on ?\n";
        $server = <STDIN>;
        chomp($server);
        return $server;
    }
}
 
sub FindLogin
{
    my $server = shift;
    print "Avec quel login souhaitez vous vous connecter au serveur $server ?\n";
    $login = <STDIN>;
    chomp($login);
    return $login;
}
 
sub FindPassword
{
    my $login = shift;
    $password = read_password("Quel password souhaitez vous utiliser avec le compte $login ?\n");
    chomp($password);
    return $password;
}
 
sub FindAccount
{
    my $server = shift;
    if (defined($account))
    {
        return $account;
    }
    else
    {
        print "Quel identifiant allons nous créer sur $server ?\n";
        $account = <STDIN>;
        chomp($account);
        return $account;
    }
}
 
sub FindUid
{
    my $login = shift;
    if (defined($uid))
    {
        return $uid;
    }
    else
    {
        print "Quel IUD est attaché au login $login ?\n";
        $uid = <STDIN>;
        chomp($uid);
        return $uid;
    }
}
Si j'utilise <STDIN> pour la fonction FindPassword tout va bien. Le problème est que si j'utilise la fonction read_password() du module Term::ReadPassword::Win32, les fonctions FindAccount() et FindUid sont zappé comme si $account et $uid était définit alors que ce n'est pas le cas..

Merci d'avances aux personnes qui m'apporteront leurs lumières.