diff options
Diffstat (limited to 'tools/virt-cat')
-rwxr-xr-x | tools/virt-cat | 215 |
1 files changed, 0 insertions, 215 deletions
diff --git a/tools/virt-cat b/tools/virt-cat deleted file mode 100755 index 546e85cf..00000000 --- a/tools/virt-cat +++ /dev/null @@ -1,215 +0,0 @@ -#!/usr/bin/perl -w -# virt-cat -# Copyright (C) 2009-2010 Red Hat Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -use warnings; -use strict; - -use Sys::Guestfs; -use Sys::Guestfs::Lib qw(open_guest); -use Pod::Usage; -use Getopt::Long; -use File::Basename; -use Locale::TextDomain 'libguestfs'; - -=encoding utf8 - -=head1 NAME - -virt-cat - Display a file in a virtual machine - -=head1 SYNOPSIS - - virt-cat [--options] domname file - - virt-cat [--options] disk.img [disk.img ...] file - -=head1 DESCRIPTION - -C<virt-cat> is a command line tool to display the contents of C<file> -where C<file> exists in the named virtual machine (or disk image). - -C<virt-cat> can be used to quickly view a single file. To edit a -file, use C<virt-edit>. For more complex cases you should look at the -L<guestfish(1)> tool. - -=head1 EXAMPLES - -Display C</etc/fstab> file from inside the libvirt VM called -C<mydomain>: - - virt-cat mydomain /etc/fstab - -List syslog messages from a VM: - - virt-cat mydomain /var/log/messages | tail - -Find out what DHCP IP address a VM acquired: - - virt-cat mydomain /var/log/messages | grep 'dhclient: bound to' | tail - -Find out what packages were recently installed: - - virt-cat mydomain /var/log/yum.log | tail - -Find out who is logged on inside a virtual machine: - - virt-cat mydomain /var/run/utmp > /tmp/utmp - who /tmp/utmp - -or who was logged on: - - virt-cat mydomain /var/log/wtmp > /tmp/wtmp - last -f /tmp/wtmp - -=head1 OPTIONS - -=over 4 - -=cut - -my $help; - -=item B<--help> - -Display brief help. - -=cut - -my $version; - -=item B<--version> - -Display version number and exit. - -=cut - -my $uri; - -=item B<--connect URI> | B<-c URI> - -If using libvirt, connect to the given I<URI>. If omitted, then we -connect to the default libvirt hypervisor. - -If you specify guest block devices directly, then libvirt is not used -at all. - -=cut - -my $format; - -=item B<--format> raw - -Specify the format of disk images given on the command line. If this -is omitted then the format is autodetected from the content of the -disk image. - -If disk images are requested from libvirt, then this program asks -libvirt for this information. In this case, the value of the format -parameter is ignored. - -If working with untrusted raw-format guest disk images, you should -ensure the format is always specified. - -=back - -=cut - -GetOptions ("help|?" => \$help, - "version" => \$version, - "connect|c=s" => \$uri, - "format=s" => \$format, - ) or pod2usage (2); -pod2usage (1) if $help; -if ($version) { - my $g = Sys::Guestfs->new (); - my %h = $g->version (); - print "$h{major}.$h{minor}.$h{release}$h{extra}\n"; - exit -} - -pod2usage (__"virt-cat: no image, VM names or filenames to cat given") - if @ARGV <= 1; - -my $filename = pop @ARGV; - -my $g; -if ($uri) { - $g = open_guest (\@ARGV, address => $uri, format => $format); -} else { - $g = open_guest (\@ARGV, format => $format); -} - -$g->launch (); - -my @roots = $g->inspect_os (); -if (@roots == 0) { - die __x("{prog}: No operating system could be detected inside this disk image.\n\nThis may be because the file is not a disk image, or is not a virtual machine\nimage, or because the OS type is not understood by libguestfs.\n\nIf you feel this is an error, please file a bug report including as much\ninformation about the disk image as possible.\n", - prog => basename ($0)); -} -if (@roots > 1) { - die __x("{prog}: multiboot operating systems are not supported.\n", - prog => basename ($0)) -} -my %fses = $g->inspect_get_mountpoints ($roots[0]); -my @fses = sort { length $a <=> length $b } keys %fses; -foreach (@fses) { - $g->mount_ro ($fses{$_}, $_); -} - -# Allow this to fail in case eg. the file does not exist. -# NB: https://bugzilla.redhat.com/show_bug.cgi?id=501888 -print $g->download($filename, "/dev/stdout"); - -=head1 SHELL QUOTING - -Libvirt guest names can contain arbitrary characters, some of which -have meaning to the shell such as C<#> and space. You may need to -quote or escape these characters on the command line. See the shell -manual page L<sh(1)> for details. - -=head1 SEE ALSO - -L<guestfs(3)>, -L<guestfish(1)>, -L<virt-edit(1)>, -L<Sys::Guestfs(3)>, -L<Sys::Guestfs::Lib(3)>, -L<Sys::Virt(3)>, -L<http://libguestfs.org/>. - -=head1 AUTHOR - -Richard W.M. Jones L<http://people.redhat.com/~rjones/> - -=head1 COPYRIGHT - -Copyright (C) 2009 Red Hat Inc. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |