title: Perl Net::SNMP::Interfaces | Interace errors
body: <p>I have the following script that I am using to see if an interface has errors against Cisco switches.  The only problem I am experiencing is when I clear counters on an interface, Net::SNMP still shows them:</p>
  
  <p>Perl Script (switch.pl):</p>
  
  <pre><code>#!/usr/bin/perl
  use warnings;
  use strict;
  use DBI;
  use Net::SNMP;
  use Net::SNMP::Interfaces;
  use Net::SNMP::Interfaces::Details;
  
  my @hosts;
  push (@hosts, switch1);
  
  foreach my $item (@hosts) {
          checkinterfaces($item);
  }
  
  sub checkinterfaces {
      my $host = shift;
      my $interfaces = Net::SNMP::Interfaces-&gt;new(Hostname =&gt; $host, Community =&gt; 'public');
      my @inter = $interfaces-&gt;all_interfaces();
  
      for my $i (@inter) {
          my $if = $i-&gt;name;
          my $inerr = $i-&gt;ifInErrors;
          my $outerr = $i-&gt;ifOutErrors;
                  if ($inerr &gt; 0 || $outerr &gt; 0 ){
                          print "$if is experiencing errors - Input Errors:$inerr/Output Errors:$outerr\n";
                  }
  }
  </code></pre>
  
  <p>First pass:</p>
  
  <pre><code>$ perl switch.pl 
  FastEthernet0/1 is experiencing errors - Input Errors:2201991/Output Errors:0
  </code></pre>
  
  <p>Clearing counters on the port:</p>
  
  <pre><code>switch1#sh int fa0/1                                                                                                                                                                                                            
  FastEthernet0/1 is up, line protocol is up (connected)
  ....
       15470020 packets input, 2415584329 bytes, 0 no buffer
       Received 29399 broadcasts (0 multicast)
       0 runts, 1656 giants, 0 throttles
       2199177 input errors, 2197521 CRC, 0 frame, 0 overrun, 0 ignored
       0 watchdog, 22890 multicast, 0 pause input
       0 input packets with dribble condition detected
       53541600 packets output, 266583342 bytes, 0 underruns
       0 output errors, 0 collisions, 2 interface resets
       0 babbles, 0 late collision, 0 deferred
       0 lost carrier, 0 no carrier, 0 PAUSE output
       0 output buffer failures, 0 output buffers swapped out
  switch1#clear counters fa0/1
  Clear "show interface" counters on this interface [confirm]y
  switch1#sh int fa0/1 
  FastEthernet0/1 is up, line protocol is up (connected)
  ....
       1229 packets input, 1905693 bytes, 0 no buffer
       Received 0 broadcasts (0 multicast)
       0 runts, 0 giants, 0 throttles
       297 input errors, 297 CRC, 0 frame, 0 overrun, 0 ignored
       0 watchdog, 0 multicast, 0 pause input
       0 input packets with dribble condition detected
       1334 packets output, 141440 bytes, 0 underruns
       0 output errors, 0 collisions, 0 interface resets
       0 babbles, 0 late collision, 0 deferred
       0 lost carrier, 0 no carrier, 0 PAUSE output
       0 output buffer failures, 0 output buffers swapped out
  switch1#
  </code></pre>
  
  <p>Second Pass:</p>
  
  <pre><code>$ perl switch.pl 
  FastEthernet0/20 is experiencing errors - Input Errors:2211150/Output Errors:0
  </code></pre>
  
  <p>The interface is still experiencing errors, however it does not appear to be obtaining the correct value.</p>