git.annexia.org
/
libguestfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
New APIs: is-chardev, is-blockdev, is-fifo, is-symlink, is-socket
[libguestfs.git]
/
inspector
/
virt-inspector
diff --git
a/inspector/virt-inspector
b/inspector/virt-inspector
index
071f0b0
..
dc15f0d
100755
(executable)
--- a/
inspector/virt-inspector
+++ b/
inspector/virt-inspector
@@
-27,6
+27,7
@@
use Pod::Usage;
use Getopt::Long;
use Data::Dumper;
use XML::Writer;
use Getopt::Long;
use Data::Dumper;
use XML::Writer;
+use String::ShellQuote qw(shell_quote);
use Locale::TextDomain 'libguestfs';
# Optional:
use Locale::TextDomain 'libguestfs';
# Optional:
@@
-54,10
+55,6
@@
para-virtualized (PV), what applications are installed and more.
Virt-inspector can produce output in several formats, including a
readable text report, and XML for feeding into other programs.
Virt-inspector can produce output in several formats, including a
readable text report, and XML for feeding into other programs.
-Virt-inspector should only be run on I<inactive> virtual machines.
-The program tries to determine that the machine is inactive and will
-refuse to run if it thinks you are trying to inspect a running domain.
-
In the normal usage, use C<virt-inspector domname> where C<domname> is
the libvirt domain (see: C<virsh list --all>).
In the normal usage, use C<virt-inspector domname> where C<domname> is
the libvirt domain (see: C<virsh list --all>).
@@
-168,13
+165,11
@@
my $windows_registry;
=item B<--windows-registry>
=item B<--windows-registry>
-If this item is passed, I<and> the guest is Windows, I<and> the
-external program C<reged> is available (see SEE ALSO section), then we
-attempt to parse the Windows registry. This allows much more
-information to be gathered for Windows guests.
+This flag is ignored for compatibility with earlier releases of the
+software.
-This is quite an expensive and slow operation, so we don't do it by
-
defaul
t.
+In this version, if L<Win::Hivex(3)> is available, then we attempt to
+
parse information out of the Registry for any Windows gues
t.
=back
=back
@@
-266,8
+261,7
@@
my @partitions = get_partitions ($g);
# Now query each one to build up a picture of what's in it.
my %fses =
# Now query each one to build up a picture of what's in it.
my %fses =
- inspect_all_partitions ($g, \@partitions,
- use_windows_registry => $windows_registry);
+ inspect_all_partitions ($g, \@partitions);
#print "fses -----------\n";
#print Dumper(\%fses);
#print "fses -----------\n";
#print Dumper(\%fses);
@@
-305,13
+299,17
@@
if ($output eq "fish" || $output eq "ro-fish") {
print "--ro ";
}
print "--ro ";
}
- print "-a $_ " foreach @images;
+ foreach (@images) {
+ printf "-a %s ", shell_quote ($_);
+ }
my $mounts = $oses->{$root_dev}->{mounts};
# Have to mount / first. Luckily '/' is early in the ASCII
# character set, so this should be OK.
foreach (sort keys %$mounts) {
my $mounts = $oses->{$root_dev}->{mounts};
# Have to mount / first. Luckily '/' is early in the ASCII
# character set, so this should be OK.
foreach (sort keys %$mounts) {
- print "-m $mounts->{$_}:$_ " if $_ ne "swap" && $_ ne "none";
+ if ($_ ne "swap" && $_ ne "none") {
+ printf "-m %s ", shell_quote ("$mounts->{$_}:$_");
+ }
}
print "\n"
}
}
print "\n"
}
@@
-323,7
+321,7
@@
elsif ($output eq "perl") {
# YAML output
elsif ($output eq "yaml") {
# YAML output
elsif ($output eq "yaml") {
- die __"virt-inspector: no YAML support\n"
+ die __"virt-inspector: no YAML support
, try installing perl-YAML or libyaml-perl
\n"
unless exists $INC{"YAML/Any.pm"};
print Dump(%$oses);
unless exists $INC{"YAML/Any.pm"};
print Dump(%$oses);
@@
-358,6
+356,7
@@
sub output_text_os
print $os->{arch}, " " if exists $os->{arch};
print $os->{major_version} if exists $os->{major_version};
print ".", $os->{minor_version} if exists $os->{minor_version};
print $os->{arch}, " " if exists $os->{arch};
print $os->{major_version} if exists $os->{major_version};
print ".", $os->{minor_version} if exists $os->{minor_version};
+ print " (", $os->{product_name}, ")" if exists $os->{product_name};
print " ";
print "on ", $os->{root_device}, ":\n";
print " ";
print "on ", $os->{root_device}, ":\n";
@@
-411,13
+410,15
@@
sub output_text_os
print " $_->{name} $_->{version}\n"
}
print " $_->{name} $_->{version}\n"
}
- print __" Kernels:\n";
- my @kernels = @{$os->{kernels}};
- foreach (@kernels) {
- print " $_->{version} ($_->{arch})\n";
- my @modules = @{$_->{modules}};
- foreach (@modules) {
- print " $_\n";
+ if ($os->{kernels}) {
+ print __" Kernels:\n";
+ my @kernels = @{$os->{kernels}};
+ foreach (@kernels) {
+ print " $_->{version} ($_->{arch})\n";
+ my @modules = @{$_->{modules}};
+ foreach (@modules) {
+ print " $_\n";
+ }
}
}
}
}
@@
-449,6
+450,7
@@
sub output_xml_os
foreach ( [ "name" => "os" ],
[ "distro" => "distro" ],
foreach ( [ "name" => "os" ],
[ "distro" => "distro" ],
+ [ "product_name" => "product_name" ],
[ "arch" => "arch" ],
[ "major_version" => "major_version" ],
[ "minor_version" => "minor_version" ],
[ "arch" => "arch" ],
[ "major_version" => "major_version" ],
[ "minor_version" => "minor_version" ],
@@
-523,7
+525,10
@@
sub output_xml_os
foreach (@apps) {
$xml->startTag("application");
$xml->dataElement("name", $_->{name});
foreach (@apps) {
$xml->startTag("application");
$xml->dataElement("name", $_->{name});
+ $xml->dataElement("epoch", $_->{epoch}) if defined $_->{epoch};
$xml->dataElement("version", $_->{version});
$xml->dataElement("version", $_->{version});
+ $xml->dataElement("release", $_->{release});
+ $xml->dataElement("arch", $_->{arch});
$xml->endTag("application");
}
$xml->endTag("applications");
$xml->endTag("application");
}
$xml->endTag("applications");
@@
-847,12
+852,9
@@
L<Sys::Guestfs::Lib(3)>,
L<Sys::Virt(3)>,
L<http://libguestfs.org/>.
L<Sys::Virt(3)>,
L<http://libguestfs.org/>.
-For Windows registry parsing we require the C<reged> program
-from L<http://home.eunet.no/~pnordahl/ntpasswd/>.
-
-=head1 AUTHOR
+=head1 AUTHORS
-Richard W.M. Jones L<http://
et
.redhat.com/~rjones/>
+Richard W.M. Jones L<http://
people
.redhat.com/~rjones/>
Matthew Booth L<mbooth@redhat.com>
Matthew Booth L<mbooth@redhat.com>