mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 02:38:03 +00:00 
			
		
		
		
	 d824eb2e66
			
		
	
	d824eb2e66
	
	
	
		
			
			The 'use lib' logic happens in the pre-compile stage, so one cannot use normal 'if' logic to use a particular INC. Instead, just make sure that best dir is added to 'use lib' last since it prepends to INC.
		
			
				
	
	
		
			194 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			194 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/perl -w
 | |
| use strict;
 | |
| use warnings;
 | |
| use diagnostics;
 | |
| use Carp;
 | |
| $SIG{ __DIE__  } = sub { Carp::confess( @_ ) };
 | |
| $SIG{ __WARN__ } = sub { Carp::confess( @_ ) };
 | |
| 
 | |
| # Un-buffer output
 | |
| $| = 1;
 | |
| use Getopt::Long;
 | |
| use JSON::XS;
 | |
| use HTTP::Request;
 | |
| use LWP;
 | |
| use LWP::UserAgent;
 | |
| use Data::Dumper;
 | |
| use Time::HiRes qw(usleep);
 | |
| use JSON;
 | |
| use lib '/home/lanforge/scripts';
 | |
| use lib "../";
 | |
| use lib "./";
 | |
| use LANforge::JsonUtils qw(logg err json_request get_links_from get_thru json_post get_port_names flatten_list);
 | |
| 
 | |
| package main;
 | |
| # Default values for ye ole cmd-line args.
 | |
| our $Resource  = 1;
 | |
| our $quiet     = "yes";
 | |
| our $Host      = "localhost";
 | |
| our $Port      = 8080;
 | |
| our $HostUri   = "http://$Host:$Port";
 | |
| our $Web       = LWP::UserAgent->new;
 | |
| our $Decoder   = JSON->new->utf8;
 | |
| our $ssid;
 | |
| our $security;
 | |
| our $passphrase;
 | |
| 
 | |
| my $usage = qq("$0 --action {add|list|show|annotate|del}
 | |
|    # list: lists all device names
 | |
|    # show: shows everything about device
 | |
|    # annotate: updates the note for the device
 | |
|    --note {"double quoted stuff"}
 | |
|    # del:
 | |
|    --name {Device Under Test name}
 | |
|    # when adding, use:
 | |
|    --name {Device Under Test name}
 | |
|    --img {picture name: c:\\stuff.png}
 | |
|    --sw_version {text}
 | |
|    --hw_version {text}
 | |
|    --mgt_ip {1.1.1.1}
 | |
|    --model_num {blanktronix345}
 | |
|    --serial_num {asdf1234}
 | |
|    --serial_port {1.2.ttyS0}
 | |
|    --api_id {0-127}
 | |
|    --lan_port {1.1.eth1}
 | |
|    --wan_port {1.1.eth2}
 | |
|    --ssid1 --passwd1 --ssid2 --passwd2 --ssid3 --passwd3 {stuff}
 | |
| );
 | |
| 
 | |
| 
 | |
| my $action;
 | |
| my $name = "";
 | |
| my $notes = "";
 | |
| my $img_file = "";
 | |
| my $sw_version  = "";
 | |
| my $hw_version = "";
 | |
| my $mgt_ip  = "";
 | |
| my $model_num  = "";
 | |
| my $serial_num  = "";
 | |
| my $serial_port  = "";
 | |
| my $api_id = "";
 | |
| my $lan_port = "";
 | |
| my $wan_port = "";
 | |
| my $ssid1 = "";
 | |
| my $ssid2 = "";
 | |
| my $ssid3 = "";
 | |
| my $passwd1 = "";
 | |
| my $passwd2 = "";
 | |
| my $passwd3 = "";
 | |
| 
 | |
| my $help;
 | |
| ##
 | |
| ##    M A I N
 | |
| ##
 | |
| 
 | |
| GetOptions(   'host=s'          => \$::Host,
 | |
|    'action=s'        => \$action,
 | |
|    'name=s'          => \$name,
 | |
|    'notes=s'         => \$notes,
 | |
|    'img_file=s'      => \$img_file,
 | |
|    'sw_version=s'    => \$sw_version,
 | |
|    'hw_version=s'    => \$hw_version,
 | |
|    'mgt_ip=s'        => \$mgt_ip,
 | |
|    'model_num=s'     => \$model_num,
 | |
|    'serial_num=s'    => \$serial_num,
 | |
|    'serial_port=s'   => \$serial_port,
 | |
|    'api_id=s'        => \$api_id,
 | |
|    'lan_port=s'      => \$lan_port,
 | |
|    'wan_port=s'      => \$wan_port,
 | |
|    'ssid1=s'         => \$ssid1,
 | |
|    'ssid2=s'         => \$ssid2,
 | |
|    'ssid3=s'         => \$ssid3,
 | |
|    'passwd1=s'       => \$passwd1,
 | |
|    'passwd2=s'       => \$passwd2,
 | |
|    'passwd3=s'       => \$passwd3,
 | |
|    'h|help'          => \$help)
 | |
