[libvirt] [tck PATCH 3/9] Use Net::OpenSSH instead of Net::SSH::Perl
Daniel P. Berrangé
berrange at redhat.com
Thu Feb 8 09:17:30 UTC 2018
On Wed, Feb 07, 2018 at 09:04:53PM -0500, Laine Stump wrote:
> Net::SSH::Perl is out of date in the Fedora git repos. The version
> currently supported in Fedora fails to connect to most modern sshd's,
> and updating to the new version would require adding several new perl
> packages to Fedora. Instead, this patch switches to using
> Net::OpenSSH, whose current version in Fedora works properly *EXCEPT*
> that it is missing the line "Requires: perl(IO:TTy)" in its specfiles
> (I filed https://bugzilla.redhat.com/1542666 requesting that fix to be
> applied to Fedora git repos. For now, just run "dnf install
> perl-IO-Tty" separately)
>
> NB: prior to this patch, Net::SSH::Perl was required, but had no
> Required: line in the specfile, so you would have to install it by
> hand. If you had done that, you can probably now dnf erase it.
Fedora RPM has magic dependancy generators - it should have added a
Requires: perl(Net::SSH::Perl) line automatically at build time
> diff --git a/perl-Sys-Virt-TCK.spec.PL b/perl-Sys-Virt-TCK.spec.PL
> index 9a10880..4172499 100644
> --- a/perl-Sys-Virt-TCK.spec.PL
> +++ b/perl-Sys-Virt-TCK.spec.PL
> @@ -37,7 +37,7 @@ __DATA__
> Summary: Sys::Virt::TCK - libvirt Technology Compatibility Kit
> Name: perl-%{appname}
> Version: @VERSION@
> -Release: 1%{_extra_release}
> +Release: 99%{_extra_release}
Opps can revert that bit :-)
> License: GPLv2
> Group: Development/Tools
> Source: http://libvirt.org/sources/tck/%{appname}-v%{version}.tar.gz
> @@ -73,6 +73,7 @@ Requires: perl(Test::Exception)
> Requires: perl(TAP::Formatter::HTML)
> Requires: perl(TAP::Formatter::JUnit)
> Requires: perl(TAP::Harness::Archive)
> +Requires: perl(Net::OpenSSH)
> Requires: /usr/bin/mkisofs
> BuildArchitectures: noarch
>
> diff --git a/scripts/nwfilter/100-ping-still-working.t b/scripts/nwfilter/100-ping-still-working.t
> index dc1efd2..5afc6a6 100644
> --- a/scripts/nwfilter/100-ping-still-working.t
> +++ b/scripts/nwfilter/100-ping-still-working.t
> @@ -32,7 +32,6 @@ use Test::More tests => 4;
> use Sys::Virt::TCK;
> use Sys::Virt::TCK::NetworkHelpers;
> use Test::Exception;
> -use Net::SSH::Perl;
>
> use File::Spec::Functions qw(catfile catdir rootdir);
>
> diff --git a/scripts/nwfilter/210-no-mac-spoofing.t b/scripts/nwfilter/210-no-mac-spoofing.t
> index 03001a8..eb01d13 100644
> --- a/scripts/nwfilter/210-no-mac-spoofing.t
> +++ b/scripts/nwfilter/210-no-mac-spoofing.t
> @@ -31,7 +31,7 @@ use Test::More tests => 5;
> use Sys::Virt::TCK;
> use Sys::Virt::TCK::NetworkHelpers;
> use Test::Exception;
> -use Net::SSH::Perl;
> +use Net::OpenSSH;
>
> use File::Spec::Functions qw(catfile catdir rootdir);
>
> @@ -88,9 +88,10 @@ diag $ping;
> ok($ping =~ "10 received", "ping $guestip test");
>
> # log into guest
> -my $ssh = Net::SSH::Perl->new($guestip);
> diag "ssh'ing into $guestip";
> -$ssh->login("root", $tck->root_password());
> +my $ssh = Net::OpenSSH->new($guestip,
> + user => "root",
> + password => $tck->root_password());
>
> # now bring eth0 down, change MAC and bring it up again
> diag "fiddling with mac";
> @@ -108,26 +109,26 @@ echo "DEV=`ip link | head -3 | tail -1 | awk '{print \\\$2}' | sed -e 's/://'`
> /sbin/ip addr show dev \\\$DEV" > /test.sh
> EOF
> diag $cmdfile;
> -my ($stdout, $stderr, $exit) = $ssh->cmd($cmdfile);
> +my ($stdout, $stderr) = $ssh->capture2($cmdfile);
> diag $stdout;
> diag $stderr;
> -diag $exit;
> -($stdout, $stderr, $exit) = $ssh->cmd("chmod +x /test.sh");
> +diag "Exit Code: $?";
> +($stdout, $stderr) = $ssh->capture2("chmod +x /test.sh");
> diag $stdout;
> diag $stderr;
> -diag $exit;
> -($stdout, $stderr, $exit) = $ssh->cmd("/test.sh > /test.log");
> +diag "Exit Code: $?";
> +($stdout, $stderr) = $ssh->capture2("/test.sh > /test.log");
> diag $stdout;
> diag $stderr;
> -diag $exit;
> -($stdout, $stderr, $exit) = $ssh->cmd("cat /test.sh");
> +diag "Exit Code: $?";
> +($stdout, $stderr) = $ssh->capture2("cat /test.sh");
> diag $stdout;
> diag $stderr;
> -diag $exit;
> -($stdout, $stderr, $exit) = $ssh->cmd("cat /test.log");
> +diag "Exit Code: $?";
> +($stdout, $stderr) = $ssh->capture2("cat /test.log");
> diag $stdout;
> diag $stderr;
> -diag $exit;
> +diag "Exit Code: $?";
> ok($stdout =~ /100% packet loss|Network is unreachable/, "packet loss expected");
>
> shutdown_vm_gracefully($dom);
> diff --git a/scripts/nwfilter/220-no-ip-spoofing.t b/scripts/nwfilter/220-no-ip-spoofing.t
> index d447a19..872dcc3 100644
> --- a/scripts/nwfilter/220-no-ip-spoofing.t
> +++ b/scripts/nwfilter/220-no-ip-spoofing.t
> @@ -31,7 +31,7 @@ use Test::More tests => 4;
> use Sys::Virt::TCK;
> use Sys::Virt::TCK::NetworkHelpers;
> use Test::Exception;
> -use Net::SSH::Perl;
> +use Net::OpenSSH;
>
> use File::Spec::Functions qw(catfile catdir rootdir);
>
> @@ -71,9 +71,10 @@ diag $ebtable;
> ok($ebtable =~ "$guestip", "check ebtables entry");
>
> # log into guest
> -my $ssh = Net::SSH::Perl->new($guestip);
> diag "ssh'ing into $guestip";
> -$ssh->login("root", $tck->root_password());
> +my $ssh = Net::OpenSSH->new($guestip,
> + user => "root",
> + password => $tck->root_password());
>
> # now bring eth0 down, change IP and bring it up again
> diag "preparing ip spoof";
> @@ -95,23 +96,23 @@ MASK=`ip addr show \\\$DEV | grep 'inet ' | awk '{print \\\$2}' | sed -e 's/.*\\
> /sbin/ip addr show \\\$DEV" > /test.sh
> EOF
> diag $cmdfile;
> -my ($stdout, $stderr, $exit) = $ssh->cmd($cmdfile);
> +my ($stdout, $stderr) = $ssh->capture2($cmdfile);
> diag $stdout;
> diag $stderr;
> -diag $exit;
> -($stdout, $stderr, $exit) = $ssh->cmd("chmod +x /test.sh");
> +diag "Exit Code: $?";
> +($stdout, $stderr) = $ssh->capture2("chmod +x /test.sh");
> diag $stdout;
> diag $stderr;
> -diag $exit;
> -($stdout, $stderr, $exit) = $ssh->cmd("cat /test.sh");
> +diag "Exit Code: $?";
> +($stdout, $stderr) = $ssh->capture2("cat /test.sh");
> diag $stdout;
> diag $stderr;
> -diag $exit;
> +diag "Exit Code: $?";
> diag "running ip spoof";
> -($stdout, $stderr, $exit) = $ssh->cmd("/test.sh");
> +($stdout, $stderr) = $ssh->capture2("/test.sh");
> diag $stdout;
> diag $stderr;
> -diag $exit;
> +diag "Exit Code: $?";
> diag "checking result";
> ok($stdout =~ "100% packet loss", "packet loss expected");
>
> diff --git a/scripts/nwfilter/230-no-mac-broadcast.t b/scripts/nwfilter/230-no-mac-broadcast.t
> index 9d00dc4..70c1ab4 100644
> --- a/scripts/nwfilter/230-no-mac-broadcast.t
> +++ b/scripts/nwfilter/230-no-mac-broadcast.t
> @@ -31,7 +31,7 @@ use Test::More tests => 4;
> use Sys::Virt::TCK;
> use Sys::Virt::TCK::NetworkHelpers;
> use Test::Exception;
> -use Net::SSH::Perl;
> +use Net::OpenSSH;
> use File::Spec::Functions qw(catfile catdir rootdir);
>
> my $tck = Sys::Virt::TCK->new();
> @@ -85,9 +85,10 @@ diag "prepare tcpdump";
> system("/usr/sbin/tcpdump -v -i virbr0 -n host 255.255.255.255 2> /tmp/tcpdump.log &");
>
> # log into guest
> -my $ssh = Net::SSH::Perl->new($guestip);
> diag "ssh'ing into $guestip";
> -$ssh->login("root", $tck->root_password());
> +my $ssh = Net::OpenSSH->new($guestip,
> + user => "root",
> + password => $tck->root_password());
>
> # now generate a mac broadcast paket
> diag "generate mac broadcast";
> @@ -95,22 +96,22 @@ my $cmdfile = <<EOF;
> echo '/bin/ping -c 1 192.168.122.255 -b' > /test.sh
> EOF
> diag $cmdfile;
> -my ($stdout, $stderr, $exit) = $ssh->cmd($cmdfile);
> +my ($stdout, $stderr) = $ssh->capture2($cmdfile);
> diag $stdout;
> diag $stderr;
> -diag $exit;
> -($stdout, $stderr, $exit) = $ssh->cmd("chmod +x /test.sh");
> +diag "Exit Code: $?";
> +($stdout, $stderr) = $ssh->capture2("chmod +x /test.sh");
> diag $stdout;
> diag $stderr;
> -diag $exit;
> -($stdout, $stderr, $exit) = $ssh->cmd("/test.sh > /test.log");
> +diag "Exit Code: $?";
> +($stdout, $stderr) = $ssh->capture2("/test.sh > /test.log");
> diag $stdout;
> diag $stderr;
> -diag $exit;
> -($stdout, $stderr, $exit) = $ssh->cmd("cat /test.log");
> +diag "Exit Code: $?";
> +($stdout, $stderr) = $ssh->capture2("cat /test.log");
> diag $stdout;
> diag $stderr;
> -diag $exit;
> +diag "Exit Code: $?";
>
> # now stop tcpdump and verify result
> diag "stopping tcpdump";
> diff --git a/scripts/nwfilter/240-no-arp-spoofing.t b/scripts/nwfilter/240-no-arp-spoofing.t
> index f1e6870..141fb92 100644
> --- a/scripts/nwfilter/240-no-arp-spoofing.t
> +++ b/scripts/nwfilter/240-no-arp-spoofing.t
> @@ -31,7 +31,7 @@ use Test::More tests => 4;
> use Sys::Virt::TCK;
> use Sys::Virt::TCK::NetworkHelpers;
> use Test::Exception;
> -use Net::SSH::Perl;
> +use Net::OpenSSH;
> use File::Spec::Functions qw(catfile catdir rootdir);
>
> my $spoofid = "192.168.122.183";
> @@ -85,9 +85,10 @@ diag "prepare tcpdump";
> system("/usr/sbin/tcpdump -v -i virbr0 not ip > /tmp/tcpdump.log &");
>
> # log into guest
> -my $ssh = Net::SSH::Perl->new($guestip);
> diag "ssh'ing into $guestip";
> -$ssh->login("root", $tck->root_password());
> +my $ssh = Net::OpenSSH->new($guestip,
> + user => "root",
> + password => $tck->root_password());
>
> # now generate a arp spoofing packets
> diag "generate arpspoof";
> @@ -100,23 +101,23 @@ EOF
> diag "content of cmdfile:";
> diag $cmdfile;
> diag "creating cmdfile";
> -my ($stdout, $stderr, $exit) = $ssh->cmd($cmdfile);
> +my ($stdout, $stderr) = $ssh->capture2($cmdfile);
> diag $stdout;
> diag $stderr;
> -diag $exit;
> -($stdout, $stderr, $exit) = $ssh->cmd("chmod +x /test.sh");
> +diag "Exit Code: $?";
> +($stdout, $stderr) = $ssh->capture2("chmod +x /test.sh");
> diag $stdout;
> diag $stderr;
> -diag $exit;
> +diag "Exit Code: $?";
> diag "excuting cmdfile";
> -($stdout, $stderr, $exit) = $ssh->cmd("/test.sh > /test.log");
> +($stdout, $stderr) = $ssh->capture2("/test.sh > /test.log");
> diag $stdout;
> diag $stderr;
> -diag $exit;
> -($stdout, $stderr, $exit) = $ssh->cmd("echo test.log\ncat /test.log");
> +diag "Exit Code: $?";
> +($stdout, $stderr) = $ssh->capture2("echo test.log\ncat /test.log");
> diag $stdout;
> diag $stderr;
> -diag $exit;
> +diag "Exit Code: $?";
>
> # now stop tcpdump and verify result
> diag "stopping tcpdump";
> diff --git a/scripts/nwfilter/300-vsitype.t b/scripts/nwfilter/300-vsitype.t
> index 430618f..d169339 100644
> --- a/scripts/nwfilter/300-vsitype.t
> +++ b/scripts/nwfilter/300-vsitype.t
> @@ -31,7 +31,6 @@ use Test::More;
> use Sys::Virt::TCK;
> use Sys::Virt::TCK::NetworkHelpers;
> use Test::Exception;
> -use Net::SSH::Perl;
> use File::Spec::Functions qw(catfile catdir rootdir);
>
> my $tck = Sys::Virt::TCK->new();
> --
Reviewed-by: Daniel P. Berrange <berrange at redhat.com>
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
More information about the libvir-list
mailing list