⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kvm.pm

📁 samba最新软件
💻 PM
字号:
#!/usr/bin/perl# Start a KVM machine and run a number of tests against it.# Copyright (C) 2005-2008 Jelmer Vernooij <jelmer@samba.org># Published under the GNU GPL, v3 or later.package Kvm;use strict;use Cwd qw(abs_path);use FindBin qw($RealBin);use POSIX;sub new($$$$) {	my ($classname, $dc_image, $vdesocket) = @_;	my $self = { 		dc_image => $dc_image,		vdesocket => $vdesocket,	};	bless $self;	return $self;}sub write_kvm_ifup($$$){	my ($self, $path, $ip_prefix) = @_;	open(SCRIPT, ">$path/kvm-ifup");	print SCRIPT <<__EOF__;#!/bin/shPREFIX=$ip_prefix/sbin/ifconfig \$1 \$PREFIX.1 upcat <<EOF>$path/udhcpd.confinterface \$1start 		\$PREFIX.20end		\$PREFIX.20max_leases 1lease_file	$path/udhcpd.leasespidfile	$path/udhcpd.pidEOFtouch $path/udhcpd.leases/usr/sbin/udhcpd $path/udhcpd.confexit 0__EOF__	close(SCRIPT);	chmod(0755, "$path/kvm-ifup");	return ("$path/kvm-ifup", "$path/udhcpd.pid", "$ip_prefix.20");}sub teardown_env($$){	my ($self, $envvars) = @_;	print "Killing kvm instance $envvars->{KVM_PID}\n";	kill 9, $envvars->{KVM_PID};	if (defined($envvars->{DHCPD_PID})) {		print "Killing dhcpd instance $envvars->{DHCPD_PID}\n";		kill 9, $envvars->{DHCPD_PID};	}	return 0;}sub getlog_env($$){	my ($self, $envvars) = @_;	return "";}sub check_env($$){	my ($self, $envvars) = @_;	# FIXME: Check whether $self->{pid} is still running	return 1;}sub read_pidfile($){	my ($path) = @_;	open(PID, $path);	<PID> =~ /([0-9]+)/;	my ($pid) = $1;	close(PID);	return $pid;}sub start($$$){	my ($self, $path, $image) = @_;	my $pidfile = "$path/kvm.pid";	my $opts = (defined($ENV{KVM_OPTIONS})?$ENV{KVM_OPTIONS}:"-nographic");	if (defined($ENV{KVM_SNAPSHOT})) {		$opts .= " -loadvm $ENV{KVM_SNAPSHOT}";	}	my $netopts;	my $dhcp_pid;	my $ip_address;	if ($self->{vdesocket}) {		$netopts = "vde,socket=$self->{vdesocket}";	} else {		my $ifup_script, $dhcpd_pidfile;		($ifup_script, $dhcpd_pidfile, $ip_address) = $self->write_kvm_ifup($path, "192.168.9");		$netopts = "tap,script=$ifup_script";		$dhcp_pid = read_pidfile($dhcpd_pidfile);	}	system("kvm -name \"Samba 4 Test Subject\" $opts -monitor unix:$path/kvm.monitor,server,nowait -daemonize -pidfile $pidfile -snapshot $image -net nic -net $netopts");	return (read_pidfile($pidfile), $dhcp_pid, $ip_address);}sub setup_env($$$){	my ($self, $envname, $path) = @_;	if ($envname eq "dc") {		($self->{dc_pid}, $self->{dc_dhcpd_pid}, $self->{dc_ip}) = $self->start($path, $self->{dc_image});		sub choose_var($$) { 			my ($name, $default) = @_; 			return defined($ENV{"KVM_DC_$name"})?$ENV{"KVM_DC_$name"}:$default; 		}		if ($envname eq "dc") {			return {				KVM_PID => $self->{dc_pid},				DHCPD_PID => $self->{dc_dhcpd_pid},				USERNAME => choose_var("USERNAME", "Administrator"),				PASSWORD => choose_var("PASSWORD", "penguin"),				DOMAIN => choose_var("DOMAIN", "SAMBA"), 				REALM => choose_var("REALM", "SAMBA"), 				SERVER => choose_var("SERVER", "DC"), 				SERVER_IP => $self->{dc_ip},				NETBIOSNAME => choose_var("NETBIOSNAME", "DC"), 				NETBIOSALIAS => choose_var("NETBIOSALIAS", "DC"), 			};		} else {			return undef;		}	} else {		return undef;	}}sub stop($){	my ($self) = @_;}1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -