2012-05-09 Dario Rodriguez <dario.rodriguez@artica.es>

* util/plugin/ipmi-plugin.pl,
	util/recon_scripts/ipmi-recon.pl: Fixed some bugs of plugin and
	recon

	MERGED FROM 4.0.2



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6275 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
darode 2012-05-09 07:40:24 +00:00
parent 9938275789
commit 5f3c0c15d5
3 changed files with 52 additions and 34 deletions

View File

@ -1,3 +1,11 @@
2012-05-09 Dario Rodriguez <dario.rodriguez@artica.es>
* util/plugin/ipmi-plugin.pl,
util/recon_scripts/ipmi-recon.pl: Fixed some bugs of plugin and
recon
MERGED FROM 4.0.2
2012-05-08 Sancho Lerena <slerena@artica.es>
* conf/pandora_server.conf: Better default values.

View File

@ -21,24 +21,33 @@ sub get_param($) {
return $value;
}
##########################################################################
# Show help
##########################################################################
sub show_help {
print "\nSpecific Pandora FMS Intel DCM Discovery\n";
print "(c) Artica ST 2011 <info\@artica.es>\n\n";
print "Usage:\n\n";
print " $0 -h <host> -u <username> -p <password> -s <sensor_id>\n";
exit;
}
if ($#ARGV == -1){
show_help();
}
my $host = get_param("h");
my $user = get_param("u");
my $pass = get_param("p");
my $sensor = get_param("s");
my $res = `ipmi-sensors -h $host -u $user -p $pass -s $sensor`;
my $res = `ipmi-sensors -h $host -u $user -p $pass -s $sensor | tail -1`;
my @aux = split(/:/, $res);
my @aux = split(/\|/, $res);
my $value = $aux[2];
my $value = $aux[3];
$value =~ s/\n//;
if ($value =~ / (\S+) .+/) {
$value = $1;
}
#Clean value
$value =~ s/^\s+//;
$value =~ s/\s+$//;

View File

@ -21,7 +21,8 @@ use PandoraFMS::Config;
##########################################################################
# Global variables so set behaviour here:
my $target_timeout = 5; # Fixed to 5 secs by default
my $pkg_count = 3; #Number of ping pkgs
my $pkg_timeout = 3; #Pkg ping timeout wait
##########################################################################
# Code begins here, do not touch
@ -63,22 +64,12 @@ sub show_help {
##########################################################################
# Get SNMP response.
##########################################################################
sub get_snmp_response ($$$) {
my ($target_timeout, $target_community, $addr) = @_;
# The OID used is the SysUptime OID
my $buffer = `/usr/bin/snmpget -v 1 -r0 -t$target_timeout -OUevqt -c '$target_community' $addr .1.3.6.1.2.1.1.3.0 2>/dev/null`;
# Remove forbidden caracters
$buffer =~ s/\l|\r|\"|\n|\<|\>|\&|\[|\]//g;
return $buffer;
}
sub ipmi_ping ($) {
sub ipmi_ping ($$$) {
my $addr = shift;
my $pkg_count = shift;
my $pkg_timeout = shift;
my $cmd = "ipmiping $addr -c 3";
my $cmd = "ipmiping $addr -c $pkg_count -t $pkg_timeout";
my $res = `$cmd`;
@ -97,25 +88,35 @@ sub create_ipmi_modules($$$$$$) {
my $res = `$cmd`;
my @lines = split(/\n/, $res);
my $ipmi_plugin_id = get_db_value($dbh, "SELECT id FROM tplugin WHERE name = '".safe_input("IPMI Plugin")."'");
foreach my $line (@lines) {
my @aux = split(/:/, $line);
for(my $i=1; $i < $#lines; $i++) {
my $line = $lines[$i];
my @aux = split(/\|/, $line);
my $name = $aux[1];
#Trim name
$name =~ s/^\s+//;
$name =~ s/\s+$//;
my $module_type = "generic_data_string";
if ($aux[2] =~ /.+ (\w) \(/) {
my $value_read = $aux[3];
#Trim name
$value_read =~ s/^\s+//;
$value_read =~ s/\s+$//;
#Check if value read is integer or boolean
if ($value_read =~ m/^\d+.\d+$/ || $value_read =~ m/^\d+$/) {
$module_type = "generic_data";
}
my $id_module_type = get_module_id($dbh, $module_type);
my $params = "-s $aux[0]";
@ -160,7 +161,7 @@ $conf{'pandora_path'} = $pandora_conf;
pandora_load_config (\%conf);
# Connect to the DB
my $dbh = db_connect ('mysql', $conf{'dbname'}, $conf{'dbhost'}, $conf{'dbport'}, $conf{'dbuser'}, $conf{'dbpass'});
my $dbh = db_connect ('mysql', $conf{'dbname'}, $conf{'dbhost'}, '3306', $conf{'dbuser'}, $conf{'dbpass'});
# Start the network sweep
@ -197,12 +198,12 @@ for (my $i = 1; $net_addr <= $net_addr->broadcast; $i++, $net_addr++) {
# Update the recon task
update_recon_task ($dbh, $task_id, ceil ($i / ($total_hosts / 100)));
my $alive = 0;
if (ipmi_ping ($addr) == 1) {
if (ipmi_ping ($addr, $pkg_count, $pkg_timeout) == 1) {
$alive = 1;
}
next unless ($alive > 0);
# Resolve the address