#!/usr/bin/perl use strict; use Expect; #close(STDERR); (my $qemu = Expect->spawn("./qemu.sh")) or die "Failed to spawn qemu: $!"; #$qemu->log_stdout(0); my $shprompt = "qemu:~# "; expect("login: "); swtch(); shell("root\n"); savevm(); shell("touch a\n"); shell("ls\n"); savevm(); shell("touch b\n"); shell("ls\n"); savevm(); shell("touch c\n"); shell("ls\n"); savevm(); my $desired_save = 2; # 0-indexed loadvm($desired_save*3860 . "," . "3860"); shell("ls\n"); sub savevm { print $qemu "savevm dump1\n"; expect(); } sub loadvm { print $qemu "loadvm $_[0]\n"; expect(); } sub shell { swtch(); print $qemu $_[0]; expect($shprompt); swtch(); expect(); } sub swtch { print $qemu "\cac"; } sub expect { if(!defined $_[0]) { $_[0] = "(qemu) "; } unless ($qemu->expect(120,"$_[0]")) { print "qemu died: ", $qemu->exp_error(), "\n"; exit(0); } }