71814ccaecde6e54fe854c72b5d1cf69cf588043
[libguestfs.git] / fish / guestfish.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 guestfish - the libguestfs Filesystem Interactive SHell
6
7 =head1 SYNOPSIS
8
9  guestfish [--options] [commands]
10
11  guestfish
12
13  guestfish [--ro|--rw] -a disk.img
14
15  guestfish [--ro|--rw] -a disk.img -m dev[:mountpoint]
16
17  guestfish -d libvirt-domain
18
19  guestfish [--ro|--rw] -a disk.img -i
20
21  guestfish -d libvirt-domain -i
22
23 =head1 WARNING
24
25 Using guestfish in read/write mode on live virtual machines can be
26 dangerous, potentially causing disk corruption.  Use the I<--ro>
27 (read-only) option to use guestfish safely if the disk image or
28 virtual machine might be live.
29
30 =head1 DESCRIPTION
31
32 Guestfish is a shell and command-line tool for examining and modifying
33 virtual machine filesystems.  It uses libguestfs and exposes all of
34 the functionality of the guestfs API, see L<guestfs(3)>.
35
36 Guestfish gives you structured access to the libguestfs API, from
37 shell scripts or the command line or interactively.  If you want to
38 rescue a broken virtual machine image, you should look at the
39 L<virt-rescue(1)> command.
40
41 =head1 EXAMPLES
42
43 =head2 As an interactive shell
44
45  $ guestfish
46  
47  Welcome to guestfish, the libguestfs filesystem interactive shell for
48  editing virtual machine filesystems.
49  
50  Type: 'help' for a list of commands
51        'man' to read the manual
52        'quit' to quit the shell
53  
54  ><fs> add-ro disk.img
55  ><fs> run
56  ><fs> list-filesystems
57  /dev/sda1: ext4
58  /dev/vg_guest/lv_root: ext4
59  /dev/vg_guest/lv_swap: swap
60  ><fs> mount /dev/vg_guest/lv_root /
61  ><fs> cat /etc/fstab
62  # /etc/fstab
63  # Created by anaconda
64  [...]
65  ><fs> exit
66
67 =head2 From shell scripts
68
69 Create a new C</etc/motd> file in a guest or disk image:
70
71  guestfish <<_EOF_
72  add disk.img
73  run
74  mount /dev/vg_guest/lv_root /
75  write /etc/motd "Welcome, new users"
76  _EOF_
77
78 List the LVM logical volumes in a disk image:
79
80  guestfish -a disk.img --ro <<_EOF_
81  run
82  lvs
83  _EOF_
84
85 List all the filesystems in a disk image:
86
87  guestfish -a disk.img --ro <<_EOF_
88  run
89  list-filesystems
90  _EOF_
91
92 =head2 On one command line
93
94 Update C</etc/resolv.conf> in a guest:
95
96  guestfish \
97    add disk.img : run : mount /dev/vg_guest/lv_root / : \
98    write /etc/resolv.conf "nameserver 1.2.3.4"
99
100 Edit C</boot/grub/grub.conf> interactively:
101
102  guestfish --rw --add disk.img \
103    --mount /dev/vg_guest/lv_root \
104    --mount /dev/sda1:/boot \
105    edit /boot/grub/grub.conf
106
107 =head2 Mount disks automatically
108
109 Use the I<-i> option to automatically mount the
110 disks from a virtual machine:
111
112  guestfish --ro -a disk.img -i cat /etc/group
113
114  guestfish --ro -d libvirt-domain -i cat /etc/group
115
116 Another way to edit C</boot/grub/grub.conf> interactively is:
117
118  guestfish --rw -a disk.img -i edit /boot/grub/grub.conf
119
120 =head2 As a script interpreter
121
122 Create a 100MB disk containing an ext2-formatted partition:
123
124  #!/usr/bin/guestfish -f
125  sparse test1.img 100M
126  run
127  part-disk /dev/sda mbr
128  mkfs ext2 /dev/sda1
129
130 =head2 Start with a prepared disk
131
132 An alternate way to create a 100MB disk called C<test1.img> containing
133 a single ext2-formatted partition:
134
135  guestfish -N fs
136
137 To list what is available do:
138
139  guestfish -N help | less
140
141 =head2 Remote control
142
143  eval "`guestfish --listen`"
144  guestfish --remote add-ro disk.img
145  guestfish --remote run
146  guestfish --remote lvs
147
148 =head1 OPTIONS
149
150 =over 4
151
152 =item B<--help>
153
154 Displays general help on options.
155
156 =item B<-h>
157
158 =item B<--cmd-help>
159
160 Lists all available guestfish commands.
161
162 =item B<-h cmd>
163
164 =item B<--cmd-help cmd>
165
166 Displays detailed help on a single command C<cmd>.
167
168 =item B<-a image>
169
170 =item B<--add image>
171
172 Add a block device or virtual machine image to the shell.
173
174 The format of the disk image is auto-detected.  To override this and
175 force a particular format use the I<--format=..> option.
176
177 Using this flag is mostly equivalent to using the C<add> command,
178 with C<readonly:true> if the I<--ro> flag was given, and
179 with C<format:...> if the I<--format:...> flag was given.
180
181 =item B<-c URI>
182
183 =item B<--connect URI>
184
185 When used in conjunction with the I<-d> option, this specifies
186 the libvirt URI to use.  The default is to use the default libvirt
187 connection.
188
189 =item B<--csh>
190
191 If using the I<--listen> option and a csh-like shell, use this option.
192 See section L</REMOTE CONTROL AND CSH> below.
193
194 =item B<-d libvirt-domain>
195
196 =item B<--domain libvirt-domain>
197
198 Add disks from the named libvirt domain.  If the I<--ro> option is
199 also used, then any libvirt domain can be used.  However in write
200 mode, only libvirt domains which are shut down can be named here.
201
202 Using this flag is mostly equivalent to using the C<add-domain> command,
203 with C<readonly:true> if the I<--ro> flag was given, and
204 with C<format:...> if the I<--format:...> flag was given.
205
206 =item B<-D>
207
208 =item B<--no-dest-paths>
209
210 Don't tab-complete paths on the guest filesystem.  It is useful to be
211 able to hit the tab key to complete paths on the guest filesystem, but
212 this causes extra "hidden" guestfs calls to be made, so this option is
213 here to allow this feature to be disabled.
214
215 =item B<--echo-keys>
216
217 When prompting for keys and passphrases, guestfish normally turns
218 echoing off so you cannot see what you are typing.  If you are not
219 worried about Tempest attacks and there is no one else in the room
220 you can specify this flag to see what you are typing.
221
222 =item B<-f file>
223
224 =item B<--file file>
225
226 Read commands from C<file>.  To write pure guestfish
227 scripts, use:
228
229  #!/usr/bin/guestfish -f
230
231 =item B<--format=raw|qcow2|..>
232
233 =item B<--format>
234
235 The default for the I<-a> option is to auto-detect the format of the
236 disk image.  Using this forces the disk format for I<-a> options which
237 follow on the command line.  Using I<--format> with no argument
238 switches back to auto-detection for subsequent I<-a> options.
239
240 For example:
241
242  guestfish --format=raw -a disk.img
243
244 forces raw format (no auto-detection) for C<disk.img>.
245
246  guestfish --format=raw -a disk.img --format -a another.img
247
248 forces raw format (no auto-detection) for C<disk.img> and reverts to
249 auto-detection for C<another.img>.
250
251 If you have untrusted raw-format guest disk images, you should use
252 this option to specify the disk format.  This avoids a possible
253 security problem with malicious guests (CVE-2010-3851).  See also
254 L</add-drive-opts>.
255
256 =item B<-i>
257
258 =item B<--inspector>
259
260 Using L<virt-inspector(1)> code, inspect the disks looking for
261 an operating system and mount filesystems as they would be
262 mounted on the real virtual machine.
263
264 Typical usage is either:
265
266  guestfish -d myguest -i
267
268 (for an inactive libvirt domain called I<myguest>), or:
269
270  guestfish --ro -d myguest -i
271
272 (for active domains, readonly), or specify the block device directly:
273
274  guestfish --rw -a /dev/Guests/MyGuest -i
275
276 Note that the command line syntax changed slightly over older
277 versions of guestfish.  You can still use the old syntax:
278
279  guestfish [--ro] -i disk.img
280
281  guestfish [--ro] -i libvirt-domain
282
283 Using this flag is mostly equivalent to using the C<inspect-os>
284 command and then using other commands to mount the filesystems that
285 were found.
286
287 =item B<--keys-from-stdin>
288
289 Read key or passphrase parameters from stdin.  The default is
290 to try to read passphrases from the user by opening C</dev/tty>.
291
292 =item B<--listen>
293
294 Fork into the background and listen for remote commands.  See section
295 L</REMOTE CONTROL GUESTFISH OVER A SOCKET> below.
296
297 =item B<-m dev[:mountpoint]>
298
299 =item B<--mount dev[:mountpoint]>
300
301 Mount the named partition or logical volume on the given mountpoint.
302
303 If the mountpoint is omitted, it defaults to C</>.
304
305 You have to mount something on C</> before most commands will work.
306
307 If any I<-m> or I<--mount> options are given, the guest is
308 automatically launched.
309
310 If you don't know what filesystems a disk image contains, you can
311 either run guestfish without this option, then list the partitions,
312 filesystems and LVs available (see L</list-partitions>,
313 L</list-filesystems> and L</lvs> commands), or you can use the
314 L<virt-filesystems(1)> program.
315
316 Using this flag is mostly equivalent to using the C<mount-options>
317 command or the C<mount-ro> command if the I<--ro> flag was given.
318
319 =item B<-n>
320
321 =item B<--no-sync>
322
323 Disable autosync.  This is enabled by default.  See the discussion
324 of autosync in the L<guestfs(3)> manpage.
325
326 =item B<-N type>
327
328 =item B<--new type>
329
330 =item B<-N help>
331
332 Prepare a fresh disk image formatted as "type".  This is an
333 alternative to the I<-a> option: whereas I<-a> adds an existing disk,
334 I<-N> creates a preformatted disk with a filesystem and adds it.
335 See L</PREPARED DISK IMAGES> below.
336
337 =item B<--progress-bars>
338
339 Enable progress bars, even when guestfish is used non-interactively.
340
341 Progress bars are enabled by default when guestfish is used as an
342 interactive shell.
343
344 =item B<--no-progress-bars>
345
346 Disable progress bars.
347
348 =item B<--remote[=pid]>
349
350 Send remote commands to C<$GUESTFISH_PID> or C<pid>.  See section
351 L</REMOTE CONTROL GUESTFISH OVER A SOCKET> below.
352
353 =item B<-r>
354
355 =item B<--ro>
356
357 This changes the I<-a> and I<-m> options so that disks are added and
358 mounts are done read-only (see L<guestfs(3)/guestfs_mount_ro>).
359
360 The option must always be used if the disk image or virtual machine
361 might be running, and is generally recommended in cases where you
362 don't need write access to the disk.
363
364 Note that prepared disk images created with I<-N> are not affected by
365 the I<--ro> option.
366
367 See also L</OPENING DISKS FOR READ AND WRITE> below.
368
369 =item B<--selinux>
370
371 Enable SELinux support for the guest.  See L<guestfs(3)/SELINUX>.
372
373 =item B<-v>
374
375 =item B<--verbose>
376
377 Enable very verbose messages.  This is particularly useful if you find
378 a bug.
379
380 =item B<-V>
381
382 =item B<--version>
383
384 Display the guestfish / libguestfs version number and exit.
385
386 =item B<-w>
387
388 =item B<--rw>
389
390 This option does nothing at the moment.
391 See L</OPENING DISKS FOR READ AND WRITE> below.
392
393 =item B<-x>
394
395 Echo each command before executing it.
396
397 =back
398
399 =head1 COMMANDS ON COMMAND LINE
400
401 Any additional (non-option) arguments are treated as commands to
402 execute.
403
404 Commands to execute should be separated by a colon (C<:>), where the
405 colon is a separate parameter.  Thus:
406
407  guestfish cmd [args...] : cmd [args...] : cmd [args...] ...
408
409 If there are no additional arguments, then we enter a shell, either an
410 interactive shell with a prompt (if the input is a terminal) or a
411 non-interactive shell.
412
413 In either command line mode or non-interactive shell, the first
414 command that gives an error causes the whole shell to exit.  In
415 interactive mode (with a prompt) if a command fails, you can continue
416 to enter commands.
417
418 =head1 USING launch (OR run)
419
420 As with L<guestfs(3)>, you must first configure your guest by adding
421 disks, then launch it, then mount any disks you need, and finally
422 issue actions/commands.  So the general order of the day is:
423
424 =over 4
425
426 =item *
427
428 add or -a/--add
429
430 =item *
431
432 launch (aka run)
433
434 =item *
435
436 mount or -m/--mount
437
438 =item *
439
440 any other commands
441
442 =back
443
444 C<run> is a synonym for C<launch>.  You must C<launch> (or C<run>)
445 your guest before mounting or performing any other commands.
446
447 The only exception is that if any of the I<-i>, I<-m>, I<--mount>,
448 I<-N> or I<--new> options were given then C<run> is done
449 automatically, simply because guestfish can't perform the action you
450 asked for without doing this.
451
452 =head1 OPENING DISKS FOR READ AND WRITE
453
454 The guestfish (and L<guestmount(1)>) options I<--ro> and I<--rw>
455 affect whether the other command line options I<-a>, I<-c>, I<-d>,
456 I<-i> and I<-m> open disk images read-only or for writing.
457
458 In libguestfs E<lt> 1.6.2, guestfish and guestmount defaulted to
459 opening disk images supplied on the command line for write.  To open a
460 disk image read-only you have to do I<-a image --ro>.
461
462 This matters: If you accidentally open a live VM disk image writable
463 then you will cause irreversible disk corruption.
464
465 By libguestfs 1.8 we intend to change the default the other way.  Disk
466 images will be opened read-only.  You will have to either specify
467 I<guestfish --rw> or change a configuration file in order to get write
468 access for disk images specified by those other command line options.
469
470 This version of guestfish has a I<--rw> option which does nothing (it
471 is already the default).  However it is highly recommended that you
472 use this option to indicate that guestfish needs write access, and to
473 prepare your scripts for the day when this option will be required for
474 write access.
475
476 B<Note:> This does I<not> affect commands like L</add> and L</mount>,
477 or any other libguestfs program apart from guestfish and guestmount.
478
479 =head1 QUOTING
480
481 You can quote ordinary parameters using either single or double
482 quotes.  For example:
483
484  add "file with a space.img"
485
486  rm '/file name'
487
488  rm '/"'
489
490 A few commands require a list of strings to be passed.  For these, use
491 a whitespace-separated list, enclosed in quotes.  Strings containing whitespace
492 to be passed through must be enclosed in single quotes.  A literal single quote
493 must be escaped with a backslash.
494
495  vgcreate VG "/dev/sda1 /dev/sdb1"
496  command "/bin/echo 'foo      bar'"
497  command "/bin/echo \'foo\'"
498
499 =head1 OPTIONAL ARGUMENTS
500
501 Some commands take optional arguments.  These arguments appear in this
502 documentation as C<[argname:..]>.  You can use them as in these
503 examples:
504
505  add-drive-opts filename
506
507  add-drive-opts filename readonly:true
508
509  add-drive-opts filename format:qcow2 readonly:false
510
511 Each optional argument can appear at most once.  All optional
512 arguments must appear after the required ones.
513
514 =head1 NUMBERS
515
516 This section applies to all commands which can take integers
517 as parameters.
518
519 =head2 SIZE SUFFIX
520
521 When the command takes a parameter measured in bytes, you can use one
522 of the following suffixes to specify kilobytes, megabytes and larger
523 sizes:
524
525 =over 4
526
527 =item B<k> or B<K> or B<KiB>
528
529 The size in kilobytes (multiplied by 1024).
530
531 =item B<KB>
532
533 The size in SI 1000 byte units.
534
535 =item B<M> or B<MiB>
536
537 The size in megabytes (multiplied by 1048576).
538
539 =item B<MB>
540
541 The size in SI 1000000 byte units.
542
543 =item B<G> or B<GiB>
544
545 The size in gigabytes (multiplied by 2**30).
546
547 =item B<GB>
548
549 The size in SI 10**9 byte units.
550
551 =item B<T> or B<TiB>
552
553 The size in terabytes (multiplied by 2**40).
554
555 =item B<TB>
556
557 The size in SI 10**12 byte units.
558
559 =item B<P> or B<PiB>
560
561 The size in petabytes (multiplied by 2**50).
562
563 =item B<PB>
564
565 The size in SI 10**15 byte units.
566
567 =item B<E> or B<EiB>
568
569 The size in exabytes (multiplied by 2**60).
570
571 =item B<EB>
572
573 The size in SI 10**18 byte units.
574
575 =item B<Z> or B<ZiB>
576
577 The size in zettabytes (multiplied by 2**70).
578
579 =item B<ZB>
580
581 The size in SI 10**21 byte units.
582
583 =item B<Y> or B<YiB>
584
585 The size in yottabytes (multiplied by 2**80).
586
587 =item B<YB>
588
589 The size in SI 10**24 byte units.
590
591 =back
592
593 For example:
594
595  truncate-size /file 1G
596
597 would truncate the file to 1 gigabyte.
598
599 Be careful because a few commands take sizes in kilobytes or megabytes
600 (eg. the parameter to L</memsize> is specified in megabytes already).
601 Adding a suffix will probably not do what you expect.
602
603 =head2 OCTAL AND HEXADECIMAL NUMBERS
604
605 For specifying the radix (base) use the C convention: C<0> to prefix
606 an octal number or C<0x> to prefix a hexadecimal number.  For example:
607
608  1234      decimal number 1234
609  02322     octal number, equivalent to decimal 1234
610  0x4d2     hexadecimal number, equivalent to decimal 1234
611
612 When using the C<chmod> command, you almost always want to specify an
613 octal number for the mode, and you must prefix it with C<0> (unlike
614 the Unix L<chmod(1)> program):
615
616  chmod 0777 /public  # OK
617  chmod 777 /public   # WRONG! This is mode 777 decimal = 01411 octal.
618
619 Commands that return numbers usually print them in decimal, but
620 some commands print numbers in other radices (eg. C<umask> prints
621 the mode in octal, preceeded by C<0>).
622
623 =head1 WILDCARDS AND GLOBBING
624
625 Neither guestfish nor the underlying guestfs API performs
626 wildcard expansion (globbing) by default.  So for example the
627 following will not do what you expect:
628
629  rm-rf /home/*
630
631 Assuming you don't have a directory called literally C</home/*>
632 then the above command will return an error.
633
634 To perform wildcard expansion, use the C<glob> command.
635
636  glob rm-rf /home/*
637
638 runs C<rm-rf> on each path that matches (ie. potentially running
639 the command many times), equivalent to:
640
641  rm-rf /home/jim
642  rm-rf /home/joe
643  rm-rf /home/mary
644
645 C<glob> only works on simple guest paths and not on device names.
646
647 If you have several parameters, each containing a wildcard, then glob
648 will perform a Cartesian product.
649
650 =head1 COMMENTS
651
652 Any line which starts with a I<#> character is treated as a comment
653 and ignored.  The I<#> can optionally be preceeded by whitespace,
654 but B<not> by a command.  For example:
655
656  # this is a comment
657          # this is a comment
658  foo # NOT a comment
659
660 Blank lines are also ignored.
661
662 =head1 RUNNING COMMANDS LOCALLY
663
664 Any line which starts with a I<!> character is treated as a command
665 sent to the local shell (C</bin/sh> or whatever L<system(3)> uses).
666 For example:
667
668  !mkdir local
669  tgz-out /remote local/remote-data.tar.gz
670
671 will create a directory C<local> on the host, and then export
672 the contents of C</remote> on the mounted filesystem to
673 C<local/remote-data.tar.gz>.  (See C<tgz-out>).
674
675 To change the local directory, use the C<lcd> command.  C<!cd> will
676 have no effect, due to the way that subprocesses work in Unix.
677
678 =head1 PIPES
679
680 Use C<command E<lt>spaceE<gt> | command> to pipe the output of the
681 first command (a guestfish command) to the second command (any host
682 command).  For example:
683
684  cat /etc/passwd | awk -F: '$3 == 0 { print }'
685
686 (where C<cat> is the guestfish cat command, but C<awk> is the host awk
687 program).  The above command would list all accounts in the guest
688 filesystem which have UID 0, ie. root accounts including backdoors.
689 Other examples:
690
691  hexdump /bin/ls | head
692  list-devices | tail -1
693  tgz-out / - | tar ztf -
694
695 The space before the pipe symbol is required, any space after the pipe
696 symbol is optional.  Everything after the pipe symbol is just passed
697 straight to the host shell, so it can contain redirections, globs and
698 anything else that makes sense on the host side.
699
700 To use a literal argument which begins with a pipe symbol, you have
701 to quote it, eg:
702
703  echo "|"
704
705 =head1 HOME DIRECTORIES
706
707 If a parameter starts with the character C<~> then the tilde may be
708 expanded as a home directory path (either C<~> for the current user's
709 home directory, or C<~user> for another user).
710
711 Note that home directory expansion happens for users known I<on the
712 host>, not in the guest filesystem.
713
714 To use a literal argument which begins with a tilde, you have to quote
715 it, eg:
716
717  echo "~"
718
719 =head1 ENCRYPTED DISKS
720
721 Libguestfs has some support for Linux guests encrypted according to
722 the Linux Unified Key Setup (LUKS) standard, which includes nearly all
723 whole disk encryption systems used by modern Linux guests.  Currently
724 only LVM-on-LUKS is supported.
725
726 Identify encrypted block devices and partitions using L</vfs-type>:
727
728  ><fs> vfs-type /dev/sda2
729  crypto_LUKS
730
731 Then open those devices using L</luks-open>.  This creates a
732 device-mapper device called C</dev/mapper/luksdev>.
733
734  ><fs> luks-open /dev/sda2 luksdev
735  Enter key or passphrase ("key"): <enter the passphrase>
736
737 Finally you have to tell LVM to scan for volume groups on
738 the newly created mapper device:
739
740  vgscan
741  vg-activate-all true
742
743 The logical volume(s) can now be mounted in the usual way.
744
745 Before closing a LUKS device you must unmount any logical volumes on
746 it and deactivate the volume groups by calling C<vg-activate false VG>
747 on each one.  Then you can close the mapper device:
748
749  vg-activate false /dev/VG
750  luks-close /dev/mapper/luksdev
751
752 =head1 WINDOWS PATHS
753
754 If a path is prefixed with C<win:> then you can use Windows-style
755 paths (with some limitations).  The following commands are equivalent:
756
757  file /WINDOWS/system32/config/system.LOG
758
759  file win:/windows/system32/config/system.log
760
761  file win:\windows\system32\config\system.log
762
763  file WIN:C:\Windows\SYSTEM32\conFIG\SYSTEM.LOG
764
765 This syntax implicitly calls C<case-sensitive-path> (q.v.) so it also
766 handles case insensitivity like Windows would.  This only works in
767 argument positions that expect a path.
768
769 =head1 UPLOADING AND DOWNLOADING FILES
770
771 For commands such as C<upload>, C<download>, C<tar-in>, C<tar-out> and
772 others which upload from or download to a local file, you can use the
773 special filename C<-> to mean "from stdin" or "to stdout".  For example:
774
775  upload - /foo
776
777 reads stdin and creates from that a file C</foo> in the disk image,
778 and:
779
780  tar-out /etc - | tar tf -
781
782 writes the tarball to stdout and then pipes that into the external
783 "tar" command (see L</PIPES>).
784
785 When using C<-> to read from stdin, the input is read up to the end of
786 stdin.  You can also use a special "heredoc"-like syntax to read up to
787 some arbitrary end marker:
788
789  upload -<<END /foo
790  input line 1
791  input line 2
792  input line 3
793  END
794
795 Any string of characters can be used instead of C<END>.  The end
796 marker must appear on a line of its own, without any preceeding or
797 following characters (not even spaces).
798
799 Note that the C<-E<lt>E<lt>> syntax only applies to parameters used to
800 upload local files (so-called "FileIn" parameters in the generator).
801
802 =head1 EXIT ON ERROR BEHAVIOUR
803
804 By default, guestfish will ignore any errors when in interactive mode
805 (ie. taking commands from a human over a tty), and will exit on the
806 first error in non-interactive mode (scripts, commands given on the
807 command line).
808
809 If you prefix a command with a I<-> character, then that command will
810 not cause guestfish to exit, even if that (one) command returns an
811 error.
812
813 =head1 REMOTE CONTROL GUESTFISH OVER A SOCKET
814
815 Guestfish can be remote-controlled over a socket.  This is useful
816 particularly in shell scripts where you want to make several different
817 changes to a filesystem, but you don't want the overhead of starting
818 up a guestfish process each time.
819
820 Start a guestfish server process using:
821
822  eval "`guestfish --listen`"
823
824 and then send it commands by doing:
825
826  guestfish --remote cmd [...]
827
828 To cause the server to exit, send it the exit command:
829
830  guestfish --remote exit
831
832 Note that the server will normally exit if there is an error in a
833 command.  You can change this in the usual way.  See section
834 L</EXIT ON ERROR BEHAVIOUR>.
835
836 =head2 CONTROLLING MULTIPLE GUESTFISH PROCESSES
837
838 The C<eval> statement sets the environment variable C<$GUESTFISH_PID>,
839 which is how the I<--remote> option knows where to send the commands.
840 You can have several guestfish listener processes running using:
841
842  eval "`guestfish --listen`"
843  pid1=$GUESTFISH_PID
844  eval "`guestfish --listen`"
845  pid2=$GUESTFISH_PID
846  ...
847  guestfish --remote=$pid1 cmd
848  guestfish --remote=$pid2 cmd
849
850 =head2 REMOTE CONTROL AND CSH
851
852 When using csh-like shells (csh, tcsh etc) you have to add the
853 I<--csh> option:
854
855  eval "`guestfish --listen --csh`"
856
857 =head2 REMOTE CONTROL DETAILS
858
859 Remote control happens over a Unix domain socket called
860 C</tmp/.guestfish-$UID/socket-$PID>, where C<$UID> is the effective
861 user ID of the process, and C<$PID> is the process ID of the server.
862
863 Guestfish client and server versions must match exactly.
864
865 =head1 PREPARED DISK IMAGES
866
867 Use the I<-N type> or I<--new type> parameter to select one of a set
868 of preformatted disk images that guestfish can make for you to save
869 typing.  This is particularly useful for testing purposes.  This
870 option is used instead of the I<-a> option, and like I<-a> can appear
871 multiple times (and can be mixed with I<-a>).
872
873 The new disk is called C<test1.img> for the first I<-N>, C<test2.img>
874 for the second and so on.  Existing files in the current directory are
875 I<overwritten>.
876
877 The type briefly describes how the disk should be sized, partitioned,
878 how filesystem(s) should be created, and how content should be added.
879 Optionally the type can be followed by extra parameters, separated by
880 C<:> (colon) characters.  For example, I<-N fs> creates a default
881 100MB, sparsely-allocated disk, containing a single partition, with
882 the partition formatted as ext2.  I<-N fs:ext4:1G> is the same, but
883 for an ext4 filesystem on a 1GB disk instead.
884
885 To list the available types and any extra parameters they take, run:
886
887  guestfish -N help | less
888
889 Note that the prepared filesystem is not mounted.  You would usually
890 have to use the C<mount /dev/sda1 /> command or add the
891 I<-m /dev/sda1> option.
892
893 If any I<-N> or I<--new> options are given, the guest is automatically
894 launched.
895
896 =head2 EXAMPLES
897
898 Create a 100MB disk with an ext4-formatted partition:
899
900  guestfish -N fs:ext4
901
902 Create a 32MB disk with a VFAT-formatted partition, and mount it:
903
904  guestfish -N fs:vfat:32M -m /dev/sda1
905
906 Create a blank 200MB disk:
907
908  guestfish -N disk:200M
909
910 =head1 PROGRESS BARS
911
912 Some (not all) long-running commands send progress notification
913 messages as they are running.  Guestfish turns these messages into
914 progress bars.
915
916 When a command that supports progress bars takes longer than two
917 seconds to run, and if progress bars are enabled, then you will see
918 one appearing below the command:
919
920  ><fs> copy-size /large-file /another-file 2048M
921  / 10% [#####-----------------------------------------] 00:30
922
923 The spinner on the left hand side moves round once for every progress
924 notification received from the backend.  This is a (reasonably) golden
925 assurance that the command is "doing something" even if the progress
926 bar is not moving, because the command is able to send the progress
927 notifications.  When the bar reaches 100% and the command finishes,
928 the spinner disappears.
929
930 Progress bars are enabled by default when guestfish is used
931 interactively.  You can enable them even for non-interactive modes
932 using I<--progress-bars>, and you can disable them completely using
933 I<--no-progress-bars>.
934
935 =head1 GUESTFISH COMMANDS
936
937 The commands in this section are guestfish convenience commands, in
938 other words, they are not part of the L<guestfs(3)> API.
939
940 =head2 help
941
942  help
943  help cmd
944
945 Without any parameter, this provides general help.
946
947 With a C<cmd> parameter, this displays detailed help for that command.
948
949 =head2 quit | exit
950
951 This exits guestfish.  You can also use C<^D> key.
952
953 @FISH_COMMANDS@
954
955 =head1 COMMANDS
956
957 @ACTIONS@
958
959 =head1 EXIT CODE
960
961 guestfish returns 0 if the commands completed without error, or
962 1 if there was an error.
963
964 =head1 ENVIRONMENT VARIABLES
965
966 =over 4
967
968 =item EDITOR
969
970 The C<edit> command uses C<$EDITOR> as the editor.  If not
971 set, it uses C<vi>.
972
973 =item GUESTFISH_PID
974
975 Used with the I<--remote> option to specify the remote guestfish
976 process to control.  See section
977 L</REMOTE CONTROL GUESTFISH OVER A SOCKET>.
978
979 =item HEXEDITOR
980
981 The L</hexedit> command uses C<$HEXEDITOR> as the external hex
982 editor.  If not specified, the external L<hexedit(1)> program
983 is used.
984
985 =item HOME
986
987 If compiled with GNU readline support, various files in the
988 home directory can be used.  See L</FILES>.
989
990 =item LIBGUESTFS_APPEND
991
992 Pass additional options to the guest kernel.
993
994 =item LIBGUESTFS_DEBUG
995
996 Set C<LIBGUESTFS_DEBUG=1> to enable verbose messages.  This has the
997 same effect as using the B<-v> option.
998
999 =item LIBGUESTFS_MEMSIZE
1000
1001 Set the memory allocated to the qemu process, in megabytes.  For
1002 example:
1003
1004  LIBGUESTFS_MEMSIZE=700
1005
1006 =item LIBGUESTFS_PATH
1007
1008 Set the path that guestfish uses to search for kernel and initrd.img.
1009 See the discussion of paths in L<guestfs(3)>.
1010
1011 =item LIBGUESTFS_QEMU
1012
1013 Set the default qemu binary that libguestfs uses.  If not set, then
1014 the qemu which was found at compile time by the configure script is
1015 used.
1016
1017 =item LIBGUESTFS_TRACE
1018
1019 Set C<LIBGUESTFS_TRACE=1> to enable command traces.
1020
1021 =item PAGER
1022
1023 The C<more> command uses C<$PAGER> as the pager.  If not
1024 set, it uses C<more>.
1025
1026 =item TMPDIR
1027
1028 Location of temporary directory, defaults to C</tmp>.
1029
1030 If libguestfs was compiled to use the supermin appliance then the
1031 real appliance is cached in this directory, shared between all
1032 handles belonging to the same EUID.  You can use C<$TMPDIR> to
1033 configure another directory to use in case C</tmp> is not large
1034 enough.
1035
1036 =back
1037
1038 =head1 FILES
1039
1040 =over 4
1041
1042 =item $HOME/.guestfish
1043
1044 If compiled with GNU readline support, then the command history
1045 is saved in this file.
1046
1047 =item $HOME/.inputrc
1048
1049 =item /etc/inputrc
1050
1051 If compiled with GNU readline support, then these files can be used to
1052 configure readline.  For further information, please see
1053 L<readline(3)/INITIALIZATION FILE>.
1054
1055 To write rules which only apply to guestfish, use:
1056
1057  $if guestfish
1058  ...
1059  $endif
1060
1061 Variables that you can set in inputrc that change the behaviour
1062 of guestfish in useful ways include:
1063
1064 =over 4
1065
1066 =item completion-ignore-case (default: on)
1067
1068 By default, guestfish will ignore case when tab-completing
1069 paths on the disk.  Use:
1070
1071  set completion-ignore-case off
1072
1073 to make guestfish case sensitive.
1074
1075 =back
1076
1077 =item test1.img
1078
1079 =item test2.img (etc)
1080
1081 When using the C<-N> or C<--new> option, the prepared disk or
1082 filesystem will be created in the file C<test1.img> in the current
1083 directory.  The second use of C<-N> will use C<test2.img> and so on.
1084 Any existing file with the same name will be overwritten.
1085
1086 =back
1087
1088 =head1 SEE ALSO
1089
1090 L<guestfs(3)>,
1091 L<http://libguestfs.org/>,
1092 L<virt-cat(1)>,
1093 L<virt-df(1)>,
1094 L<virt-edit(1)>,
1095 L<virt-filesystems(1)>,
1096 L<virt-inspector(1)>,
1097 L<virt-list-filesystems(1)>,
1098 L<virt-list-partitions(1)>,
1099 L<virt-ls(1)>,
1100 L<virt-make-fs(1)>,
1101 L<virt-rescue(1)>,
1102 L<virt-resize(1)>,
1103 L<virt-tar(1)>,
1104 L<virt-win-reg(1)>,
1105 L<hexedit(1)>.
1106
1107 =head1 AUTHORS
1108
1109 Richard W.M. Jones (C<rjones at redhat dot com>)
1110
1111 =head1 COPYRIGHT
1112
1113 Copyright (C) 2009-2010 Red Hat Inc.
1114 L<http://libguestfs.org/>
1115
1116 This program is free software; you can redistribute it and/or modify
1117 it under the terms of the GNU General Public License as published by
1118 the Free Software Foundation; either version 2 of the License, or
1119 (at your option) any later version.
1120
1121 This program is distributed in the hope that it will be useful,
1122 but WITHOUT ANY WARRANTY; without even the implied warranty of
1123 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1124 GNU General Public License for more details.
1125
1126 You should have received a copy of the GNU General Public License
1127 along with this program; if not, write to the Free Software
1128 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.