J'en pense que Opts et Util sont sans doute des modules à toi, et que je ne sais pas ce qu'ils font :roll:
Version imprimable
J'en pense que Opts et Util sont sans doute des modules à toi, et que je ne sais pas ce qu'ils font :roll:
j'aimerai maintenant exécuter mon script vm_found.pl sans wrapper.pl, pour cela j'ai créé un fichier login.txt avec:
Comment récupérer, lire ses informations au niveau du script vm_found.pl ?Code:
1
2
3
4
5 $server=128.xxx.xxx.xxx $username=scripts $password=shuttle
Le script au dessus n'est pas bon, c'est juste une piste.;)Code:
1
2
3
4
5
6
7
8
9
10
11 open my $debug, ">", "C:/perl-scripts/login.txt"; read(STDIN, my $donnees, $ENV{'CONTENT-LENGTH'}); my @champs_formulaire = split(/&/,$donnees); my ($server,$username,$password); foreach my $champ (@champs_formulaire){ $server =$q->param('server'); $username =$q->param('username'); $password = $q->param('password'); } close $debug;
Bonjour,
J'ai trouvé ceci:
ceci s'execute sans erreur dans l'invite de commande mais demande toujours les identifiants alors que je les ai mis en paramètre : &vm_found($username,$server,$password);Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #!C:\Program Files\VMware\VMware VI Perl Toolkit\Perl\bin\perl.exe use strict; use warnings; use CGI::Carp qw(fatalsToBrowser); my $username='scripts'; my $server=128.94.5.223; my $password='shuttle'; require("vm_found.pl"); &vm_found($username,$server,$password); exit 0;
Il faut obligatoirement que je rentre :
Code:
1
2
3 C:\perl-scripts>perl wrapper.pl --username=scripts --server=128.94.5.223 --password=shuttle
Moi ce que je voudrais c'est que wrapper.pl prenne bien en compte les paramètres et pouvoir taper seulement:
Quelqu'un aurait-il une idée ?Code:
1
2
3C:\perl-scripts>perl wrapper.pl
Merci :ccool:
Salut !
Quel fouilli ce post.... Si tu utilises un script pour faire des tests, et que ce script est exploité de plusieurs manières, fais-en un module, ca sera plus simple à gérer.
Pour le moment, à quoi ressemble ton vm_found.pl ?
@+
Mr6
Merci Mr6 pour ta réponse.
vm_found.pl :
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
38
39
40
41
42
43
44 #!C:\perl\bin\perl use strict; use warnings; use CGI; my $q = new CGI; use CGI::Carp qw(fatalsToBrowser); use VMware::VIRuntime; Opts::parse(); Opts::validate(); Util::connect(); print $q->header( "text/html" ), $q->start_html( "hello from perl cgi!" ); print $q->p("====================================================================="); print $q->p(" FIND THE NAME AND THE NUMBER OF ALL THE VMs AND HOSTs "); print $q->p("====================================================================="); my $host_views = Vim::find_entity_views(view_type => 'HostSystem'); my $counter = 0; print $q->p("Host found: "); foreach (@$host_views) { print $q->p("$counter:" . $_->name); $counter++; } print $q->p("Total Host (Serveur) = $counter"); my $sum = 0; print $q->p("VM's found: "); my $vm_views = Vim::find_entity_views(view_type => 'VirtualMachine'); foreach (@$vm_views) { print $q->p("$sum: " . $_->name); $sum++; } print $q->p("Total VM (machine virtuelle) = $sum"); print $q->end_html; Util::disconnect();
1ère chose qui me choque dans ton post un peu plus haut sur le wrapper.pl :
Je ne vois pas de fonction vm_found dans ton vm_found.pl.Code:
1
2 require("vm_found.pl"); &vm_found($username,$server,$password);
Je te propose de séparer le boulot de chaque script.
Ton vm_found.PM (non plus pl ;) ) va te servir à récupérer tes infos, UNIQUEMENT :
(code non testé, à toi de le corriger en fonction)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
38 #!C:\perl\bin\perl use strict; use warnings; package vm_views; use VMware::VIRuntime; Opts::parse(); Opts::validate(); Util::connect(); sub host_view { my $host_views = Vim::find_entity_views(view_type => 'HostSystem'); my $counter = 0; my $view = "Host found: \n"; foreach (@$host_views) { $view .= "$counter:" . $_->name."\n"; $counter++; } $view .= "Total Host (Serveur) = $counter\n"; return $view; } sub vm_view { my $vm_views = Vim::find_entity_views(view_type => 'VirtualMachine'); my $counter = 0; my $view = "VM's found: \n"; foreach (@$vm_views) { $view .= "$counter: " . $_->name."\n"; $counter++; } $view .= "Total VM (machine virtuelle) = $counter\n"; return $view; } Util::disconnect();
J'ai volontairement viré la partie CGI car les 2 fonctions vont faire le boulot de base, te renvoyer une variable contenant toutes tes infos (déjà préformatées, je suis pas vache) et à toi de faire l'affichage qui te convient en fonction d'un affichage en console ou via une page web.
Maintenant la question qui tue : à quel moment tu donnes ton serveur, user, password dans ton vm_found.pl (je ne l'ai pas vu donc pas repris dans le .pm que je te propose...) ? L'intégration de ces paramètres sera beaucoup plus simple puisque tu as juste à modifier tes fonctions de la sorte par exemple :
Vala, creuse la dessus, fais du ménage, et dis nous ce que ca donne ;)Code:
1
2
3
4 sub host_view { my $server,$user,$password = @_; ......
@+
Mr6
Merci beaucoup à Mr6 et Philou.
Mais après plusieurs heures de recherche, j'ai trouvé la solution à mon problème!!!!!!!!!!!!!!!!
script wrapper.pl :
Code:
1
2
3
4
5
6
7
8
9
10
11 #!C:\perl\bin\perl use strict; use warnings; use CGI::Carp qw(fatalsToBrowser); system('perl ./vm_found.pl --username=<....> --server=<......> --password=<.........>'); exit 0;
Et tout fonctionne correctement:ccool:
Merci.