Changeset 237


Ignore:
Timestamp:
Apr 11, 2017, 11:49:21 AM (7 years ago)
Author:
g7moreau
Message:
  • Add command get-vlan-list
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/klask

    r236 r237  
    8686   'set-vlan-name'        => \&cmd_set_vlan_name,
    8787   'get-vlan-name'        => \&cmd_get_vlan_name,
     88   'get-vlan-list'        => \&cmd_get_vlan_list,
    8889   'rebootsw'             => \&cmd_rebootsw,
    8990   );
     
    849850
    850851#---------------------------------------------------------------
     852# Get the list of all the VLAN define on a switch
     853sub snmp_get_vlan_list {
     854   my ($snmp_session, $verbose) = @_;
     855
     856   my %vlan = (); # Hash vlan number => vlan name
     857
     858   my $research_index = $OID_NUMBER{vlanName}; # base OID
     859   my @args = ( -varbindlist =>  [$research_index]);
     860   LOOP_ON_VLAN:
     861   while ( defined $snmp_session->get_next_request(@args) ) {
     862      my ($oid_current) = $snmp_session->var_bind_names;
     863      last LOOP_ON_VLAN if not Net::SNMP::oid_base_match($research_index, $oid_current);
     864
     865      my $vlan_name = $snmp_session->var_bind_list->{$oid_current};
     866      my ($vlan_index) = reverse split /\./, $oid_current; # last number
     867      printf "VLAN: %s => %s\n", $oid_current, $vlan_name if $verbose;
     868
     869      $vlan{$vlan_index} = $vlan_name;
     870
     871      # prepare next loop item
     872      @args = (-varbindlist => [$oid_current]);
     873      }
     874   return %vlan;
     875   }
     876
     877#---------------------------------------------------------------
    851878# Load computer database
    852879sub computerdb_load {
     
    896923 klask disable [--verbose|-v] switch port
    897924 klask status  [--verbose|-v] switch port
     925
     926 klask get-vlan-name switch vlan-id
     927 klask get-vlan-list switch
    898928END
    899929   return;
     
    19061936
    19071937#---------------------------------------------------------------
     1938sub cmd_get_vlan_list {
     1939   my $switch_name = shift || q{};
     1940
     1941   if ($switch_name eq q{}) {
     1942      die "Usage: klask get-vlan-list SWITCH_NAME\n";
     1943      }
     1944
     1945   $switch_name = join(',', map {$_->{hostname}} @SWITCH_LIST ) if $switch_name eq q{*};
     1946
     1947   for my $sw_name (split /,/, $switch_name) {
     1948      if (not defined $SWITCH_DB{$sw_name}) {
     1949         die "Switch $sw_name must be defined in klask configuration file\n";
     1950         }
     1951
     1952      my $sw = $SWITCH_DB{$sw_name};
     1953      my ($session, $error) = Net::SNMP->session( %{$sw->{'snmp_param_session'}} );
     1954      print "$error \n" if $error;
     1955
     1956      my %vlandb = snmp_get_vlan_list($session);
     1957      $session->close;
     1958     
     1959      print "VLAN_ID - VLAN_NAME # $sw_name\n";
     1960      for my $vlanid (keys %vlandb) {
     1961         printf "%7i - %s\n", $vlanid, $vlandb{$vlanid};
     1962         }
     1963      }
     1964   return;
     1965   }
     1966
     1967#---------------------------------------------------------------
    19081968sub cmd_ip_location {
    19091969   my $computerdb = computerdb_load();
     
    26892749 klask status  [--verbose|-v] switch port
    26902750
     2751 klask get-vlan-name switch vlan-id
     2752 klask get-vlan-list switch
     2753
    26912754
    26922755=head1 DESCRIPTION
Note: See TracChangeset for help on using the changeset viewer.