bha tu dois etre sous windows... ya moyen de recuperer la valeur de cette constante qq part mais bon...
de toutes facon ca marchera pas à mon avis car il faut faire ca avant le bind, la ca doit deja etre trop tard.
bon en fouillant un peu dans le code des modules j'ai peut etre trouvé ce qu'il te fallait:
en fait le module ssh scan les port libre (au lieu de demander à l'os de lui en donner un...) et passe au suivant quand il recoit un message qui match /Address already in use/. Il plante si il recoit un autre message, disant qu'il ne peu pas binder (le message d'erreur que tu a). Le probleme c'est que ton systeme est en francais, et du coup kand le port est deja bindé il dit "adresse deja utilisée" au lieu de "adress already in use" !!!
du coup ce connard de module ssh croit que c'est une autre erreur!!
faudrait signaler ce bug à l'auteur du module.
En attendant il te faut patcher ta lib toi meme (ligne 235 de Net/SSH/Perl.pm).
bon en fait il semblerait qu'il y a une option pour laisser l'os choisir le port lui meme: privileged => 0 dans le new de SSH.
donc voila comment faire:
Code :
- #!/usr/bin/perl
- use Net::SSH::Perl;
- use Net::SFTP;
- my %sftp_args = (ssh_args => {privileged => 0}, user =>'user1',password =>'password1');
- my %sftp_argspremium = (ssh_args => {privileged => 0}, user =>'user2',password =>'password2');
- my $sftp = Net::SFTP->new('17.17.17.17', %sftp_args)
- or die "Cannot connect to Host ";
- print "CONNECTED\n";
- $sftp->get('remotefichier1','localfichier1');
- my $sftp2 = Net::SFTP->new('17.17.17.17', %sftp_argspremium)
- or die "Cannot connect to Host ";
- print "CONNECTED\n";
- $sftp2->get('remotefichier2','localfichier2');
|
tu passe ssh_args => {privileged => 0} en param à ton new, et SFTP passera ce param à SSH quant il le crera.
J'ai pas testé, mais ca devrait marcher