From 8f2d80bab04cbdbc811ff10ea222aac0c8ee5335 Mon Sep 17 00:00:00 2001 From: Ramon Novoa Date: Mon, 22 Feb 2021 17:32:43 +0100 Subject: [PATCH 1/3] Update pandora_agent_daemon to work with PAR:Packer binaries. Binaries compiled with PAR::Packer insert blanks between the name of the executable and the first command line argument, which breaks startup scripts. --- pandora_agents/unix/pandora_agent_daemon | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pandora_agents/unix/pandora_agent_daemon b/pandora_agents/unix/pandora_agent_daemon index ae48a57b4b..d8ac14fb77 100755 --- a/pandora_agents/unix/pandora_agent_daemon +++ b/pandora_agents/unix/pandora_agent_daemon @@ -42,6 +42,8 @@ pidof_pandora () { elif [ "$OS_NAME" = "SunOS" ] then ZONENAME_CMD="/bin/zonename" + # Has to be run from sources. The binary version inserts blanks between + # $DAEMON and $PANDORA_PATH. TRUNCATED_DAEMON=`echo "$DAEMON $PANDORA_PATH" | cut -c1-20` if [ -x $ZONENAME_CMD ] then @@ -59,7 +61,7 @@ pidof_pandora () { then # Virtuozzo/OpenVZ local _pid _ctid _pids - _pids=`ps -Af | grep "$DAEMON $PANDORA_PATH" | grep -v grep | awk '{ print $2 }'` + _pids=`ps -Af | grep "$DAEMON" | grep "$PANDORA_PATH" | grep -v grep | awk '{ print $2 }'` [ "$_pids" ] && for _pid in $_pids do _ctid=`/usr/sbin/vzpid $_pid | awk '$1 == '$_pid' { print $2 }'` @@ -71,9 +73,9 @@ pidof_pandora () { done elif [ "$OS_NAME" = "AIX" ]; then # AIX - PANDORA_PID=`ps -ef | grep "$DAEMON $PANDORA_PATH" | grep -v grep | awk '{ print $2 }'` + PANDORA_PID=`ps -ef | grep "$DAEMON" | grep "$PANDORA_PATH" | grep -v grep | awk '{ print $2 }'` else - PANDORA_PID=`ps -Afw | grep "$DAEMON $PANDORA_PATH" | grep -v grep | awk '{ print $2 }'` + PANDORA_PID=`ps -Afw | grep "$DAEMON" | grep "$PANDORA_PATH" | grep -v grep | awk '{ print $2 }'` fi echo $PANDORA_PID From 8edaad4e5a63011413383b4b81e15e9043053dac Mon Sep 17 00:00:00 2001 From: Ramon Novoa Date: Thu, 15 Apr 2021 17:56:02 +0200 Subject: [PATCH 2/3] Push /usr/lib/perl5 to the back of the module search path. When /usr/lib/perl5 is added to the front of the module search path it takes precedence over libraries distributed with binary versions of Pandora FMS. This can be fixed by pushing it to the back instead. --- pandora_agents/unix/pandora_agent | 6 +++--- pandora_agents/unix/pandora_revent | 2 +- pandora_agents/win32/omnishell/omnishell_client.pl | 2 +- pandora_console/install.php | 2 +- pandora_plugins/MySQL/pandora_mysql.pl | 2 +- pandora_plugins/intel_dcm/intel_dcm_discovery.pl | 2 +- pandora_server/bin/pandora_server | 2 +- pandora_server/lib/PandoraFMS/Config.pm | 2 +- pandora_server/lib/PandoraFMS/Core.pm | 2 +- pandora_server/lib/PandoraFMS/DB.pm | 2 +- pandora_server/lib/PandoraFMS/DataServer.pm | 2 +- pandora_server/lib/PandoraFMS/DiscoveryServer.pm | 2 +- pandora_server/lib/PandoraFMS/GIS.pm | 2 +- pandora_server/lib/PandoraFMS/NetworkServer.pm | 2 +- pandora_server/lib/PandoraFMS/Omnishell.pm | 4 ++-- pandora_server/lib/PandoraFMS/PluginServer.pm | 2 +- pandora_server/lib/PandoraFMS/PredictionServer.pm | 2 +- pandora_server/lib/PandoraFMS/ProducerConsumerServer.pm | 2 +- pandora_server/lib/PandoraFMS/Recon/Base.pm | 2 +- pandora_server/lib/PandoraFMS/Recon/Util.pm | 2 +- pandora_server/lib/PandoraFMS/SNMPServer.pm | 2 +- pandora_server/lib/PandoraFMS/Server.pm | 2 +- pandora_server/lib/PandoraFMS/Tools.pm | 2 +- pandora_server/lib/PandoraFMS/WMIServer.pm | 2 +- pandora_server/util/agent_gis_update.pl | 2 +- pandora_server/util/gpx2pandora_agent_data.pl | 2 +- pandora_server/util/pandora_database_check.pl | 2 +- pandora_server/util/pandora_db.pl | 2 +- pandora_server/util/pandora_dbstress.pl | 2 +- pandora_server/util/pandora_manage.pl | 2 +- pandora_server/util/pandora_migrate_logs.pl | 2 +- pandora_server/util/pandora_migrate_plugins.pl | 2 +- pandora_server/util/pandora_migrate_recon_scripts.pl | 2 +- pandora_server/util/pandora_perf_report.pl | 2 +- pandora_server/util/pandora_recode_db.pl | 2 +- pandora_server/util/pandora_revent.pl | 2 +- pandora_server/util/pandora_smpp.pl | 2 +- pandora_server/util/pandora_sync_db.pl | 2 +- pandora_server/util/plugin/pandora_snmp_bandwidth.pl | 2 +- pandora_server/util/recon_scripts/ipmi-recon.pl | 2 +- pandora_server/util/recon_scripts/snmp-recon.pl | 2 +- pandora_server/util/recon_scripts/wmi-recon.pl | 2 +- 42 files changed, 45 insertions(+), 45 deletions(-) diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index bf76858723..6cd1040763 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -39,7 +39,7 @@ BEGIN { use File::Copy; use Scalar::Util qw(looks_like_number); - use lib '/usr/lib/perl5'; + BEGIN { push @INC, '/usr/lib/perl5'; } ################################################################################ # Erase blank spaces before and after the string @@ -312,7 +312,7 @@ BEGIN { $YAML = 1; } - use lib '/usr/lib/perl5'; + BEGIN { push @INC, '/usr/lib/perl5'; } our @ISA = ("Exporter"); our %EXPORT_TAGS = ( 'all' => [ qw( ) ] ); @@ -1004,7 +1004,7 @@ use IO::Socket; use Sys::Syslog; use Time::Local; -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } # Agent XML data my $Xml; diff --git a/pandora_agents/unix/pandora_revent b/pandora_agents/unix/pandora_revent index 3af581decb..c479213c44 100755 --- a/pandora_agents/unix/pandora_revent +++ b/pandora_agents/unix/pandora_revent @@ -13,7 +13,7 @@ use strict; use LWP::Simple; use MIME::Base64; -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Tools; # Init diff --git a/pandora_agents/win32/omnishell/omnishell_client.pl b/pandora_agents/win32/omnishell/omnishell_client.pl index 1a684e5448..96700709b8 100644 --- a/pandora_agents/win32/omnishell/omnishell_client.pl +++ b/pandora_agents/win32/omnishell/omnishell_client.pl @@ -11,7 +11,7 @@ use strict; use warnings; use File::Basename; -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::PluginTools; use PandoraFMS::Omnishell; diff --git a/pandora_console/install.php b/pandora_console/install.php index 89ece9a51c..17df1a2744 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
[ qw( ) ] ); diff --git a/pandora_server/lib/PandoraFMS/PluginServer.pm b/pandora_server/lib/PandoraFMS/PluginServer.pm index a6b4d68ecd..1dd6a8f679 100644 --- a/pandora_server/lib/PandoraFMS/PluginServer.pm +++ b/pandora_server/lib/PandoraFMS/PluginServer.pm @@ -30,7 +30,7 @@ use JSON qw(decode_json); use Encode qw(encode_utf8 decode_utf8); # Default lib dir for RPM and DEB packages -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Tools; use PandoraFMS::DB; diff --git a/pandora_server/lib/PandoraFMS/PredictionServer.pm b/pandora_server/lib/PandoraFMS/PredictionServer.pm index 5cd5cbe2cf..19b4f6792a 100644 --- a/pandora_server/lib/PandoraFMS/PredictionServer.pm +++ b/pandora_server/lib/PandoraFMS/PredictionServer.pm @@ -29,7 +29,7 @@ use Net::Ping; use POSIX qw(strftime); # Default lib dir for RPM and DEB packages -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Tools; use PandoraFMS::DB; diff --git a/pandora_server/lib/PandoraFMS/ProducerConsumerServer.pm b/pandora_server/lib/PandoraFMS/ProducerConsumerServer.pm index 3a9a73d46c..a850d8e77a 100644 --- a/pandora_server/lib/PandoraFMS/ProducerConsumerServer.pm +++ b/pandora_server/lib/PandoraFMS/ProducerConsumerServer.pm @@ -25,7 +25,7 @@ use threads::shared; use Thread::Semaphore; # Default lib dir for RPM and DEB packages -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::DB; use PandoraFMS::Core; diff --git a/pandora_server/lib/PandoraFMS/Recon/Base.pm b/pandora_server/lib/PandoraFMS/Recon/Base.pm index 009b14b87c..f0b70cd0df 100644 --- a/pandora_server/lib/PandoraFMS/Recon/Base.pm +++ b/pandora_server/lib/PandoraFMS/Recon/Base.pm @@ -12,7 +12,7 @@ use IO::Socket::INET; use POSIX qw/ceil/; use Socket qw/inet_aton/; -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Tools; use PandoraFMS::Recon::NmapParser; use PandoraFMS::Recon::Util; diff --git a/pandora_server/lib/PandoraFMS/Recon/Util.pm b/pandora_server/lib/PandoraFMS/Recon/Util.pm index 32bc921806..62b79646e5 100644 --- a/pandora_server/lib/PandoraFMS/Recon/Util.pm +++ b/pandora_server/lib/PandoraFMS/Recon/Util.pm @@ -7,7 +7,7 @@ use strict; use warnings; # Default lib dir for RPM and DEB packages. -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use Socket qw/inet_aton/; diff --git a/pandora_server/lib/PandoraFMS/SNMPServer.pm b/pandora_server/lib/PandoraFMS/SNMPServer.pm index 2a0eb7ff08..1acf9363f4 100644 --- a/pandora_server/lib/PandoraFMS/SNMPServer.pm +++ b/pandora_server/lib/PandoraFMS/SNMPServer.pm @@ -31,7 +31,7 @@ use XML::Simple; use Scalar::Util qw(looks_like_number); # Default lib dir for RPM and DEB packages -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Tools; use PandoraFMS::DB; diff --git a/pandora_server/lib/PandoraFMS/Server.pm b/pandora_server/lib/PandoraFMS/Server.pm index d3587556d8..0d552104f1 100644 --- a/pandora_server/lib/PandoraFMS/Server.pm +++ b/pandora_server/lib/PandoraFMS/Server.pm @@ -25,7 +25,7 @@ use threads; use threads::shared; # Default lib dir for RPM and DEB packages -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::DB; use PandoraFMS::Core; diff --git a/pandora_server/lib/PandoraFMS/Tools.pm b/pandora_server/lib/PandoraFMS/Tools.pm index 7d7c3fbfd9..d583f75335 100755 --- a/pandora_server/lib/PandoraFMS/Tools.pm +++ b/pandora_server/lib/PandoraFMS/Tools.pm @@ -34,7 +34,7 @@ use threads::shared; use JSON; use Encode qw/decode_utf8 encode_utf8/; -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Sendmail; # New in 3.2. Used to sendmail internally, without external scripts diff --git a/pandora_server/lib/PandoraFMS/WMIServer.pm b/pandora_server/lib/PandoraFMS/WMIServer.pm index 74b32f50a0..fb305043a5 100644 --- a/pandora_server/lib/PandoraFMS/WMIServer.pm +++ b/pandora_server/lib/PandoraFMS/WMIServer.pm @@ -28,7 +28,7 @@ use POSIX qw(strftime); use HTML::Entities; # Default lib dir for RPM and DEB packages -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Tools; use PandoraFMS::DB; diff --git a/pandora_server/util/agent_gis_update.pl b/pandora_server/util/agent_gis_update.pl index 5b4aee0062..492e899cd2 100755 --- a/pandora_server/util/agent_gis_update.pl +++ b/pandora_server/util/agent_gis_update.pl @@ -26,7 +26,7 @@ use POSIX qw(strftime); use Time::HiRes qw(usleep); # Default lib dir for RPM and DEB packages -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Core; use PandoraFMS::Config; diff --git a/pandora_server/util/gpx2pandora_agent_data.pl b/pandora_server/util/gpx2pandora_agent_data.pl index bc2a18131e..5734a277dc 100755 --- a/pandora_server/util/gpx2pandora_agent_data.pl +++ b/pandora_server/util/gpx2pandora_agent_data.pl @@ -13,7 +13,7 @@ use Sys::Hostname; use POSIX qw(strftime); # Default lib dir for RPM and DEB packages -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Tools; diff --git a/pandora_server/util/pandora_database_check.pl b/pandora_server/util/pandora_database_check.pl index f393971036..caaab90629 100755 --- a/pandora_server/util/pandora_database_check.pl +++ b/pandora_server/util/pandora_database_check.pl @@ -31,7 +31,7 @@ use POSIX qw(strftime); use Time::HiRes qw( clock_gettime clock ) ; # Default lib dir for RPM and DEB packages -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Tools; use PandoraFMS::DB; diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index b9b9eda215..457a9113d8 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -27,7 +27,7 @@ use File::Path qw(rmtree); use Time::HiRes qw(usleep); # Default lib dir for RPM and DEB packages -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Core; use PandoraFMS::Tools; diff --git a/pandora_server/util/pandora_dbstress.pl b/pandora_server/util/pandora_dbstress.pl index 884d05d184..4f74631bdf 100755 --- a/pandora_server/util/pandora_dbstress.pl +++ b/pandora_server/util/pandora_dbstress.pl @@ -35,7 +35,7 @@ use Math::Trig; # Math functions use Time::HiRes qw ( clock_gettime CLOCK_REALTIME); # Default lib dir for RPM and DEB packages -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } # Pandora Modules use PandoraFMS::Config; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 0f46af4b43..e2c5183e3b 100755 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -24,7 +24,7 @@ use LWP::Simple; use Data::Dumper; # Default lib dir for RPM and DEB packages -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Tools; use PandoraFMS::DB; diff --git a/pandora_server/util/pandora_migrate_logs.pl b/pandora_server/util/pandora_migrate_logs.pl index e0e58d813a..952db03272 100644 --- a/pandora_server/util/pandora_migrate_logs.pl +++ b/pandora_server/util/pandora_migrate_logs.pl @@ -13,7 +13,7 @@ use JSON; use IO::Socket::INET; use File::Copy; -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Config; use PandoraFMS::Tools; diff --git a/pandora_server/util/pandora_migrate_plugins.pl b/pandora_server/util/pandora_migrate_plugins.pl index b8496be970..cfe2d6f90f 100644 --- a/pandora_server/util/pandora_migrate_plugins.pl +++ b/pandora_server/util/pandora_migrate_plugins.pl @@ -18,7 +18,7 @@ use Data::Dumper; use JSON qw(encode_json); # Default lib dir for RPM and DEB packages -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Tools; use PandoraFMS::DB; diff --git a/pandora_server/util/pandora_migrate_recon_scripts.pl b/pandora_server/util/pandora_migrate_recon_scripts.pl index 568c5e73b2..cc69a40a52 100644 --- a/pandora_server/util/pandora_migrate_recon_scripts.pl +++ b/pandora_server/util/pandora_migrate_recon_scripts.pl @@ -18,7 +18,7 @@ use Data::Dumper; use JSON qw(encode_json); # Default lib dir for RPM and DEB packages -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Tools; use PandoraFMS::DB; diff --git a/pandora_server/util/pandora_perf_report.pl b/pandora_server/util/pandora_perf_report.pl index baef0cc5cd..87d2e7936f 100644 --- a/pandora_server/util/pandora_perf_report.pl +++ b/pandora_server/util/pandora_perf_report.pl @@ -10,7 +10,7 @@ use POSIX qw (strftime floor); use Sys::Hostname; use Time::HiRes qw(gettimeofday tv_interval); -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } # Pandora Modules. use PandoraFMS::Config; diff --git a/pandora_server/util/pandora_recode_db.pl b/pandora_server/util/pandora_recode_db.pl index 4c334d34bc..09923fba45 100755 --- a/pandora_server/util/pandora_recode_db.pl +++ b/pandora_server/util/pandora_recode_db.pl @@ -16,7 +16,7 @@ use POSIX; use HTML::Entities; # Encode or decode strings with HTML entities # Default lib dir for RPM and DEB packages -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Tools; use PandoraFMS::DB; diff --git a/pandora_server/util/pandora_revent.pl b/pandora_server/util/pandora_revent.pl index 5a517ffe40..5a1536b79a 100755 --- a/pandora_server/util/pandora_revent.pl +++ b/pandora_server/util/pandora_revent.pl @@ -13,7 +13,7 @@ use strict; use LWP::Simple; use MIME::Base64; -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::Tools; # Init diff --git a/pandora_server/util/pandora_smpp.pl b/pandora_server/util/pandora_smpp.pl index 720d0e9589..49f0346d5e 100755 --- a/pandora_server/util/pandora_smpp.pl +++ b/pandora_server/util/pandora_smpp.pl @@ -5,7 +5,7 @@ use warnings; use Net::SMPP; -use lib '/usr/lib/perl5'; +BEGIN { push @INC, '/usr/lib/perl5'; } use PandoraFMS::PluginTools qw(read_configuration); my $HELP =< Date: Wed, 5 May 2021 17:42:33 +0200 Subject: [PATCH 3/3] Update pandora_server to work with PAR:Packer binaries. Binaries compiled with PAR::Packer insert blanks between the name of the executable and the first command line argument, which breaks startup scripts. --- pandora_server/util/pandora_server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_server/util/pandora_server b/pandora_server/util/pandora_server index 89beee8e55..92eb689bd9 100755 --- a/pandora_server/util/pandora_server +++ b/pandora_server/util/pandora_server @@ -79,7 +79,7 @@ function pidof_pandora () { # in a "strech" term, ps aux don't report more than COLUMNS # characters and this will not work. COLUMNS=300 - PANDORA_PID=`ps aux | grep "$PANDORA_DAEMON $PANDORA_HOME" | grep -v grep | tail -1 | awk '{ print $2 }'` + PANDORA_PID=`ps aux | grep "$PANDORA_DAEMON" | grep "$PANDORA_HOME" | grep -v grep | tail -1 | awk '{ print $2 }'` echo $PANDORA_PID }