mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-22 07:03:38 +00:00
294 lines
7.3 KiB
Plaintext
294 lines
7.3 KiB
Plaintext
=head1 NAME
|
||
|
||
virt-cat - Display files in a virtual machine
|
||
|
||
=head1 SYNOPSIS
|
||
|
||
virt-cat [--options] -d domname file [file ...]
|
||
|
||
virt-cat [--options] -a disk.img [-a disk.img ...] file [file ...]
|
||
|
||
Old-style:
|
||
|
||
virt-cat domname file
|
||
|
||
virt-cat 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).
|
||
|
||
Multiple filenames can be given, in which case they are concatenated
|
||
together. Each filename must be a full path, starting at the root
|
||
directory (starting with '/').
|
||
|
||
C<virt-cat> can be used to quickly view a file. To edit a file, use
|
||
C<virt-edit>. For more complex cases you should look at the
|
||
L<guestfish(1)> tool (see L</USING GUESTFISH> below).
|
||
|
||
=head1 EXAMPLES
|
||
|
||
Display F</etc/fstab> file from inside the libvirt VM called
|
||
C<mydomain>:
|
||
|
||
virt-cat -d mydomain /etc/fstab
|
||
|
||
Find out what packages were recently installed:
|
||
|
||
virt-cat -d mydomain /var/log/yum.log | tail
|
||
|
||
Find out who is logged on inside a virtual machine:
|
||
|
||
virt-cat -d mydomain /var/run/utmp > /tmp/utmp
|
||
who /tmp/utmp
|
||
|
||
or who was logged on:
|
||
|
||
virt-cat -d mydomain /var/log/wtmp > /tmp/wtmp
|
||
last -f /tmp/wtmp
|
||
|
||
=head1 OPTIONS
|
||
|
||
=over 4
|
||
|
||
=item B<--help>
|
||
|
||
Display brief help.
|
||
|
||
=item B<-a> file
|
||
|
||
=item B<--add> file
|
||
|
||
Add I<file> which should be a disk image from a virtual machine. If
|
||
the virtual machine has multiple block devices, you must supply all of
|
||
them with separate I<-a> options.
|
||
|
||
The format of the disk image is auto-detected. To override this and
|
||
force a particular format use the I<--format=..> option.
|
||
|
||
=item B<-a URI>
|
||
|
||
=item B<--add URI>
|
||
|
||
Add a remote disk. See L<guestfish(1)/ADDING REMOTE STORAGE>.
|
||
|
||
__INCLUDE:blocksize-option.pod__
|
||
|
||
=item B<-c> URI
|
||
|
||
=item B<--connect> 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 (I<-a>), then libvirt is
|
||
not used at all.
|
||
|
||
=item B<-d> guest
|
||
|
||
=item B<--domain> guest
|
||
|
||
Add all the disks from the named libvirt guest. Domain UUIDs can be
|
||
used instead of names.
|
||
|
||
=item B<--echo-keys>
|
||
|
||
When prompting for keys and passphrases, virt-cat normally turns
|
||
echoing off so you cannot see what you are typing. If you are not
|
||
worried about Tempest attacks and there is no one else in the room you
|
||
can specify this flag to see what you are typing.
|
||
|
||
=item B<--format=raw|qcow2|..>
|
||
|
||
=item B<--format>
|
||
|
||
The default for the I<-a> option is to auto-detect the format of the
|
||
disk image. Using this forces the disk format for I<-a> options which
|
||
follow on the command line. Using I<--format> with no argument
|
||
switches back to auto-detection for subsequent I<-a> options.
|
||
|
||
For example:
|
||
|
||
virt-cat --format=raw -a disk.img file
|
||
|
||
forces raw format (no auto-detection) for F<disk.img>.
|
||
|
||
virt-cat --format=raw -a disk.img --format -a another.img file
|
||
|
||
forces raw format (no auto-detection) for F<disk.img> and reverts to
|
||
auto-detection for F<another.img>.
|
||
|
||
If you have untrusted raw-format guest disk images, you should use
|
||
this option to specify the disk format. This avoids a possible
|
||
security problem with malicious guests (CVE-2010-3851).
|
||
|
||
__INCLUDE:key-option.pod__
|
||
|
||
__INCLUDE:keys-from-stdin-option.pod__
|
||
|
||
=item B<-m> dev[:mountpoint[:options[:fstype]]]
|
||
|
||
=item B<--mount> dev[:mountpoint[:options[:fstype]]]
|
||
|
||
Mount the named partition or logical volume on the given mountpoint.
|
||
|
||
If the mountpoint is omitted, it defaults to F</>.
|
||
|
||
Specifying any mountpoint disables the inspection of the guest and
|
||
the mount of its root and all of its mountpoints, so make sure
|
||
to mount all the mountpoints needed to work with the filenames
|
||
given as arguments.
|
||
|
||
If you don’t know what filesystems a disk image contains, you can
|
||
either run guestfish without this option, then list the partitions,
|
||
filesystems and LVs available (see L</list-partitions>,
|
||
L</list-filesystems> and L</lvs> commands), or you can use the
|
||
L<virt-filesystems(1)> program.
|
||
|
||
The third (and rarely used) part of the mount parameter is the list of
|
||
mount options used to mount the underlying filesystem. If this is not
|
||
given, then the mount options are either the empty string or C<ro>
|
||
(the latter if the I<--ro> flag is used). By specifying the mount
|
||
options, you override this default choice. Probably the only time you
|
||
would use this is to enable ACLs and/or extended attributes if the
|
||
filesystem can support them:
|
||
|
||
-m /dev/sda1:/:acl,user_xattr
|
||
|
||
Using this flag is equivalent to using the C<mount-options> command.
|
||
|
||
The fourth part of the parameter is the filesystem driver to use, such
|
||
as C<ext3> or C<ntfs>. This is rarely needed, but can be useful if
|
||
multiple drivers are valid for a filesystem (eg: C<ext2> and C<ext3>),
|
||
or if libguestfs misidentifies a filesystem.
|
||
|
||
=item B<-v>
|
||
|
||
=item B<--verbose>
|
||
|
||
Enable verbose messages for debugging.
|
||
|
||
=item B<-V>
|
||
|
||
=item B<--version>
|
||
|
||
Display version number and exit.
|
||
|
||
=item B<-x>
|
||
|
||
Enable tracing of libguestfs API calls.
|
||
|
||
=back
|
||
|
||
=head1 OLD-STYLE COMMAND LINE ARGUMENTS
|
||
|
||
Previous versions of virt-cat allowed you to write either:
|
||
|
||
virt-cat disk.img [disk.img ...] file
|
||
|
||
or
|
||
|
||
virt-cat guestname file
|
||
|
||
whereas in this version you should use I<-a> or I<-d> respectively
|
||
to avoid the confusing case where a disk image might have the same
|
||
name as a guest.
|
||
|
||
For compatibility the old style is still supported.
|
||
|
||
=head1 LOG FILES
|
||
|
||
To list out the log files from guests, see the related tool
|
||
L<virt-log(1)>. It understands binary log formats such as the systemd
|
||
journal.
|
||
|
||
To follow (tail) text log files, use L<virt-tail(1)>.
|
||
|
||
=head1 WINDOWS PATHS
|
||
|
||
C<virt-cat> has a limited ability to understand Windows drive letters
|
||
and paths (eg. F<E:\foo\bar.txt>).
|
||
|
||
If and only if the guest is running Windows then:
|
||
|
||
=over 4
|
||
|
||
=item *
|
||
|
||
Drive letter prefixes like C<C:> are resolved against the
|
||
Windows Registry to the correct filesystem.
|
||
|
||
=item *
|
||
|
||
Any backslash (C<\>) characters in the path are replaced
|
||
with forward slashes so that libguestfs can process it.
|
||
|
||
=item *
|
||
|
||
The path is resolved case insensitively to locate the file
|
||
that should be displayed.
|
||
|
||
=back
|
||
|
||
There are some known shortcomings:
|
||
|
||
=over 4
|
||
|
||
=item *
|
||
|
||
Some NTFS symbolic links may not be followed correctly.
|
||
|
||
=item *
|
||
|
||
NTFS junction points that cross filesystems are not followed.
|
||
|
||
=back
|
||
|
||
=head1 USING GUESTFISH
|
||
|
||
L<guestfish(1)> is a more powerful, lower level tool which you can use
|
||
when C<virt-cat> doesn't work.
|
||
|
||
Using C<virt-cat> is approximately equivalent to doing:
|
||
|
||
guestfish --ro -i -d domname download file -
|
||
|
||
where C<domname> is the name of the libvirt guest, and C<file> is the
|
||
full path to the file. Note the final C<-> (meaning "output to
|
||
stdout").
|
||
|
||
The command above uses libguestfs’s guest inspection feature and so
|
||
does not work on guests that libguestfs cannot inspect, or on things
|
||
like arbitrary disk images that don't contain guests. To display a
|
||
file from a disk image directly, use:
|
||
|
||
guestfish --ro -a disk.img -m /dev/sda1 download file -
|
||
|
||
where F<disk.img> is the disk image, F</dev/sda1> is the filesystem
|
||
within the disk image, and C<file> is the full path to the file.
|
||
|
||
=head1 EXIT STATUS
|
||
|
||
This program returns 0 if successful, or non-zero if there was an
|
||
error.
|
||
|
||
=head1 SEE ALSO
|
||
|
||
L<guestfs(3)>,
|
||
L<guestfish(1)>,
|
||
L<virt-copy-out(1)>,
|
||
L<virt-edit(1)>,
|
||
L<virt-log(1)>,
|
||
L<virt-tail(1)>,
|
||
L<virt-tar-out(1)>,
|
||
L<http://libguestfs.org/>.
|
||
|
||
=head1 AUTHOR
|
||
|
||
Richard W.M. Jones L<http://people.redhat.com/~rjones/>
|
||
|
||
=head1 COPYRIGHT
|
||
|
||
Copyright (C) 2010-2012 Red Hat Inc.
|