#!/usr/bin/perl use Sys::Virt; use Sys::Virt::Event; my $uri = shift @ARGV; Sys::Virt::Event::register_default(); my $quit = 0; my $c = Sys::Virt->new(uri => $uri, readonly => 1); sub lifecycle_event { my $conn = shift; my $dom = shift; my $event = shift; my $detail = shift; printf "%s %s %d %d\n", $conn->get_uri, $dom->get_name, $event, $detail; } sub agent_lifecycle_event { my $conn = shift; my $dom = shift; my $state = shift; my $reason = shift; printf "Agent %s %s state=%d reason=%d\n", $conn->get_uri, $dom->get_name, $state, $reason; } $c->domain_event_register_any(undef, Sys::Virt::Domain::EVENT_ID_LIFECYCLE, \&lifecycle_event); $c->domain_event_register_any(undef, Sys::Virt::Domain::EVENT_ID_AGENT_LIFECYCLE, \&agent_lifecycle_event); $c->register_close_callback( sub { my $con = shift ; my $reason = shift ; print "Closed reason=$reason\n"; $quit = 1; }); while (!$quit) { Sys::Virt::Event::run_default(); }