Question : SNMP polling

I configured snmp polling on a switch and I am only matching one acl. What does that tell me?
Only one server (Spectrum) is polling my switch?
I also want to have an entry in the switch logging buffer if an interface goes up/down. Will this configuration do that? I shut and no shut an interface and it did not show up in the log buffer.

>sh access-lists
Standard IP access list 80
    permit 172.16.1.55
    permit 172.16.1.41
Standard IP access list 85
    permit 10.192.9.200
    permit 10.192.9.204
    permit 172.16.1.55 (3372 matches)
    permit 172.16.1.41
    permit 172.16.1.38
    permit 172.16.1.111
    permit 172.16.1.107

#sh run

logging buffered 8192 debugging
logging facility auth
logging 172.16.1.41
access-list 80 permit 172.16.1.55
access-list 80 remark ciscoworks
access-list 80 permit 172.16.1.41
access-list 85 remark Netscout
access-list 85 permit 10.192.9.200
access-list 85 permit 10.192.9.204
access-list 85 remark CA Spectrum
access-list 85 permit 172.16.1.55
access-list 85 remark ciscoWorks
access-list 85 permit 172.16.1.41
access-list 85 remark Opnet
access-list 85 permit 172.16.1.38
access-list 85 remark CA ehealth
access-list 85 permit 172.16.1.111
access-list 85 permit 172.16.1.107
snmp-server community yyy RO 85
snmp-server community xxx RW 80
snmp-server system-shutdown
snmp-server enable traps snmp authentication warmstart linkdown linkup coldstart
snmp-server enable traps flash insertion removal
snmp-server enable traps syslog
snmp-server host 172.16.1.41 yyy
snmp-server host 172.16.1.55 yyy
snmp-server host 172.16.1.41 version 2c snmp1
snmp-server host 172.16.1.55 version 2c snmp1

Answer : SNMP polling

Well, in

      {33, "B"},      {22, "C"},      {22, "D"},      {44, "E"}, {22, "D"}

you have that very duplicate entry - just remove it after it is sorted, e.g.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
#include <iomanip>
#include <iostream>
#include <string>
#include <sstream>
#include <set>
#include <vector>
#include <algorithm>

using namespace std;

struct StudentAttempt
{
   int distance;
   string studentName;
};

bool cmpEntry(StudentAttempt left, StudentAttempt right) {
   return left.distance == right.distance && left.studentName == right.studentName;
}
bool cmpAttempts(StudentAttempt left, StudentAttempt right) {
   if( left.distance < right.distance ) {
      return true;
   }
   else if( left.distance == right.distance ) {
      if( left.studentName < right.studentName ) {
         return true;
      }
      else
         return false;
   }
   else
      return false;
}

bool isDistEqual( StudentAttempt left, StudentAttempt right) {
   return ( left.distance == right.distance
      && left.studentName != right.studentName );
}

size_t printAllEqual(const vector<StudentAttempt>& v, const StudentAttempt& sa, stringstream& ss ) {

   vector<StudentAttempt>::const_iterator i = v.begin();
  size_t sz = 0;
  bool bFirst = true;

  while (i != v.end()) {

    if(isDistEqual(*i,sa)) {
    
      if (!bFirst) ss << ',';
      ss << i->studentName;
      ++sz;
    }

    ++i; 
    bFirst = false;
  }

  return sz;
}
 

int main() {

   StudentAttempt throwDist[] = {
      {50, "A"},      {22, "A"},      {16, "B"},      {44, "C"},
      {33, "D"},      {34, "E"},      {22, "F"},      {21, "G"},
      {49, "A"},      { 5, "B"},      { 2, "C"},      {22, "A"},
      {33, "B"},      {22, "C"},      {22, "D"},      {44, "E"}, {22, "D"}
   };


   set<int> handled;

   int len = sizeof( throwDist )/ sizeof( throwDist[0] );

   vector<StudentAttempt> dist(throwDist, throwDist + len);
   vector<StudentAttempt>::iterator it = dist.begin();

   sort( dist.begin(), dist.end(), cmpAttempts);

   unique( dist.begin(), dist.end(), cmpEntry); // removes identical duplicates from the sorted vector


   for( ; it != dist.end(); it++ ) {

      stringstream ss;

      pair<set<int>::iterator,bool> p = handled.insert(it->distance);

      if (!p.second) continue; // already handled

      if(0 < printAllEqual(dist,*it,ss)) 
        cout << setw(2) << (*it).distance 
           << " feet:  " << (*it).studentName << ss.str() << endl;
   }
}
Random Solutions  
 
programming4us programming4us