bonjour,
J'arrive pas à connecter un lecteur reseau en perl.
Voici mon script
Code:
1
2
3
4
5
6 use Win32::NetResource; #AddConnection(\%NETRESOURCE,$Password,$UserName,$Connection) AddConnection(\\MACHINE\TOTO\DONNEES,password,user,T:\)
Version imprimable
bonjour,
J'arrive pas à connecter un lecteur reseau en perl.
Voici mon script
Code:
1
2
3
4
5
6 use Win32::NetResource; #AddConnection(\%NETRESOURCE,$Password,$UserName,$Connection) AddConnection(\\MACHINE\TOTO\DONNEES,password,user,T:\)
2 remarques :
Si c'est un extrait de ton code et qu'il y a d'autres lignes après la dernière montrée, il manque un ; à ta dernière ligne. Question camouflée derrière cette remarque : ton code compile-t-il ?
Sinon, que donne un eval sur AddConnection(\\MACHINE\TOTO\DONNEES,password,user,T:\) ?
Pour tes variables password et user, ne serait-ce pas plutôt $password et $user ?Code:
1
2
3
4
5 eval { AddConnection(\\MACHINE\TOTO\DONNEES,password,user,T:\); }; warn "Erreur : $@\n" if ($@);
De plus, je pense que des " " seraient de bon aloi ;)
AddConnection("\\MACHINE\TOTO\DONNEES",$password,$user,"T:\");
D'après la doc du module , le 1° paramètre est une référence sur une hash contenant les valeurs suivantes:
Code:AddConnection (\%netresource, password, username, connection)
et le dernier paramètre n'est pas non plus une chaine, c'est un flag booleen...Code:
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 %NETRESOURCE KEY VALUE 'Scope' => Scope of an Enumeration RESOURCE_CONNECTED, RESOURCE_GLOBALNET, RESOURCE_REMEMBERED. 'Type' => The type of resource to Enum RESOURCETYPE_ANY All resources RESOURCETYPE_DISK Disk resources RESOURCETYPE_PRINT Print resources 'DisplayType' => The way the resource should be displayed. RESOURCEDISPLAYTYPE_DOMAIN The object should be displayed as a domain. RESOURCEDISPLAYTYPE_GENERIC The method used to display the object does not matter. RESOURCEDISPLAYTYPE_SERVER The object should be displayed as a server. RESOURCEDISPLAYTYPE_SHARE The object should be displayed as a sharepoint. 'Usage' => Specifies the Resources usage: RESOURCEUSAGE_CONNECTABLE RESOURCEUSAGE_CONTAINER. 'LocalName' => Name of the local device the resource is connected to. 'RemoteName' => The network name of the resource. 'Comment' => A string comment. 'Provider' => Name of the provider of the resource.
Code:
1
2 The connection flag indicates whether the connection should be remembered for the user for all logins.
j'ai lu la doc du module, mais vu mon niveau, c'est pas tres parlant !!!
auriez vous un exemple concret ..
merci
Pour moi, ca veut dire qu'il faut faire qqch dans ce genre là (attention, les valeurs que je mets à titre d'exemple sont fausses, ce sera à toi de les renseigner correctement)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 use Win32::NetResource; my $netresource = { 'Scope' => RESOURCE_CONNECTED , 'Type' => RESOURCETYPE_DISK , 'DisplayType' => RESOURCEDISPLAYTYPE_SHARE , 'Usage' => RESOURCEUSAGE_CONNECTABLE , 'LocalName' => 'T:' , 'RemoteName' => '//machine/chemin' , 'Comment' => 'trop cool ca marche' , 'Provider' => 'je suis un fournisseur' }; AddConnection ($netresource, $password, $username, 0);
j'ai le message d'erreur suivant
Undefined subroutine &main::AddConnection called at C:\essai1.pl line 26
qui correspond à la ligne
Code:
1
2 AddConnection ($netresource, $password, $username, 0);
Effectivement, il fallait déclarer l'importation de la méthode. J'en ai profité pour faire des tests et pondre un code qui fonctionne
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 BEGIN { use Win32::NetResource qw(:DEFAULT AddConnection); use strict; } my $username = 'user'; # remote user name my $password = 'the password goes here'; # remote password my $persistent = 0; # 1 for yes my $localname = 'M:'; my %NETRESOURCE=( Type => RESOURCETYPE_ANY, RemoteName => "\\\\W59120\\webs", LocalName => $localname, ); # Map a remote share to the local drive letter M: AddConnection(\%NETRESOURCE, $password, $username, $persistent) || die Win32::FormatMessage(Win32::GetLastError)."\n";
maintenant, j'ai ce message là
Bareword "RESOURCE_CONNECTED" not allowed while "strict subs" in use at C:\Perl\proc\essai1.pl line 16.
Bareword "RESOURCETYPE_DISK" not allowed while "strict subs" in use at C:\Perl\proc\essai1.pl line 16.
Bareword "RESOURCEDISPLAYTYPE_SHARE" not allowed while "strict subs" in use at C:\Perl\proc\essai1.pl line 16.
Bareword "RESOURCEUSAGE_CONNECTABLE" not allowed while "strict subs" in use at C:\Perl\proc\essai1.pl line 16.
Execution of C:\Perl\proc\essai1.pl aborted due to compilation errors.
Je viens de modifier mon code, reprends le
je retire les messages d'erreurs ci-dessus !!
mon lecteur se connecte bien, par contre j'ai le message suivant
Use of uninitialized value in pack at C:/Perl/lib/Win32/NetResource.pm line 339
et si je veux déconnecter ce lecteur ??
merci encore pour ton aide !!!
Vince
Et voila pour la déconnexion (je te mets le code que j'ai trouvé sur le net tel quel ;) )
Code:
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 # Map a remote share , and the disconnected it use Win32::NetResource qw(:DEFAULT AddConnection CancelConnection); my $username = 'Administrator'; # remote user name my $password = 'the password goes here'; # remote password my $persistent = 0; # 1 for yes my $force = 1; # used to force disconnection if user are connected my $localname = 'M:'; my %NETRESOURCE=( Type => RESOURCETYPE_ANY, RemoteName => "\\\\HOST01\\C\$", LocalName => $localname, ); # Map a remote share to the local drive letter M: AddConnection(\%NETRESOURCE,$password,$u sername,$persistent) || die Win32::FormatMessage(Win32::GetLastError)."\n"; # Disconnet a remote share CancelConnection('M:',$persistent,$force) || die Win32::FormatMessage(Win32::GetLastError)."\n";
http://www.developpez.net/forums/sho...d.php?t=171010
Voilà ce que j'avais mis sur le sujet avant les vacances ;)
la connection et déconnection fonctionne. Mais par contre quand je me connecte, j'ai le message :
Use of uninitialized value in pack at C:/Perl/lib/Win32/NetResource.pm line 339
est ce que ma librairie n'est pas bonne ! ça correspond à
la valeur pack est peut etre une autre librairie ??Code:
1
2
3
4 my $netres = pack( 'i4 p4', $h->{Scope}, $h->{Type}, $h->{DisplayType},
si par exemple sous nt, j'ai créer un lecteur avec un compte toto.
Et que je veux déconnecter ce lecteur avec mon compte tata : avec les scritps ci dessus, çà ne fonctionne pas. Les comptes doivent être identique, même si ils sont administrateurs du pc.
est ce que quelqu'un à une idée pour forcer la suppression de cette connection.
Merci encore