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@xxxxxxxxxx> 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 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list