This is a little tutorial of passive checks with shinken easily
** Configure shinken (with 2.4)
*** Installation

Code:
- pip install shinken --upgrade (if needed)
- shinken install nsca
- shinken install ws-arbiter
** Configure shinken (patch files)

- file /etc/shinken/arbiters/arbiter-master.cfg add "modules ws-arbiter"
- file /etc/shinken/receivers/receiver-master.cfg add "modules nsca"
- file /etc/shinken/shinken.cfg add

Code:
accept_passive_service_checks=1
accept_passive_host_checks=1
** configure host & services
Code:
$cat /etc/shinken/services/passive_check.cfg
Code:
define service{
hostgroup_name aix5
service_description passive_checks
passive_checks_enabled 1
active_checks_enabled 0
use generic-service
check_command configuration-check
is_volatile 1
}
host:
define host{
use generic-host
contact_groups admins
host_name name
alias alias_name
address ip
parents localhost
passive_checks_enabled 1
}
** Send a request
DOES NOT WORK ON LOCALHOST!!! (BIND ADRESS...)
*** curl test
curl -d "time_stamp=$(date +%s)&host_name=GOPV&service_description=passive_checks&return_code=0" --data "output=Everything OK" http://172.19.6.90:8860/push_check_resultcurl
*** in perl (works on perl 5.8.8+)
#!/usr/bin/perl -w
use strict;
use LWP::UserAgent;
use HTTP::Request::Common;
my $userAgent = LWP::UserAgent->new(agent => 'perl post');
my $time= time();
my $message = "time_stamp=$time&host_name=name&service_description=passive_checks&return_code=0&output=Everything OK";
my $response = $userAgent->request(POST 'http://shinken:7760/push_check_result',
Content => $message);
print $response->error_as_HTML unless $response->is_success;
print $response->as_string;

Provably an expert can do better, but it work's well!!