OVH Cloud OVH Cloud

Pb de mot de passe sous windows

1 réponse
Avatar
canto
Bonjour =E0 tous,

je suis une grande d=E9butante concernant perl et je ne comprends pas
pourquoi le net use initi=E9e par ces lignes me demande le mot de passe
du compte alors que la m=EAme sous script dos ne le fait pas :/
comme le compte et le passe utilis=E9 sont les m=EAmes sur la source et
la cible, cela ne devrait pas arriver.

Auriez-vous une id=E9e sur la question ?

sleep 2;
system "net use \\\\$_server\\$_sharename" || print FICLOG "$date
ERROR: Montage du share \\\\$_server\\$_sharename\n";
sleep 2;
}


Merci pour votre aide !

Cl=E9mentine

1 réponse

Avatar
Paul Gaborit
À (at) 26 Jan 2007 08:55:45 -0800,
écrivait (wrote):

je suis une grande débutante concernant perl et je ne comprends pas
pourquoi le net use initiée par ces lignes me demande le mot de passe
du compte alors que la même sous script dos ne le fait pas :/
comme le compte et le passe utilisé sont les mêmes sur la source et
la cible, cela ne devrait pas arriver.

Auriez-vous une idée sur la question ?

sleep 2;
system "net use \$_server$_sharename" || print FICLOG "$date
ERROR: Montage du share \$_server$_sharenamen";
sleep 2;
}


Je ne suis pas un spécialiste de 'net use...' (sous Windows,
j'imagine) mais il peut y avoir plusieurs explications...

Êtes-vous sûr que les variables Perl $_server et $_sharename
contiennent bien les bonnes valeurs ? (En général, on évite les noms
de variables commençant par un _ sauf si on a vraiment de très bonnes
raisons). Les valeurs de ces variables contiennent-elles des espaces ?

Quel est le symptôme ? Le mot de passe est demandé et si vous le
donnez tout marche comme il faut ?

Déjà, il vaut mieux ne pas utiliser 'system' en lui passant une simple
chaîne contenant la commande et ses arguments mais plutôt en lui
passant une liste (commande, @arguments). Ici, ça donnerait :

system('net', 'use', "\$_server$_sharename") ...

Cela évite un éventuel passage par un shell (lequel sous Windows?) qui
est toujours source d'ennui.

Après, on n'aime rarement les à répétition. La plupart du temps,
Windows accepte depuis longtemps l'usage du / à la place des . Vous
pouvez donc aussi essayer cela :

system('net', 'use', "//$_server/$_sharename") ...

qui est quand même nettement plus lisible.

Si tout cela ne donne rien, il faut s'interroger sur l'identité de
celui qui exécute le script Perl. Est-ce bien la même que celle
utilisée par le script DOS. Il faut aussi vérifier les variables
d'environnement (mais je ne sais si elles ont une influence sur le
'net use...').

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>