diff --git a/pandora_server/ChangeLog b/pandora_server/ChangeLog index 0e29c329e4..ddf6abcf94 100644 --- a/pandora_server/ChangeLog +++ b/pandora_server/ChangeLog @@ -1,3 +1,10 @@ +2013-09-03 Miguel de Dios + + * util/pandora_revent.pl: fixed the script, now runs fine the tags + and set correclty the comment and owner user, and other fixes. + + Fixes: #2386 + 2013-09-03 Ramon Novoa * lib/PandoraFMS/Core.pm: Added support for tag phone information. diff --git a/pandora_server/util/pandora_revent.pl b/pandora_server/util/pandora_revent.pl index f23553a146..60066937b4 100755 --- a/pandora_server/util/pandora_revent.pl +++ b/pandora_server/util/pandora_revent.pl @@ -1,13 +1,13 @@ #!/usr/bin/perl -############################################################################### +######################################################################## # Pandora FMS - Remote Event Tool (via WEB API) -############################################################################### +######################################################################## # Copyright (c) 2013 Artica Soluciones Tecnologicas S.L # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License version 2 -############################################################################### +######################################################################## # Includes list use strict; @@ -19,9 +19,9 @@ tool_api_init(); # Main tool_api_main(); -############################################################################## +######################################################################## # Print a help screen and exit. -############################################################################## +######################################################################## sub help_screen{ print "Options to create event: @@ -29,64 +29,66 @@ sub help_screen{ \t$0 -p -create event Where options:\n - -u + -u -create_event - -name : Free text - -group : Group ID (use 0 for 'all') - -agent :Agent ID + -name : Free text + -group : Group ID (use 0 for 'all') + -agent :Agent ID Optional parameters: - [-status ] : 0 New, 1 Validated, 2 In process - [-user ] : User comment (use in combination with -comment option) - [type ] : unknown, alert_fired, alert_recovered, alert_ceased - alert_manual_validation, system, error, new_agent - configuration_change, going_unknown, going_down_critical, - going_down_warning, going_up_normal - [-criticity ] : 0 Maintance, 1 Informative, 2 Normal, - 3 Warning, 4 Crit, 5 Minor, 6 Major - [-am ] : ID Agent Module linked to event - [-alert ] : ID Alert Module linked to event - [-c_instructions ] - [-w_instructions ] - [-u_instructions ] - [-source ] : (By default 'Pandora') - [-tag ] : Tag (must exist in the system to be imported)"; - + [-status ] : 0 New, 1 Validated, 2 In process + [-user ] : User comment (use in combination with -comment option) + [type ] : unknown, alert_fired, alert_recovered, alert_ceased + alert_manual_validation, system, error, new_agent + configuration_change, going_unknown, going_down_critical, + going_down_warning, going_up_normal + [-criticity ] : 0 Maintance, 1 Informative, 2 Normal, + 3 Warning, 4 Crit, 5 Minor, 6 Major + [-am ] : ID Agent Module linked to event + [-alert ] : ID Alert Module linked to event + [-c_instructions ] + [-w_instructions ] + [-u_instructions ] + [-user_comment ] + [-owner_user ] + [-source ] : (By default 'Pandora') + [-tag ] : Tag (must exist in the system to be imported)"; + print "Credential/API syntax: \n\n\t"; print ": API credentials separated by comma: ,,\n\n"; - + print "Example of event generation:\n\n"; - + #~ print "\t./pandora_revent.pl -p http://192.168.70.160/pandora_console/include/api.php -u pot12,admin,pandora \ #~ \t-create_event -name \"Sample event executed from commandline\" -group 2 -type \"system\" -agent 2 \ #~ \t-user \"admin\" -status 0 -am 0 -alert 9 -criticity 3 -comment \"User comments\" -tag \"tags\" \ #~ \t-source \"Commandline\" -extra 3 -c_instructions \"Critical instructions\" \ #~ \t-w_instructions \"Warning instructions\" -u_instructions \"Unknown instructions\" -owner \"other\" "; - + print "\t./pandora_revent.pl -p http://localhost/pandora_console/include/api.php -u 1234,admin,pandora \ \t-create_event -name \"SampleEvent\" -group 2 -agent 189 -status 0 -user \"admin\" -type \"system\" \ \t-criticity 3 -am 0 -alert 9 -c_instructions \"Critical instructions\" -w_instructions \"Warning instructions\" \ \t-u_instructions \"Unknown instructions\" -source \"Commandline\" -tag \"Tags\""; - - print "\n\nOptions to validate event: \n\n\t"; - print "$0 -p -u -validate_event -id \n\n"; - print "Sample of event validation: \n\n\t"; - - print "$0 -p http://localhost/pandora/include/api.php -u pot12,admin,pandora -validate_event -id 234"; - print "\n\n\n"; - exit; + + print "\n\nOptions to validate event: \n\n\t"; + print "$0 -p -u -validate_event -id \n\n"; + print "Sample of event validation: \n\n\t"; + + print "$0 -p http://localhost/pandora/include/api.php -u pot12,admin,pandora -validate_event -id 234"; + print "\n\n\n"; + exit; } ############################################################################## # Init screen ############################################################################## sub tool_api_init () { - + print "\nPandora FMS Remote Event Tool Copyright (c) 2013 Artica ST\n"; print "This program is Free Software, licensed under the terms of GPL License v2\n"; print "You can download latest versions and documentation at http://www.pandorafms.org\n\n"; - + if ($#ARGV < 0) { help_screen(); } @@ -94,14 +96,14 @@ sub tool_api_init () { if (($ARGV[0] eq '-h') || ($ARGV[0] eq '-help')) { help_screen(); } - + } -############################################################################### -############################################################################### +######################################################################## +######################################################################## # MAIN -############################################################################### -############################################################################### +######################################################################## +######################################################################## sub tool_api_main () { @@ -134,15 +136,17 @@ sub tool_api_main () { my $id_event; my $option = $ARGV[4]; my $call_api; - + #~ help or api path (required) if ($ARGV[0] eq '-h') { print "HELP!\n"; help_screen(); - } elsif ($ARGV[0] ne '-p') { + } + elsif ($ARGV[0] ne '-p') { print "[ERROR] Missing API path! Read help info:\n\n"; help_screen (); - } else { + } + else { $api_path = $ARGV[1]; } @@ -154,108 +158,130 @@ sub tool_api_main () { if ($#db_info < 2) { print "[ERROR] Invalid database credentials! Read help info:\n\n"; help_screen(); - } else { + } + else { $api_pass = $db_info[0]; $db_user = $db_info[1]; $db_pass = $db_info[2]; } - } else { + } + else { print "[ERROR] Missing database credentials! Read help info:\n\n"; help_screen (); } if ($ARGV[4] eq '-create_event') { - #~ event name (required) - if ($ARGV[5] ne '-name') { - print "[ERROR] Missing event name! Read help info:\n\n"; - help_screen (); - } else { - $event_name = $ARGV[6]; - $data_event = $event_name; - } - - #~ id group (required) - if ($ARGV[7] ne '-group') { - print "[ERROR] Missing event group! Read help info:\n\n"; - help_screen (); - } else { - $id_group = $ARGV[8]; - #~ $data_event = $id_group; - $data_event .= "|".$id_group; - } - - #~ id agent (required) - if ($ARGV[9] ne '-agent') { - print "[ERROR] Missing id agent! Read help info:\n\n"; - help_screen (); - } else { - $id_agent = $ARGV[10]; - $data_event .= "|".$id_agent; - } - my $i = 0; foreach (@ARGV) { my $line = $_; + + #-----------DEBUG---------------------------- + #print("i " . $i . " line " . $line . "\n"); + + if ($line eq '-agent') { + $id_agent = $ARGV[$i + 1]; + } + if ($line eq '-group') { + $id_group = $ARGV[$i + 1]; + } + if ($line eq '-name') { + $event_name = $ARGV[$i + 1]; + } if ($line eq '-type') { - $event_type = $ARGV[$i+1]; + $event_type = $ARGV[$i + 1]; } if ($line eq '-agent_name') { - $agent_name = $ARGV[$i+1]; + $agent_name = $ARGV[$i + 1]; } if ($line eq '-user') { - $id_user = $ARGV[$i+1]; + $id_user = $ARGV[$i + 1]; } if ($line eq '-status') { - $status = $ARGV[$i+1]; + $status = $ARGV[$i + 1]; } if ($line eq '-am') { - $id_agent_module = $ARGV[$i+1]; + $id_agent_module = $ARGV[$i + 1]; } if ($line eq '-module_name') { - $module_name = $ARGV[$i+1]; + $module_name = $ARGV[$i + 1]; } if ($line eq '-alert') { - $id_alert_am = $ARGV[$i+1]; + $id_alert_am = $ARGV[$i + 1]; } if ($line eq '-criticity') { - $criticity = $ARGV[$i+1]; + $criticity = $ARGV[$i + 1]; } - #~ if ($line eq '-comment') { - #~ $user_comment = $ARGV[$i+1]; - #~ } if ($line eq '-tag') { - $tags = $ARGV[$i+1]; + $tags = $ARGV[$i + 1]; } if ($line eq '-source') { - $source = $ARGV[$i+1]; + $source = $ARGV[$i + 1]; } - #~ if ($line eq '-extra') { - #~ $id_extra = $ARGV[$i+1]; - #~ } if ($line eq '-c_instructions') { - $critical_instructions = $ARGV[$i+1]; + $critical_instructions = $ARGV[$i + 1]; } if ($line eq '-w_instructions') { - $warning_instructions = $ARGV[$i+1]; + $warning_instructions = $ARGV[$i + 1]; } if ($line eq '-u_instructions') { - $unknown_instructions = $ARGV[$i+1]; + $unknown_instructions = $ARGV[$i + 1]; } - #~ if ($line eq '-owner') { - #~ $owner_user = $ARGV[$i+1]; - #~ } + if ($line eq '-user_comment') { + $user_comment = $ARGV[$i + 1]; + } + if ($line eq '-owner_user') { + $owner_user = $ARGV[$i + 1]; + } + $i++; } - - $data_event .= "|".$status."|".$id_user."|".$event_type."|".$criticity."|".$id_agent_module."|".$id_alert_am."|".$critical_instructions."|".$warning_instructions."|".$unknown_instructions."|".$source.",".$tags; - $call_api = $api_path.'?op=set&op2=create_event&other='.$data_event.'&other_mode=url_encode_separator_|&apipass='.$api_pass.'&user='.$db_user.'&pass='.$db_pass; - - } elsif ($ARGV[4] eq '-validate_event') { - #~ id event(required) + + if ($event_name eq "") { + print "[ERROR] Missing id agent! Read help info:\n\n"; + help_screen (); + } + if ($id_group eq "") { + print "[ERROR] Missing event group! Read help info:\n\n"; + help_screen (); + } + if ($id_agent eq "") { + print "[ERROR] Missing id agent! Read help info:\n\n"; + help_screen (); + } + + $data_event = $event_name . + "|" . $id_group . + "|" . $id_agent . + "|" . $status . + "|" . $id_user . + "|" . $event_type . + "|" . $criticity . + "|" . $id_agent_module . + "|" . $id_alert_am . + "|" . $critical_instructions . + "|" . $warning_instructions . + "|" . $unknown_instructions . + "|" . $user_comment . + "|" . $owner_user . + "|" . $source . + "|" . $tags; + $call_api = $api_path . '?' . + 'op=set&' . + 'op2=create_event&' . + 'other=' . $data_event .'&' . + 'other_mode=url_encode_separator_|&' . + 'apipass=' . $api_pass . '&' . + 'user=' . $db_user . '&' . + 'pass=' . $db_pass; + + } + elsif ($ARGV[4] eq '-validate_event') { + #~ id event(required) if ($ARGV[5] ne '-id') { print "[ERROR] Missing id event! Read help info:\n\n"; help_screen (); - } else { + } + else { $id_event = $ARGV[6]; } @@ -263,29 +289,37 @@ sub tool_api_main () { } my @args = @ARGV; - my $ltotal=$#args; - + my $ltotal=$#args; + if ($ltotal < 0) { print "[ERROR] No valid arguments. Read help info:\n\n"; help_screen (); exit; } else { + #-----------DEBUG---------------------------- + #print($call_api . "\n\n\n"); + my $content = get($call_api); + #-----------DEBUG---------------------------- + #print($content . "\n\n\n"); + if ($option eq '-create_event') { if ($content eq undef) { print "[ERROR] Not respond or bad syntax. Read help info:\n\n"; help_screen(); - } else { + } + else { print "Event ID: $content"; } - } elsif ($option eq '-validate_event') { + } + elsif ($option eq '-validate_event') { print "[RESULT] $content"; } } - - print "\nExiting!\n\n"; - - exit; + + print "\nExiting!\n\n"; + + exit; }