From 3e7826fb0a6e5ed84a6d4a12a81d77ac82301328 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Tue, 20 Nov 2007 11:18:46 +0000 Subject: [PATCH] r244@brr: dpavlin | 2007-11-20 12:18:29 +0100 support issuing command to multiple CPEs at the same time git-svn-id: https://perl-cwmp.googlecode.com/svn/trunk@215 836a5e1a-633d-0410-964b-294494ad4392 --- bin/cpe-queue.pl | 169 ++++++++++++++++++++++++++--------------------- 1 file changed, 93 insertions(+), 76 deletions(-) diff --git a/bin/cpe-queue.pl b/bin/cpe-queue.pl index 7e2e89a..b378405 100755 --- a/bin/cpe-queue.pl +++ b/bin/cpe-queue.pl @@ -21,103 +21,120 @@ GetOptions( 'list!' => \$list, ); -my $id = shift @ARGV || die "usage: $0 CPE_id [--protocol-dump]\n"; +die "usage: $0 CPE_id [--protocol-dump]\n" unless @ARGV; -$id =~ s!^.*queue/+!!; -$id =~ s!/+$!!; #! +foreach my $id ( @ARGV ) { -die "ID isn't valid: $id\n" unless $id =~ m/^\w+$/; + $id =~ s!^.*queue/+!!; + $id =~ s!/+$!!; #! -my $q = CWMP::Queue->new({ id => $id, debug => $debug }); + die "ID isn't valid: $id\n" unless $id =~ m/^\w+$/; + my $q = CWMP::Queue->new({ id => $id, debug => $debug }); -if ( $protocol_dump ) { - warn "generating dump of xml protocol with CPE\n"; + if ( $protocol_dump ) { - $q->enqueue( 'GetRPCMethods' ); + warn "generating dump of xml protocol with CPE\n"; - $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.DeviceInfo.SerialNumber', 0 ] ); - $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.DeviceInfo.', 1 ] ); + $q->enqueue( 'GetRPCMethods' ); - $q->enqueue( 'GetParameterValues', [ - 'InternetGatewayDevice.DeviceInfo.SerialNumber', - 'InternetGatewayDevice.DeviceInfo.VendorConfigFile.', - 'InternetGatewayDevice.DeviceInfo.X_000E50_Country', - ] ); - $q->enqueue( 'SetParameterValues', { - 'InternetGatewayDevice.DeviceInfo.ProvisioningCode' => 'test provision', -# 'InternetGatewayDevice.DeviceInfo.X_000E50_Country' => 1, - }); + $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.DeviceInfo.SerialNumber', 0 ] ); + $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.DeviceInfo.', 1 ] ); - $q->enqueue( 'Reboot' ); + $q->enqueue( 'GetParameterValues', [ + 'InternetGatewayDevice.DeviceInfo.SerialNumber', + 'InternetGatewayDevice.DeviceInfo.VendorConfigFile.', + 'InternetGatewayDevice.DeviceInfo.X_000E50_Country', + ] ); + $q->enqueue( 'SetParameterValues', { + 'InternetGatewayDevice.DeviceInfo.ProvisioningCode' => 'test provision', + # 'InternetGatewayDevice.DeviceInfo.X_000E50_Country' => 1, + }); -} - -if ( $list ) { - - warn "list all jobs for $id\n"; + $q->enqueue( 'Reboot' ); - my @active = (); - my @queued = (); - my $hostname = $q->dq->gethostname(); - - sub wanted { - my ($visitcontext, $job) = @_; - - my $data = $job->get_data_path(); - my $nbytes = $job->get_data_size_bytes(); - my $timet = $job->get_time_submitted_secs(); - my $hname = $job->get_hostname_submitted(); - my $jobid = $job->{jobid}; + } - my $text = sprintf ( - "%s (%d bytes)\n Submitted: %s on %s\n", - $jobid, $nbytes, scalar localtime $timet, $hname); + if ( $list ) { + + warn "list all jobs for $id\n"; + + my @active = (); + my @queued = (); + my $hostname = $q->dq->gethostname(); + + sub wanted { + my ($visitcontext, $job) = @_; + + my $data = $job->get_data_path(); + my $nbytes = $job->get_data_size_bytes(); + my $timet = $job->get_time_submitted_secs(); + my $hname = $job->get_hostname_submitted(); + my $jobid = $job->{jobid}; + + my $text = sprintf ( + "%s (%d bytes)\n Submitted: %s on %s\n", + $jobid, $nbytes, scalar localtime $timet, $hname); + + $text .= read_file( $data ) || die "can't open $data: $!"; + + if ($job->{active_pid}) + { + if ($hostname eq $job->{active_host} + && !kill (0, $job->{active_pid})) + { + $text = sprintf ( + "(dead lockfile)\n %s", + $text); + } + else { + $text = sprintf ( + "(pid: %d\@%s)\n %s", + $job->{active_pid}, $job->{active_host}, $text); + } + + push (@active, $text); + } + else { + push (@queued, $text); + } + + $job->finish(); + } - $text .= read_file( $data ) || die "can't open $data: $!"; + $q->dq->visit_all_jobs(\&wanted, undef); + printf "Jobs: active: %d queued: %d\n", + scalar @active, scalar @queued; + + print "Active jobs [", scalar @active, "]\n",join("\n\n", @active) if @active; + print "Queued jobs [", scalar @queued, "]\n",join("\n\n", @queued) if @queued; - if ($job->{active_pid}) - { - if ($hostname eq $job->{active_host} - && !kill (0, $job->{active_pid})) - { - $text = sprintf ( - "(dead lockfile)\n %s", - $text); - } - else { - $text = sprintf ( - "(pid: %d\@%s)\n %s", - $job->{active_pid}, $job->{active_host}, $text); - } + } else { - push (@active, $text); - } - else { - push (@queued, $text); - } + warn "injecting some tests commands\n"; - $job->finish(); - } + $q->enqueue( 'GetRPCMethods' ); - $q->dq->visit_all_jobs(\&wanted, undef); - printf "Jobs: active: %d queued: %d\n", - scalar @active, scalar @queued; - - print "Active jobs [", scalar @active, "]\n",join("\n\n", @active) if @active; - print "Queued jobs [", scalar @queued, "]\n",join("\n\n", @queued) if @queued; + # $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.LANDevice.', 1 ] ); -} else { + # $q->enqueue( 'GetParameterValues', [ + # 'InternetGatewayDevice.', + # ]); - warn "injecting some tests commands\n"; + # $q->enqueue( 'GetParameterNames', [ '.ExternalIPAddress', 1 ] ); -# $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.LANDevice.', 1 ] ); + # $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.', 1 ] ); + # $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.DeviceInfo.', 1 ] ); + # $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.DeviceConfig.', 1 ] ); + # $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.ManagementServer.', 1 ] ); + # $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.Services.', 1 ] ); + # $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.LANDevice.', 1 ] ); -# $q->enqueue( 'GetParameterValues', [ -# 'InternetGatewayDevice.', -# ]); + $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.', 0 ] ); + $q->enqueue( 'GetParameterValues', [ + 'InternetGatewayDevice.', + ]); + } -# $q->enqueue( 'GetParameterNames', [ '.ExternalIPAddress', 1 ] ); - $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.', 1 ] ); } -- 2.20.1