[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 02/11] osstest: add routine to execute ssh with password
On Wed, 2015-02-18 at 17:18 +0100, Roger Pau Monne wrote: > This is needed when bootstrapping FreeBSD, since the installer has ssh > enabled with the root password set to 'root' by default. I think the commit message should mention the refactoring done WRT $stdout vs $child_sub (i.e. you are replacing the boolean with a hook, where the current invocations do the same thing as the old boolean used to cause). I also think the trick with SSH_ASKPASS deserves a brief mention. > @@ -585,9 +585,42 @@ sub tcmd { # $tcmd will be put between '' but not escaped > sub target_cmd ($$;$) { tcmd(undef,'osstest',@_); } > sub target_cmd_root ($$;$$) { tcmd(undef,'root',@_); } > > +sub target_cmd_root_with_password { > + my ($ho,$tcmd,$timeout,$password, $disable_hosts) = @_; > + my $temp_name = "tmp/t.ssh-password-helper.$flight.$job"; > + > + open(my $temp_fh, '>', $temp_name) > + or die "Cannot open $temp_name: $!"; > + print $temp_fh "#!/bin/sh\n\necho \"$password\"\n" > + or die "Cannot write to $temp_name: $!"; > + chmod 0755, $temp_name > + or die "Cannot chmod $temp_name: $!"; > + close $temp_fh > + or die "Cannot close $temp_name: $!"; > + > + my $child_sub = sub { > + $ENV{DISPLAY} = ":0"; ? This seems like it must be pretty magic, in some terribly scary way... > + $ENV{SSH_ASKPASS} = > "tmp/t.ssh-password-helper.$flight.$job"; > + setsid or die "Can't start a new session: $!"; > + }; > + > + my $ssh_opts = [qw(-o BatchMode=no > + -o PasswordAuthentication=yes > + -o ChallengeResponseAuthentication=yes), > + @{ sshopts($disable_hosts) }]; > + > + tcmdex($timeout,$child_sub, > + 'ssh', $ssh_opts, > + sshuho("root",$ho), $tcmd); > + > + unlink $temp_fh; > +} > + > sub tcmdout { > my $stdout= IO::File::new_tmpfile(); > - tcmd($stdout,@_); > + my $stdout_sub = sub { open STDOUT, '>&', $stdout > + or die "STDOUT $stdout $!"; }; > + tcmd($stdout_sub,@_); > $stdout->seek(0,0) or die "$stdout $!"; > my $r; > { local ($/) = undef; _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |