http://192.168.32.101:3000/api/zabbix/add_Host?env=test&host=zjtest9-app&ip=192.168.32.250&groupid=11&templateid=10001 my $c = shift; my $env = $c->param('env'); my $host = $c->param('host'); my $ip = $c->param('ip'); my $groupid = $c->param('groupid'); my $templateid = $c->param('templateid'); if ($env eq "pro"){ my $client = new JSON::RPC::Client; my $url = 'http://192.168.32.xxx/zabbix/api_jsonrpc.php'; my $authID; my $response; my $json = { jsonrpc => "2.0", method => "user.login", params => { user => "admin", password => "zabbix" }, id => 1 }; $response = $client->call( $url, $json ); print "-----------------\n"; print $response->content->{result} . "\n"; # Check if response was successful die "Authentication failed\n" unless $response->content->{'result'}; $authID = $response->content->{'result'}; print "Authentication successful. Auth ID: " . $authID . "\n"; # Get list of all hosts using authID $json = { jsonrpc => '2.0', method => 'host.get', params => { output => [ 'hostid', 'name' ], # get only host id and host name sortfield => 'name', # sort by host name }, id => 2, auth => "$authID", }; $response = $client->call( $url, $json ); # Check if response was successful die "host.get failed\n" unless $response->content->{'result'}; print "List of hosts\n"; foreach my $host ( @{ $response->content->{result} } ) { print "Host ID: " . $host->{hostid} . " Host: " . $host->{name} . "\n"; } $json = { "jsonrpc" => "2.0", "method" => "host.create", "params" => { "host" => "$host", "interfaces" => [ { "type" => 1, "main" => 1, "useip" => 1, "ip" => "$ip", "dns" => "", "port" => "10050" } ], "groups" => [ { "groupid" => "$groupid" } ], "templates" => [ { "templateid" => "$templateid" } ] }, "auth" => "$authID", "id" => 1 }; $response = $client->call( $url, $json ); use Data::Dumper; my $str = Dumper($response); print $str; print "----------------------\n"; if ( $response->content->{result}){print "print $host added success\n"; $c->render(text => "$host added success" )} else {print $response->content->{error}->{data}; print "\n"; $c->render(text => "$response->content->{error}->{data}" )}
来源:https://www.cnblogs.com/zhaoyangjian724/p/6200102.html