Bonjour,
je suis sous windows XP Pro
je voulais savoir si avec perl je pouvais lancer des scripts en shell unix sur un serveur distant.
Je veux savoir si c'est possible et si c'est le cas je me ferai un plaisir de rechercher moi-même.
Bonjour,
je suis sous windows XP Pro
je voulais savoir si avec perl je pouvais lancer des scripts en shell unix sur un serveur distant.
Je veux savoir si c'est possible et si c'est le cas je me ferai un plaisir de rechercher moi-même.
Si ces scripts sont déjà sur ces serveurs, je te dirais donc que c'est possible.
Tu te connectes en ssh sur ces serveurs et lance les scripts.
Voilou
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Oui les scripts sont déjà sur le serveur, je ne cherche qu'à les lancer.
Je vais rechercher ça et le dirai si je trouve comment faire.
Merci
Tu peux utiliser le module Net::SSH::Perl pour te connecter en ssh sur les serveurs.
Ensuite tu lances tes commandes.
voilou
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Oui c'est ce que j'avais essayé de faire mais apparemment j'ai des problèmes car la fonction getpwuid n'a pas été implémentée
http://www.zotline.com/shownote.zot/NoteNum/3386.html
c'est bien ce qui me bloque.
je ne comprends pas ton probleme.
Le lien que tu donnes parles de perl 5.0 (tres tres vieux perl, plus d'actualités).
une fois connecté en ssh, je ne vois pas ce que t'arrive pas à faire!!
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
non le truc c'est que je ne peux pas me connecter en ssh car ce message d'erreur m'est retourné
"The getpwuid function is unimplemented at C:/Perl/site/lib/Net/SSH/Perl.pm line 110" lorsque je lance mon script dans l'invité de commande
j'avais installé activeperl 5.8.8
Ok, moi je l'utilise sous linux.
Je me demande s'il te faut pas installer cygwin, puis ssh pour pouvoir le tester
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
au final, je sais pas.
Je viens de tester sur un PC windows sur lequel ssh est installé via cygwin mais ça ne fonctionne pas
Regarde aussi Net::ssh2
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
C'est bon, j'ai pu me connecter en SSH sous windows sur un serveur linux.
Quand j'aurai terminé ce que j'ai à faire, j'expliquerai comment.
Ok, peut tu me mettre ton bout de code de test?
Quel module as tu utiliser?
sinon de windows à linux, j'y arrive aussi via net::ssh2, mais c pour qu'on puis comparer nos codes et le donner aux autres forumeurs
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
j'ai installé les modules
Math-BigInt
Math-BigInt-GMP
Math-Pari
en plus de Net::SSH et de Net::SSH::W32Perl
et j'ai supprimé "|| (getpwuid($>))[7]" à la ligne 110 dans le fichier c:/Perl/site/lib/net/SSH/Perl.pm
pour le code, c'est la syntaxe standard de création de l'objet.
EDIT: bon j'ai testé, c'est bon, je peux créer des répertoires, supprimer des fichiers,etc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 my $host = "XXXX"; my $user = "YYYY"; my $psswd = "ZZZZ"; my $ssh = Net::SSH::W32Perl->new( $host ); $ssh->login( $user , $psswd );
mais j'arrive pas à lancer un script XD
Ok, en gros, c'est du bourrin ton truc.
Il y a une façon plus propre de faire tout ça, je me mettrais dessus demain.
Car y a pas besoin de supprimer le code
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Purée ya un truc que je comprends pas.
Il me faut un package particulier ou une commande particulière pour pouvoir faire du "->cmd('/X/Y/Z.sh');" ????? c'est juste un shell à lancer mais ça fonctionne pas !!!
Bon, moi je te conseil de ne pas utiliser ce module :mrgreen:,
mais d'utiliser Net::SSH2.
1- Ce n'est pas bon de modifier le module comme tu l'as fait
2- C'est ensuite le bordel. et il date de 2002
3- Net::SSH::Perl fonctionne mieux sous linux
4- J'ai testé tous ces modules et au final j'arrive à faire ce que je veux sous windows (vers linux) avec Net::SSH2 et sous linux j'utilise Net::SSH::Perl
Donc Désinstalle le et install Net::SSH2. Garde ton code de Net::SSH::W32Perl de coté (on sait jamais) et je t'aiderais sur le ssh2, ok?
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
OK je vais faire un autre script en suivant tes instructions.
Je dirai si j'ai un problème. Merci
Je me suis pris la tête sur ce module, donc pour t'éviter de perdre du temps, je vais te donner une procédure que j'ai écrite qui fonctionne bien (car la doc du module à l'air simple mais le module a l'air capricieux).ça te convient ?
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Principe de parcimonie (moindre effort) oblige, je serai vraiment bête de refuser une telle proposition
merci
Bon, je suis de bonne humeur, alors profite en .
La procédure que j'ai crée permet de faire un ssh de windows sur un serveur (linux car c'est le test que moi j'ai effectué), ça se trouve, il fonctionnera bien de windows à windows, pas testé.
On lui donne en argument la référence d'un hash dans lequel on lui donne le nécessaire pour se connecter.
Dans ce hash, on peut lui mettre l'ensemble des commandes qu'on souhaite exécuter sur le serveur dans un tableau anonyme.
Et on le lance. Pour récupérer la sortie standard, faudra mettre verbose à 1 dans le hash, sinon il exécute les commandes mais ne récupère pas la sortie standard (le STDOUT).
Le seul hic, et tu pourras peut être chercher pour moi, c'est qu'en cas de mauvaises connexion ou mauvais login, host, etc, le module ne me prévient pas et ne fait rien (ce qui est dommage), j'attends donc ta solution (faut quand même bosser un peu )
Voilà le code exemple :
Pour les détails, voir les cours et tutoriels de formation pour apprendre la programmation Perl : http://perl.developpez.com/cours/
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 #!/usr/bin/perl use strict; use warnings; my ($host, $login, $password) = ("SERVEUR", "root", "PASSWD"); my %InfoSSH = ( host => $host, login => $login, password => $password, cmd => ["cat /etc/passwd", "pwd", "ls -alh", # "/var/www/test/test.sh", "mkdir -p toto", ], verbose => 1, # To get the stdout ); print CommandSSH( \%InfoSSH ); #================================================================== # But : Connection SSH + commandes # Args : # Retourne : rien ou le stdout # Besoin : modules Net::SSH2 sous win # Net::SSH::Perl sous linux #================================================================= sub CommandSSH { my ( $RefDataConnection ) = @_; # parameters my ($host, $login, $password, $Refcmd, $verbose) = ( $RefDataConnection->{host}, $RefDataConnection->{login}, $RefDataConnection->{password}, $RefDataConnection->{cmd}, $RefDataConnection->{verbose}, ); my $OS = $^O; my $STDOUT; # Linux if ( $OS eq "linux" ) { # A faire } # Windows elsif ( $OS =~ /^mswin32$/i ) { require Net::SSH2; my $ssh2 = Net::SSH2->new(); $ssh2->connect($host) or die "Unable to connect to $host, $! $@ \n"; $ssh2->auth_password($login, $password) or die "Unable to login $! \n"; foreach my $cmd ( @{$Refcmd} ) { my $channel = $ssh2->channel(); $channel->blocking(1); $channel->exec($cmd); while( $channel->read(my $buffer, 1024) ) { if ( defined $verbose and $verbose == 1 ) { $STDOUT .= $buffer; } } $channel->close; } } if (defined $verbose) { return $STDOUT; } return; }
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager