diff --git a/contrib/README.md b/contrib/README.md new file mode 100644 index 000000000..a9271584d --- /dev/null +++ b/contrib/README.md @@ -0,0 +1,37 @@ +# HOWTO Centos + +Install dependencies: + + # yum install perl-devel 'perl(ExtUtils::Embed)' + +Compile the wrapper: + + # gcc -o cwrapper_perl cwrapper_perl.c `perl -MExtUtils::Embed -e ccopts -e ldopts` + +Create a fatpack: https://github.com/centreon/centreon-plugins/blob/master/docs/en/user/guide.rst#can-i-have-one-standalone-perl-file- + +Comment following lines in the end of fatpack file: + + use strict; + use warnings; + # Not perl embedded compliant at all + #use FindBin; + #use lib "$FindBin::Bin"; + # use lib '/usr/lib/nagios/plugins/'; + + use centreon::plugins::script; + + centreon::plugins::script->new()->run(); + +Set setuid right: + + # chown root:root cwrapper_perl + # chmod 4775 cwrapper_perl + +Test it: + + $ cwrapper_perl centreon_protocol_udp.pl --plugin --mode=connection --hostname=10.30.2.65 --port=161 + + + + diff --git a/contrib/cwrapper_perl.c b/contrib/cwrapper_perl.c new file mode 100644 index 000000000..a3bacaae6 --- /dev/null +++ b/contrib/cwrapper_perl.c @@ -0,0 +1,26 @@ +#include +#include + +static PerlInterpreter *my_perl; +static void xs_init (pTHX); + +EXTERN_C void boot_DynaLoader (pTHX_ CV* cv); +EXTERN_C void xs_init(pTHX) +{ + char *file = __FILE__; + /* DynaLoader is a special case */ + newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file); +} + +int main (int argc, char **argv, char **env) +{ + PERL_SYS_INIT3(&argc, &argv, &env); + my_perl = perl_alloc(); + perl_construct(my_perl); + PL_exit_flags |= PERL_EXIT_DESTRUCT_END; + perl_parse(my_perl, xs_init, argc, argv, (char **)NULL); + perl_run(my_perl); + perl_destruct(my_perl); + perl_free(my_perl); + PERL_SYS_TERM(); +}