| || (print($usage) && exit(1));
 | |
| 
 | |
| if ($help) {
 | |
|    print $usage;
 | |
|    exit 0;
 | |
| }
 | |
| if (!defined $action) {
 | |
|    print $usage;
 | |
|    exit 1;
 | |
| }
 | |
| $::HostUri = "http://$Host:$Port";
 | |
| my $DEBUGURI = "?__debug=1";
 | |
| my $uri_args = ""; # ="$DEBUG_URI";
 | |
| 
 | |
| our $URI = "$::HostUri/dut";
 | |
| our $Post_URI = "$::HostUri/cli-json";
 | |
| 
 | |
| if ($action eq "list") {
 | |
|    my $uri = "$::URI/list";
 | |
|    my $rh = json_request($uri);
 | |
|    flatten_list($rh, 'duts');
 | |
|    for my $rh_dut (sort keys %{$rh->{'flat_list'}}) {
 | |
|       print "$rh_dut\n";
 | |
|    }
 | |
|    exit 0;
 | |
| }
 | |
| 
 | |
| if ($action eq "show") {
 | |
|    die ("show what DUT? use --name:\n$usage")
 | |
|       unless (defined $name && $name ne "");
 | |
|    my $uri = "$::URI/$name";
 | |
|    my $rh = json_request($uri);
 | |
|    print Dumper($rh->{'dut'});
 | |
|    die("unable to find DUT $name")
 | |
|       unless(defined $rh->{'dut'});
 | |
|    print Dumper($rh->{'dut'});
 | |
|    exit 0;
 | |
| }
 | |
| 
 | |
| my $varnames = q(name img_file sw_version hw_version mgt_ip model_num serial_num serial_port api_id lan_port wan_port ssid1 ssid2 ssid3 passwd1 passwd2 passwd3);
 | |
| 
 | |
| if ($action eq "add") {
 | |
|    die ("show what DUT? use --name:\n$usage")
 | |
|       unless (defined $name && $name ne "");
 | |
|    my $rh_post = {};
 | |
|    for my $k (sort split(' ', $varnames)) {
 | |
|       my $v = eval("return \$$k;");
 | |
|       if ((defined $v) && ($v ne "")) {
 | |
|          $rh_post->{$k} = $v ;
 | |
|       }
 | |
|       else {
 | |
|          $rh_post->{$k} = "NA";
 | |
|       }
 | |
|    }
 | |
|    print Dumper($rh_post);
 | |
|    my $post_uri = "$::Post_URI/add_dut$DEBUGURI";
 | |
|    json_post($post_uri, $rh_post);
 | |
| }
 | |
| 
 | |
| 
 | |
| if ($action eq "annotate") {
 | |
|    die ("show what DUT? use --name:\n$usage")
 | |
|       unless (defined $name && $name ne "");
 | |
|    die ("what notes? use --notes:\n$usage")
 | |
|       unless (defined $notes);
 | |
| 
 | |
|    my $rh_post = {};
 | |
|    my @note_lines=();
 | |
|    if ($notes eq "") {
 | |
|       $notes = '[BLANK]';
 | |
|    }
 | |
|     @note_lines = split(/\r?\n/, $notes);
 | |
| 
 | |
|     if ($note_lines[0] ne "[BLANK]") {
 | |
|        unshift(@note_lines, "[BLANK]");
 | |
|     }
 | |
|     print Dumper(\@note_lines);
 | |
|     my $post_uri = "$::Post_URI/add_dut_notes${DEBUGURI}";
 | |
|     for my $note_line (@note_lines) {
 | |
|        print Dumper(\$note_line);
 | |
|        my $rh = {
 | |
|           'dut' => $name,
 | |
|           'text' => $note_line
 | |
|        };
 | |
|        json_post($post_uri, $rh);
 | |
|     }
 | |
| }
 | |
| #
 |