Changeset 221


Ignore:
Timestamp:
Feb 18, 2017, 5:38:07 PM (7 years ago)
Author:
g7moreau
Message:
  • More robust code for key in hash
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/klask

    r220 r221  
    3838my $KLASK_CFG = YAML::Syck::LoadFile("$KLASK_CFG_FILE");
    3939
    40 my %DEFAULT     = %{$KLASK_CFG->{default}};
    41 my @SWITCH_LIST = @{$KLASK_CFG->{switch}};
     40my %DEFAULT     = %{$KLASK_CFG->{'default'}};
     41my @SWITCH_LIST = @{$KLASK_CFG->{'switch'}};
    4242
    4343my %SWITCH_LEVEL = ();
     
    4545LEVEL_OF_EACH_SWITCH:
    4646for my $sw (@SWITCH_LIST) {
    47    $SWITCH_LEVEL{$sw->{hostname}} = $sw->{level} || $DEFAULT{switch_level}  || 2;
     47   $SWITCH_LEVEL{$sw->{hostname}} = $sw->{'level'} || $DEFAULT{'switch_level'}  || 2;
    4848   $SWITCH_DB{$sw->{hostname}} = $sw;
    4949
    5050   # SNMP parameter initialisation
    5151   my %session = ( -hostname   => $sw->{hostname} );
    52    $session{-version} = $sw->{version}   || 1;
    53    $session{-port}    = $sw->{snmpport}  || $DEFAULT{snmpport}  || 161;
    54    if (exists $sw->{version} and $sw->{version} eq '3') {
    55       $session{-username} = $sw->{username} || 'snmpadmin';
     52   $session{-version} = $sw->{'version'}  || 1;
     53   $session{-port}    = $sw->{'snmpport'} || $DEFAULT{'snmpport'}  || 161;
     54   if (exists $sw->{'version'} and $sw->{'version'} eq '3') {
     55      $session{-username} = $sw->{'username'} || 'snmpadmin';
    5656      }
    5757   else {
    58       $session{-community} = $sw->{community} || $DEFAULT{community} || 'public';
    59       }
    60    $sw->{snmp_param_session} = \%session;
    61    }
    62 @SWITCH_LIST = reverse sort { $SWITCH_LEVEL{$a->{hostname}} <=> $SWITCH_LEVEL{$b->{hostname}} } @{$KLASK_CFG->{switch}};
     58      $session{-community} = $sw->{'community'} || $DEFAULT{'community'} || 'public';
     59      }
     60   $sw->{'snmp_param_session'} = \%session;
     61   }
     62@SWITCH_LIST = reverse sort { $SWITCH_LEVEL{$a->{hostname}} <=> $SWITCH_LEVEL{$b->{hostname}} } @{$KLASK_CFG->{'switch'}};
    6363
    6464#my %SWITCH_PORT_COUNT = ();
     
    357357   INIT_EACH_SWITCH:
    358358   for my $sw (@SWITCH_LIST) {
    359       my ($session, $error) = Net::SNMP->session( %{$sw->{snmp_param_session}} );
     359      my ($session, $error) = Net::SNMP->session( %{$sw->{'snmp_param_session'}} );
    360360      print "$error \n" if $error;
    361361
     
    474474      }
    475475
    476    my $research1 = $OID_NUMBER{searchPort1} . mac_address_hex_to_dec($mac_address);
    477    my $research2 = $OID_NUMBER{searchPort2} .'.'. $vlan_id . mac_address_hex_to_dec($mac_address);
     476   my $research1 = $OID_NUMBER{'searchPort1'} . mac_address_hex_to_dec($mac_address);
     477   my $research2 = $OID_NUMBER{'searchPort2'} .'.'. $vlan_id . mac_address_hex_to_dec($mac_address);
    478478
    479479   LOOP_ON_SWITCH:
    480480   for my $sw (@switch_search) {
    481       my ($session, $error) = Net::SNMP->session( %{$sw->{snmp_param_session}} );
     481      my ($session, $error) = Net::SNMP->session( %{$sw->{'snmp_param_session'}} );
    482482      print "$error \n" if $error;
    483483
     
    533533   return $ret if $mac_address eq 'unknow';
    534534
    535    my $research1 = $OID_NUMBER{searchPort1} . mac_address_hex_to_dec($mac_address);
    536    my $research2 = $OID_NUMBER{searchPort2} .'.'. $vlan_id . mac_address_hex_to_dec($mac_address);
     535   my $research1 = $OID_NUMBER{'searchPort1'} . mac_address_hex_to_dec($mac_address);
     536   my $research2 = $OID_NUMBER{'searchPort2'} .'.'. $vlan_id . mac_address_hex_to_dec($mac_address);
    537537   LOOP_ON_ALL_SWITCH:
    538538   for my $sw (@SWITCH_LIST) {
    539       my ($session, $error) = Net::SNMP->session( %{$sw->{snmp_param_session}} );
     539      my ($session, $error) = Net::SNMP->session( %{$sw->{'snmp_param_session'}} );
    540540      print "$error \n" if $error;
    541541
     
    782782   my ($sw) = @_;
    783783
    784    my %session = %{$sw->{snmp_param_session}};
    785    $session{-community} = $sw->{community-rw} || $DEFAULT{community-rw} || 'private';
     784   my %session = %{$sw->{'snmp_param_session'}};
     785   $session{-community} = $sw->{'community-rw'} || $DEFAULT{'community-rw'} || 'private';
    786786   return %session;
    787787   }
     
    15261526
    15271527      if (exists $db_switch_parent{$sw}) {
    1528          my $mac_address = $db_switch{$db_switch_parent{$sw}->{switch}}->{mac_address};
    1529          my $ipv4_address = $db_switch{$db_switch_parent{$sw}->{switch}}->{ipv4_address};
    1530          my $timestamp = $db_switch{$db_switch_parent{$sw}->{switch}}->{timestamp};
     1528         my $mac_address = $db_switch{$db_switch_parent{$sw}->{'switch'}}->{mac_address};
     1529         my $ipv4_address = $db_switch{$db_switch_parent{$sw}->{'switch'}}->{ipv4_address};
     1530         my $timestamp = $db_switch{$db_switch_parent{$sw}->{'switch'}}->{timestamp};
    15311531
    15321532         my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime $timestamp;
     
    15391539         my $mac_sort = sprintf '%04i-%s', 9999, $mac_address;
    15401540
    1541          my ( $host_short ) = sprintf '%s %3s' , split(m/ \. /xms, $db_switch_parent{$sw}->{switch}, 1), $db_switch_parent{$sw}->{port_hr};
     1541         my ( $host_short ) = sprintf '%s %3s' , split(m/ \. /xms, $db_switch_parent{$sw}->{'switch'}, 1), $db_switch_parent{$sw}->{port_hr};
    15421542
    15431543         print <<"END_HTML";
     
    15461546   <td class="bklask-port">$db_switch_output_port{$sw}</td>
    15471547   <td>$arrow</td><td>$db_switch_parent{$sw}->{port_hr}</td>
    1548    <td sorttable_customkey="$host_short">$db_switch_parent{$sw}->{switch}</td>
     1548   <td sorttable_customkey="$host_short">$db_switch_parent{$sw}->{'switch'}</td>
    15491549   <td sorttable_customkey="$ip_sort">$ipv4_address</td>
    15501550   <td sorttable_customkey="$mac_sort">$mac_address</td>
     
    17411741         }
    17421742
    1743       my $research1 = $OID_NUMBER{searchPort1} . mac_address_hex_to_dec($mac_address);
    1744       my $research2 = $OID_NUMBER{searchPort2} .'.'. 0 . mac_address_hex_to_dec($mac_address);
     1743      my $research1 = $OID_NUMBER{'searchPort1'} . mac_address_hex_to_dec($mac_address);
     1744      my $research2 = $OID_NUMBER{'searchPort2'} .'.'. 0 . mac_address_hex_to_dec($mac_address);
    17451745      print "Klask search OID $research1 on switch $sw_name\n";
    17461746      print "Klask search OID $research2 on switch $sw_name\n";
    17471747
    17481748      my $sw = $SWITCH_DB{$sw_name};
    1749       my ($session, $error) = Net::SNMP->session( %{$sw->{snmp_param_session}} );
     1749      my ($session, $error) = Net::SNMP->session( %{$sw->{'snmp_param_session'}} );
    17501750      print "$error \n" if $error;
    17511751
     
    17971797
    17981798      my $sw = $SWITCH_DB{$sw_name};
    1799       my ($session, $error) = Net::SNMP->session( %{$sw->{snmp_param_session}} );
     1799      my ($session, $error) = Net::SNMP->session( %{$sw->{'snmp_param_session'}} );
    18001800      print "$error \n" if $error;
    18011801
     
    18741874
    18751875      my $sw = $SWITCH_DB{$sw_name};
    1876       my ($session, $error) = Net::SNMP->session( %{$sw->{snmp_param_session}} );
     1876      my ($session, $error) = Net::SNMP->session( %{$sw->{'snmp_param_session'}} );
    18771877      print "$error \n" if $error;
    18781878
     
    21722172
    21732173   my $sw = $SWITCH_DB{$switch_name};
    2174    my ($session, $error) = Net::SNMP->session( %{$sw->{snmp_param_session}} );
     2174   my ($session, $error) = Net::SNMP->session( %{$sw->{'snmp_param_session'}} );
    21752175   print "$error \n" if $error;
    21762176
     
    22232223         }
    22242224
    2225       my $research1 = $OID_NUMBER{searchPort1} . mac_address_hex_to_dec($mac_address);
    2226       my $research2 = $OID_NUMBER{searchPort2} .'.'. $vlan_id . mac_address_hex_to_dec($mac_address);
     2225      my $research1 = $OID_NUMBER{'searchPort1'} . mac_address_hex_to_dec($mac_address);
     2226      my $research2 = $OID_NUMBER{'searchPort2'} .'.'. $vlan_id . mac_address_hex_to_dec($mac_address);
    22272227      print "Klask search OID $research1 on switch $sw_name\n" if $verbose;
    22282228      print "Klask search OID $research2 on switch $sw_name\n" if $verbose;
    22292229
    22302230      my $sw = $SWITCH_DB{$sw_name};
    2231       my ($session, $error) = Net::SNMP->session( %{$sw->{snmp_param_session}} );
     2231      my ($session, $error) = Net::SNMP->session( %{$sw->{'snmp_param_session'}} );
    22322232      print "$error \n" if $error;
    22332233
     
    24422442   for my $sw (sort keys %db_switch_output_port) {
    24432443      if (exists $db_switch_parent{$sw}) {
    2444          printf "%-28s  %2s  +-->  %2s  %-25s\n", $sw, $db_switch_output_port{$sw}, $db_switch_parent{$sw}->{port_hr}, $db_switch_parent{$sw}->{switch};
     2444         printf "%-28s  %2s  +-->  %2s  %-25s\n", $sw, $db_switch_output_port{$sw}, $db_switch_parent{$sw}->{port_hr}, $db_switch_parent{$sw}->{'switch'};
    24452445         }
    24462446      else {
     
    25122512   for my $sw (sort keys %db_switch_output_port) {
    25132513      if (exists $db_switch_parent{$sw}) {
    2514          printf "%-28s  %2s  +-->  %2s  %-25s\n", $sw, $db_switch_output_port{$sw}, $db_switch_parent{$sw}->{port_hr}, $db_switch_parent{$sw}->{switch};
     2514         printf "%-28s  %2s  +-->  %2s  %-25s\n", $sw, $db_switch_output_port{$sw}, $db_switch_parent{$sw}->{port_hr}, $db_switch_parent{$sw}->{'switch'};
    25152515         }
    25162516      else {
     
    26112611   for my $sw (sort keys %db_switch_output_port) {
    26122612      if (exists $db_switch_parent{$sw}) {
    2613 #         printf "   \"%s:%s\" -> \"%s:%s\"\n", $sw, $db_switch_output_port{$sw}, $db_switch_parent{$sw}->{switch}, $db_switch_parent{$sw}->{port};
     2613#         printf "   \"%s:%s\" -> \"%s:%s\"\n", $sw, $db_switch_output_port{$sw}, $db_switch_parent{$sw}->{'switch'}, $db_switch_parent{$sw}->{port};
    26142614         }
    26152615      else {
Note: See TracChangeset for help on using the changeset viewer.