virt-uname works.
[virt-tools.git] / tools / virt-tools-get-transport.pl
index b6bf480..1f4a57a 100755 (executable)
 use Sys::Virt;
 use Sys::Guestfs;
 use Sys::Guestfs::Lib qw(open_guest get_partitions);
+use Net::SNMP;
+
+use Data::Dumper;
+
 use Pod::Usage;
 use Getopt::Long;
+
 use Locale::TextDomain 'virt-tools';
-use Net::SNMP;
 
 =encoding utf8
 
@@ -288,7 +292,42 @@ sub test_transport
        close PIPE;
     }
 
-    print "XXX PING XXX\n";
+    my ($hostname, $port, $domain);
+    if ($transport =~ /^udp:(.*):(.*)/) {
+       $domain = "udp";
+       $hostname = $1;
+       $port = $2;
+    } elsif ($transport =~ /^tcp:(.*):(.*)/) {
+       $domain = "tcp";
+       $hostname = $1;
+       $port = $2;
+    } else {
+       die __x("unknown transport type: {t}", t => $transport);
+    }
+
+    if ($verbose) {
+       print STDERR "creating Net::SNMP session to $domain:$hostname:$port with key $key\n"
+    }
+
+    my ($session, $error) = Net::SNMP->session (
+       -version => 3,
+       -username => "virttools",
+       -authpassword => $key,
+       -authprotocol => "sha",
+       -privpassword => $key,
+       -privprotocol => "aes",
+       -hostname => $hostname,
+       -port => $port,
+       -domain => $domain,
+       );
+    return 0 unless $session;
+
+    my $sysUpTime = "1.3.6.1.2.1.1.3.0";
+    my $r = $session->get_request (-varbindlist => [$sysUpTime])
+       or return 0;
+    print STDERR "test_transport: sysUpTime = $r->{$sysUpTime}\n" if $verbose;
+
+    $session->close ();
 
     1;
 }