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

📄 start.pl

📁 bind 9.3结合mysql数据库
💻 PL
字号:
#!/usr/bin/perl -w## Copyright (C) 2004  Internet Systems Consortium, Inc. ("ISC")# Copyright (C) 2001  Internet Software Consortium.## Permission to use, copy, modify, and distribute this software for any# purpose with or without fee is hereby granted, provided that the above# copyright notice and this permission notice appear in all copies.## THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR# PERFORMANCE OF THIS SOFTWARE.# $Id: start.pl,v 1.3.206.2 2004/03/10 02:55:53 marka Exp $# Framework for starting test servers.# Based on the type of server specified, check for port availability, remove# temporary files, start the server, and verify that the server is running.# If a server is specified, start it. Otherwise, start all servers for test.use strict;use Cwd 'abs_path';use Getopt::Long;# Option handling#   --noclean test [server [options]]##   --noclean - Do not cleanup files in server directory#   test - name of the test directory#   server - name of the server directory#   options - alternate options for the servermy $usage = "usage: $0 [--noclean] test-directory [server-directory [server-options]]";my $noclean;GetOptions('noclean' => \$noclean);my $test = $ARGV[0];my $server = $ARGV[1];my $options = $ARGV[2];if (!$test) {	print "$usage\n";}if (!-d $test) {	print "No test directory: \"$test\"\n";}if ($server && !-d $server) {	print "No server directory: \"$test\"\n";}# Global variablesmy $topdir = abs_path("$test/..");my $testdir = abs_path("$test");my $NAMED = $ENV{'NAMED'};my $LWRESD = $ENV{'LWRESD'};my $DIG = $ENV{'DIG'};my $PERL = $ENV{'PERL'};# Start the server(s)if ($server) {	if ($server =~ /^ns/) {		&check_ports($server);	}	&start_server($server, $options);	if ($server =~ /^ns/) {		&verify_server($server);	}} else {	# Determine which servers need to be started for this test.	opendir DIR, $testdir;	my @files = sort readdir DIR;	closedir DIR;	my @ns = grep /^ns[0-9]*$/, @files;	my @lwresd = grep /^lwresd[0-9]*$/, @files;	my @ans = grep /^ans[0-9]*$/, @files;	# Start the servers we found.	&check_ports();	foreach (@ns, @lwresd, @ans) {		&start_server($_);	}	foreach (@ns) {		&verify_server($_);	}}# Subroutinessub check_ports {	my $server = shift;	my $options = "";	if ($server && $server =~ /(\d+)$/) {		$options = "-i $1";	}	my $tries = 0;	while (1) {		my $return = system("$PERL $topdir/testsock.pl -p 5300 $options");		last if ($return == 0);		if (++$tries > 4) {			print "$0: could not bind to server addresses, still running?\n";			print "I:server sockets not available\n";			print "R:FAIL\n";			system("$PERL $topdir/stop.pl $testdir"); # Is this the correct behavior?			exit 1;		}		print "I:Couldn't bind to socket (yet)\n";		sleep 2;	}}sub start_server {	my $server = shift;	my $options = shift;	my $cleanup_files;	my $command;	my $pid_file;	if ($server =~ /^ns/) {		$cleanup_files = "{*.jnl,*.bk,*.st,named.run}";		$command = "$NAMED ";		if ($options) {			$command .= "$options";		} else {			$command .= "-m record -c named.conf -d 99 -g";		}		$command .= " >named.run 2>&1 &";		$pid_file = "named.pid";	} elsif ($server =~ /^lwresd/) {		$cleanup_files = "{lwresd.run}";		$command = "$LWRESD ";		if ($options) {			$command .= "$options";		} else {			$command .= "-m record -C resolv.conf -d 99 -g -i lwresd.pid -P 9210 -p 5300";		}		$command .= " >lwresd.run 2>&1 &";		$pid_file = "lwresd.pid";	} elsif ($server =~ /^ans/) {		$cleanup_files = "{ans.run}";		$command = "$PERL ./ans.pl ";		if ($options) {			$command .= "$options";		} else {			$command .= "";		}		$command .= " >ans.run 2>&1 &";		$pid_file = "ans.pid";	} else {		print "I:Unknown server type $server\n";		print "R:FAIL\n";		system "$PERL $topdir/stop.pl $testdir";		exit 1;	}	#               print "I:starting server $server\n";	chdir "$testdir/$server";	unless ($noclean) {		unlink glob $cleanup_files;	}	system "$command";	my $tries = 0;	while (!-f $pid_file) {		if (++$tries > 14) {			print "I:Couldn't start server $server\n";			print "R:FAIL\n";			system "$PERL $topdir/stop.pl $testdir";			exit 1;		}		sleep 1;	}}sub verify_server {	my $server = shift;	my $n = $server;	$n =~ s/^ns//;	my $tries = 0;	while (1) {		my $return = system("$DIG +tcp +noadd +nosea +nostat +noquest +nocomm +nocmd -p 5300 version.bind. chaos txt \@10.53.0.$n > dig.out");		last if ($return == 0);		print `grep ";" dig.out`;		if (++$tries >= 30) {			print "I:no response from $server\n";			print "R:FAIL\n";			system("$PERL $topdir/stop.pl $testdir");			exit 1;		}		sleep 2;	}	unlink "dig.out";}

⌨️ 快捷键说明

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