Background papers for NBD talk.
[libguestfs-talks.git] / 2013-centos-dojo / 2400.d / set-root-password.pl
1 #!/usr/bin/perl -w
2
3 use strict;
4 #use Sys::Virt;
5 use Sys::Guestfs;
6
7 my $vm = "dojo";
8 my $newpw = "1234567";
9
10 my $salt;
11 my @chars = ("A".."Z", "a".."z", "0".."9", ".", "/");
12 $salt .= $chars[rand @chars] for 1..16;
13 my $crypted = crypt ($newpw, '$5$' . $salt . '$');
14
15 my $g = Sys::Guestfs->new ();
16 $g->set_trace (1);
17 $g->add_domain ($vm, libvirturi => "qemu:///session");
18 $g->launch ();
19 $g->mount ("/dev/fedora/root", "/");
20
21 my @shadow = $g->read_lines ("/etc/shadow");
22 s/^root:.*?:/root:$crypted:/ foreach @shadow;
23
24 $g->write ("/etc/shadow", join ("\n", @shadow) . "\n");
25 $g->chmod (0, "/etc/shadow");
26
27 $g->touch ("/.autorelabel");