summaryrefslogtreecommitdiff
path: root/local/pass_persisttest
blob: 9fd1deb0b62afcdf2ace1b5206e53494fa88c5f3 (plain)
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
#!/usr/bin/perl

# Persistant perl script to respond to pass-through smnp requests

# put the following in your snmpd.conf file to call this script:
#
# pass_persist .1.3.6.1.4.1.2021.255 /path/to/pass_persisttest

# Forces a buffer flush after every print
$|=1;

use strict;

my $counter = 0;
my $place = ".1.3.6.1.4.1.2021.255";

while (<>){
  if (m!^PING!){
    print "PONG\n";
    next;
  }

  my $cmd = $_;
  my $req = <>;
  my $ret;
  chomp($cmd);
  chomp($req);

  if ( $cmd eq "getnext" ) {
    if ($req eq $place) {
      $ret = "$place.1";
    } elsif ($req eq "$place.1") {
      $ret = "$place.2.1";
    } elsif ($req eq "$place.2.1") {
      $ret = "$place.2.2";
    } elsif ($req eq "$place.2.2") {
      $ret = "$place.3";
    } elsif ($req eq "$place.3") {
      $ret = "$place.4";
    } elsif ($req eq "$place.4") {
      $ret = "$place.5";
    } elsif ($req eq "$place.5") {
      $ret = "$place.6";
    } else {
      print "NONE\n";
      next;
    }
  } else {
    if ($req eq $place) {
      print "NONE\n";
      next;
    } else {
      $ret = $req;
    }
  }

  print "$ret\n";

  if ($ret eq "$place.1") {
    print "string\nlife the universe and everything\n";
  } elsif ($ret eq "$place.2.1") {
    print "integer\n423\n";
  } elsif ($ret eq "$place.2.2") {
    print "objectid\n.1.3.6.1.4.42.42.42\n";
  } elsif ($ret eq "$place.3") {
    print "timeticks\n363136200\n";
  } elsif ($ret eq "$place.4") {
    print "ipaddress\n127.0.0.1\n";
  } elsif ($ret eq "$place.5") {
    $counter++;
    print "counter\n$counter\n";
  } elsif ($ret eq "$place.6") {
    print "gauge\n42\n";
  } else {
    print  "string\nack... $ret $req\n";
  }
}