On Mon, Jan 20, 2014 at 04:39:42PM +0100, Olaf Hering
wrote:>
> Is "luks-format" supposed to work with guestfish? Like guestfish
<<EOF
> luks-format /dev/sda4 0
> EOF
>
> Appearently it lacks an option to give the passphrase programmatically.
> Was this option skipped on purpose?
The underlying API takes a passphrase parameter, ie:
guestfs_luks_format (guestfs_h *g,
const char *device,
const char *key, <<-- this one
int keyslot);
However the mapping between the API and guestfish intentionally omits
these key/passphrase parameters. Instead guestfish is supposed to
prompt for a passphrase. It does this using /dev/tty so you have to
have a human type the passphrase.
If you want to do this programmatically [apart from using a pty, tools
like 'expect', or another API eg. C, Perl or whatever], you can use
the guestfish option '--keys-from-stdin'. You still have to work out
a way to supply the passphrase to stdin.
For example:
$ echo 123456 | guestfish -x --keys-from-stdin -N part luks-format /dev/sda1 0
libguestfs: trace: add_drive "test1.img" "format:raw"
libguestfs: trace: add_drive = 0
libguestfs: trace: is_config
libguestfs: trace: is_config = 1
libguestfs: trace: launch
libguestfs: trace: get_tmpdir
libguestfs: trace: get_tmpdir = "/tmp"
libguestfs: trace: get_cachedir
libguestfs: trace: get_cachedir = "/var/tmp"
libguestfs: trace: get_cachedir
libguestfs: trace: get_cachedir = "/var/tmp"
libguestfs: trace: launch = 0
libguestfs: trace: part_disk "/dev/sda" "mbr"
libguestfs: trace: part_disk = 0
libguestfs: trace: luks_format "/dev/sda1" "***" 0
libguestfs: trace: luks_format = 0
libguestfs: trace: shutdown
libguestfs: trace: internal_autosync
libguestfs: trace: internal_autosync = 0
libguestfs: trace: shutdown = 0
libguestfs: trace: close
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming blog: http://rwmj.wordpress.com
Fedora now supports 80 OCaml packages (the OPEN alternative to F#)