X-Git-Url: http://git.rot13.org/?p=perl-cwmp.git;a=blobdiff_plain;f=bin%2Fcpe-queue.pl;h=015875360138f141d5ddc105762d384962fb9763;hp=f991aee4f94bfefacd634c57929854d5048500c2;hb=03eb97317af85b13a1a2c8d0f66685d763a60c32;hpb=12a50bdc9389aa9a6dd5011365c11ed2091106e7 diff --git a/bin/cpe-queue.pl b/bin/cpe-queue.pl index f991aee..0158753 100755 --- a/bin/cpe-queue.pl +++ b/bin/cpe-queue.pl @@ -21,105 +21,127 @@ 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' ); - $q->enqueue( 'GetParameterNames' ); + 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, + }); -} + $q->enqueue( 'Reboot' ); -if ( $list ) { + } - warn "list all jobs for $id\n"; + 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(); + } - my @active = (); - my @queued = (); - my $hostname = $q->dq->gethostname(); + $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; - sub wanted { - my ($visitcontext, $job) = @_; + } else { - 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}; + warn "injecting some tests commands\n"; - my $text = sprintf ( - "%s (%d bytes)\n Submitted: %s on %s\n", - $jobid, $nbytes, scalar localtime $timet, $hname); + $q->enqueue( 'GetRPCMethods' ); - $text .= read_file( $data ) || die "can't open $data: $!"; +# $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.LANDevice.', 1 ] ); - 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); - } + $q->enqueue( 'GetParameterValues', [ + 'InternetGatewayDevice.', + ]); - push (@active, $text); - } - else { - push (@queued, $text); - } +# $q->enqueue( 'GetParameterNames', [ '.ExternalIPAddress', 1 ] ); - $job->finish(); - } - - $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.', 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 ] ); -} else { + $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.', 0 ] ); + $q->enqueue( 'GetParameterValues', [ + 'InternetGatewayDevice.', + ]); - warn "injecting some tests commands\n"; + $q->enqueue( 'GetParameterAttributes', [ + 'InternetGatewayDevice.DeviceInfo.SerialNumber', + 'InternetGatewayDevice.DeviceInfo.SoftwareVersion', + ]); -# $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.LANDevice.', 1 ] ); - -# $q->enqueue( 'GetParameterValues', [ -# 'InternetGatewayDevice.', -# ]); +# $q->enqueue( 'SetParameterAttributes', [ ' + } - $q->enqueue( 'GetParameterNames', [ '.ExternalIPAddress', 1 ] ); - $q->enqueue( 'SetParameterValues', { '.ExternalIPAddress' => '192.168.1.250' }); - $q->enqueue( 'GetParameterNames', [ '.ExternalIPAddress', 1 ] ); }