Bonjour

Not many answers, so...

Am Montag, 4. April 2005 21.16 schrieb gui:
> hello,
>
> I'm making a simple script that's supposed to update a certain number of
> boxes, spread around the area.
> my script is supposed to to connect to every hosts (via a file named
> "hosts") using ssh, launch wget to retrieve the patch update, and
> install it.
> Things work fine for the first host of the list. But can never get
> beyong that. I get a "Net::SSH: Can't bind socket to port 1023: Adresse
> déjà utilisée at ./test_ssh.pl line 46" message.
>
> my question is, how can I unbind the socket used by Net::SSH::Perl ?
>
> here's part of my code:
>
> use strict;
> use Net::SSH::Perl;
>
> my ($patchurl,$stout,$sterr,$exit,$ssh);
> my @ids = "$ENV{HOME}/.ssh/id_rsa";
>
> my %params = (
>          'protocol' => 2,
>          'identity_files' => [EMAIL PROTECTED],
> );
>
> $patchurl = push @ARGV
>
> open HOSTS, "hosts" or die "je n'ai pas réussi à ouvrir le fichier hosts
>
> : $!";
>
> while(<HOSTS>){
>
>          (...)
>
>   $ssh = Net::SSH::Perl->new($_, %params);
>          $ssh->login("root");
>          ($stout,$sterr,$exit) = $ssh->cmd("wget -q $patchurl");
>
>  (...)
> }
>
>
> thanks

I don't see the exact reason. But after having a look in the code (Perl.pm, 
sub _create_socket, which tries ports from 1023 down to 512 to bind to), 
maybe the ssh object is not destroyed between the loops. You could try:

** define $ssh as my variable within the loop (not outside as currently)
** put the code within the loop in a separate block, containing the 
my-Definition of $ssh
** use "undef $ssh" at the end of the loop (still within it of course)
** Insert some diagnostic code at the beginning of the loop that 
a) examines the $ssh object before the second "loop run" and/or 
b) sleeps for e.g. a minute, so that you can look whats happening with the 
bound port (netstat -neat from cmdline)

I don't have the Modules installed, so I didn't made tests, sorry.

joe

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to