- Timestamp:
- Apr 11, 2017, 11:49:21 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/klask
r236 r237 86 86 'set-vlan-name' => \&cmd_set_vlan_name, 87 87 'get-vlan-name' => \&cmd_get_vlan_name, 88 'get-vlan-list' => \&cmd_get_vlan_list, 88 89 'rebootsw' => \&cmd_rebootsw, 89 90 ); … … 849 850 850 851 #--------------------------------------------------------------- 852 # Get the list of all the VLAN define on a switch 853 sub 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 #--------------------------------------------------------------- 851 878 # Load computer database 852 879 sub computerdb_load { … … 896 923 klask disable [--verbose|-v] switch port 897 924 klask status [--verbose|-v] switch port 925 926 klask get-vlan-name switch vlan-id 927 klask get-vlan-list switch 898 928 END 899 929 return; … … 1906 1936 1907 1937 #--------------------------------------------------------------- 1938 sub 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 #--------------------------------------------------------------- 1908 1968 sub cmd_ip_location { 1909 1969 my $computerdb = computerdb_load(); … … 2689 2749 klask status [--verbose|-v] switch port 2690 2750 2751 klask get-vlan-name switch vlan-id 2752 klask get-vlan-list switch 2753 2691 2754 2692 2755 =head1 DESCRIPTION
Note: See TracChangeset
for help on using the changeset viewer.