source: ocsinventory-agent/trunk/fuentes/lib/Ocsinventory/Agent/Modules/Snmp/Host_Resources_Mib.pm @ 468

Last change on this file since 468 was 468, checked in by mabarracus, 4 years ago

Copyt trusty code

File size: 8.1 KB
Line 
1###
2#
3###
4package Ocsinventory::Agent::Modules::Snmp::Host_Resources_Mib;
5
6use strict;
7use warnings;
8
9sub snmp_info {
10   return ( { oid_value => "1.3.6.1.2.1.25.1.1.0",
11            oid_name => "Host_Resources_Mib" } );
12}
13
14sub snmp_run {
15   my ($session , $snmp )= @_;
16   my $logger=$snmp->{logger};
17   my $common=$snmp->{common};
18   
19   $logger->debug("Running Host Resources MIB module");
20
21   # OID
22   my $soft="1.3.6.1.2.1.25.6.3.1.";
23   my $memory="1.3.6.1.2.1.25.2.2.0";
24   my $snmp_storageType="1.3.6.1.2.1.25.2.3.1.2";
25   my $snmp_storageDescr="1.3.6.1.2.1.25.2.3.1.3.";
26   my $snmp_storageSize="1.3.6.1.2.1.25.2.3.1.5.";
27   my $snmp_storageUsed="1.3.6.1.2.1.25.2.3.1.6.";
28
29   my $snmp_hrDeviceType="1.3.6.1.2.1.25.3.2.1.2";
30   my $snmp_cpu="1.3.6.1.2.1.25.3.2.1.3.";
31   my $snmp_Printer="1.3.6.1.2.1.25.3.2.1.5.";
32   my $snmp_Video="1.3.6.1.2.1.25.3.2.1.10.";
33   my $snmp_Audio="1.3.6.1.2.1.25.3.2.1.11.";
34   my $snmp_Keyboard="1.3.6.1.2.1.25.3.2.1.13.";
35   my $snmp_Modem="1.3.6.1.2.1.25.3.2.1.14.";
36   my $snmp_ParallelPort="1.3.6.1.2.1.25.3.2.1.15.";
37   my $snmp_Pointing="1.3.6.1.2.1.25.3.2.1.16.";
38   my $snmp_SerialPort="1.3.6.1.2.1.25.3.2.1.17.";
39
40   my $DATE;
41
42   my $result;
43   my $result_table;
44   my $ref;
45
46   $result_table=$session->get_entries(-columns => [ $soft."2" ] );
47   foreach my $result ( keys %{$result_table} ) {
48      if ( $result =~ /1\.3\.6\.1\.2\.1\.25\.6\.3\.1\.2\.(\S+)/ ) {
49         $ref=$1;
50         $DATE=$session->get_request ( -varbindlist => [ $soft."5.".$ref ]);
51         if ( defined ( $DATE ) ) {
52            $DATE=$DATE->{$soft."5.".$ref};
53            if ( defined ($DATE ) ) {
54               $DATE=sprintf("%d/%d/%d",hex(substr($DATE,2,4)),hex(substr($DATE,6,2)),hex(substr($DATE,8,2)));
55            }
56         }
57         $common->addSoftware( { 
58                        NAME=>$result_table->{ $result } ,
59                        INSTALLDATE=>$DATE
60                        } );
61      }
62   }
63   
64   # Memory
65   $result=$session->get_request(-varbindlist => [ $memory ]);
66   if ( defined ($result) ) {
67      $common->addMemory( {CAPACITY => $result->{$memory} } );
68   }
69
70   # We look for disk
71   $result_table=$session->get_entries(-columns => [ $snmp_storageType ]);
72   foreach my $result ( keys %{$result_table} ) {
73      if ( $result =~ /1\.3\.6\.1\.2\.1\.25\.2\.3\.1\.2\.(\S+)/ ) {
74         $ref=$1;
75         # We look if the storage is a fixed disk
76         if ( $result_table->{$result} =~ /2\.1\.4$/ ) {
77            # Definition Var for disks
78            my $FREE="";
79            my $FILESYSTEM="";
80            my $LABEL="";
81            my $SERIAL="";
82            my $TOTAL="";
83            my $TYPE="HardDisk";
84            my $VOLUMN="";
85            $TOTAL=$session->get_request(-varbindlist => [ $snmp_storageSize.$ref ]);
86            if ( defined ( $TOTAL ) ) {
87                $TOTAL=$TOTAL->{$snmp_storageSize.$ref};
88            }
89            $FREE=$session->get_request(-varbindlist => [ $snmp_storageUsed.$ref ]);
90             if ( defined ( $FREE ) ) {
91                $FREE=$TOTAL - $FREE->{$snmp_storageUsed.$ref};
92             }
93            $FILESYSTEM=$session->get_request(-varbindlist => [ $snmp_storageDescr.$ref ]);
94            if ( defined ( $FILESYSTEM) ) {
95                $FILESYSTEM=$FILESYSTEM->{$snmp_storageDescr.$ref};
96            }
97
98            if ( $FILESYSTEM =~ /(\S+)\s+Label:(\S+)\s+Serial Number\s+(\S+)/ ) {
99               $VOLUMN=$1;
100               $LABEL=$2;
101               $SERIAL=$3;
102               $FILESYSTEM="";
103            } elsif ( $FILESYSTEM =~ /(\S+)\s+Label:\s+Serial Number\s+(\S+)/ ) {
104               $VOLUMN=$1;
105               $SERIAL=$2;
106               $FILESYSTEM="";
107            } 
108             
109            $common->addDrive( { 
110                FILESYSTEM => $FILESYSTEM ,
111                VOLUMN => $VOLUMN,
112                TYPE => $TYPE,
113                LABEL => $LABEL,
114                SERIAL => $SERIAL,
115                FREE => $FREE,
116                TOTAL => $TOTAL,
117              }),
118         } # End looking for fixed disk
119      } # End index of the element
120   } # End foreach storages
121   $result_table=$session->get_entries(-columns => [ $snmp_hrDeviceType ]);
122   foreach my $result ( keys %{$result_table} ) {
123      if ( $result =~ /1\.3\.6\.1\.2\.1\.25\.3\.2\.1\.2\.(\S+)/ ) {
124         $ref=$1;
125         if  ( $result_table->{$result} =~ /3\.1\.3$/ ) {
126            # We have a CPU
127            my $CPU=$session->get_request(-varbindlist => [ $snmp_cpu.$ref ] );
128            if ( defined ( $CPU ) ) {
129               $CPU=$CPU->{$snmp_cpu.$ref};
130               my $TYPE=$CPU;
131               my $MANUFACTURER="";
132               my $SPEED="";
133               if ( $CPU =~ /^Intel$/ ) {
134                  # We have a windows system and for all processor
135                  # it say Intel even if the proc is an AMD
136                  $MANUFACTURER="x86 Manufacturer";
137                  $TYPE="x86";
138               } elsif ( $CPU =~ /[Ii]nte/ ) {
139                  $MANUFACTURER="Intel";
140                  if ( $CPU =~ /\s+(\S+[GM][Hh][zZ])/ ) {
141                     $SPEED=$1;
142                  }
143               } elsif ( $CPU =~ /AMD/ ) {
144                  $MANUFACTURER="AMD";
145                  if ( $CPU =~ /\s+(\S+\+)/ ) {
146                     $SPEED=$1;
147                  }
148               }
149               $logger->debug("Speed $SPEED Manufacturer $MANUFACTURER Type $TYPE");
150               $common->addSnmpCPU( { 
151                   SPEED => $SPEED,
152                   TYPE => $TYPE,
153                   MANUFACTURER => $MANUFACTURER,
154                     } );
155            }
156         }
157      } #end CPU
158      elsif ( $result_table->{$result} =~ /3\.1\.5$/ ) {
159         # We have a Printer
160         my $NAME=$session->get_request(-varbindlist => [ $snmp_Printer.$ref ] );
161         if ( defined ($NAME) ) {
162             $NAME=$NAME->{$snmp_Printer.$ref };
163             $common->addSnmpLocalPrinter( { NAME => $NAME } );
164         }
165      } # End Printer
166      elsif  ( $result_table->{$result} =~ /3\.1\.13$/ ) {
167         # We have a Keyboard
168         my $DESCRIPTION=$session->get_request(-varbindlist => [ $snmp_Keyboard.$ref ] );
169         if ( defined ($DESCRIPTION) ) {
170             $DESCRIPTION=$DESCRIPTION->{$snmp_Keyboard.$ref };
171             $common->addSnmpInput( { DESCRIPTION => $DESCRIPTION , TYPE => "Keyboard" } );
172         }
173      } # End Keyboard
174      elsif  ( $result_table->{$result} =~ /3\.1\.16$/ ) {
175         # We have a Pointing
176         my $DESCRIPTION=$session->get_request(-varbindlist => [ $snmp_Pointing.$ref ] );
177         if ( defined ($DESCRIPTION) ) {
178             $DESCRIPTION=$DESCRIPTION->{$snmp_Pointing.$ref };
179             $common->addSnmpInput( { DESCRIPTION => $DESCRIPTION , TYPE => "Mouse" } );
180         }
181      } # End Pointing
182      elsif  ( $result_table->{$result} =~ /3\.1\.11$/ ) {
183         # We have a Audio
184         my $NAME=$session->get_request(-varbindlist => [ $snmp_Audio.$ref ] );
185         if ( defined ($NAME) ) {
186             $NAME=$NAME->{$snmp_Audio.$ref };
187             $common->addSound( { NAME => $NAME } );
188         }
189      } # End Audio
190      elsif  ( $result_table->{$result} =~ /3\.1\.10$/ ) {
191         # We have a Video
192         my $NAME=$session->get_request(-varbindlist => [ $snmp_Video.$ref ] );
193         if ( defined ($NAME) ) {
194             $NAME=$NAME->{$snmp_Video.$ref };
195             $common->addVideo( { NAME => $NAME } );
196         }
197      } # End Video
198      elsif  ( $result_table->{$result} =~ /3\.1\.14$/ ) {
199         # We have a Modem
200         my $NAME=$session->get_request(-varbindlist => [ $snmp_Modem.$ref ] );
201         if ( defined ($NAME) ) {
202             $NAME=$NAME->{$snmp_Modem.$ref };
203             $common->addModem( { NAME => $NAME } );
204         }
205      } # End Modem
206      elsif  ( $result_table->{$result} =~ /3\.1\.15$/ ) {
207         # We have a ParallelPort
208         my $NAME=$session->get_request(-varbindlist => [ $snmp_ParallelPort.$ref ] );
209         if ( defined ($NAME) ) {
210             $NAME=$NAME->{$snmp_ParallelPort.$ref };
211             $common->addPorts( { NAME => $NAME , TYPE => "Parallel" } );
212         }
213      } # End ParallelPort
214      elsif  ( $result_table->{$result} =~ /3\.1\.17$/ ) {
215         # We have a SerialPort
216         my $NAME=$session->get_request(-varbindlist => [ $snmp_SerialPort.$ref ] );
217         if ( defined ($NAME) ) {
218             $NAME=$NAME->{$snmp_SerialPort.$ref };
219             $common->addPorts( { NAME => $NAME , TYPE => "Serial" } );
220         }
221      } # End SerialPort
222   } # End scan of hrDeviceType
223}
224
2251;
Note: See TracBrowser for help on using the repository browser.