N
N
Nikolay Baranenko2017-11-18 11:16:06
Perl
Nikolay Baranenko, 2017-11-18 11:16:06

Why is Can't call method "content" on an undefined value returned?

Hello.
to connect to zabbix api wrote the following code in perl

#!/usr/bin/perl
use 5.010;
use strict;
use warnings FATAL => 'all';
use JSON::RPC::Client;
use Data::Dumper;

# Authenticate yourself
my $client = new JSON::RPC::Client;
my $url = 'https://zabbix/api_jsonrpc.php';
my $authID;
my $response;

my $json = {
    jsonrpc => "2.0",
    method => "user.login",
    params => {
        user => "admin",
        password => "admin"
    },
    id => 1
};

$response = $client->call($url, $json);

# 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-----------------------------\n";
foreach my $host (@{$response->content->{result}}) {
    print "Host ID: ".$host->{hostid}." Host: ".$host->{name}."\n";
}

an error is returned about the impossibility of calling the method or the value is undefined
Can't call method "content" on an undefined value at ZabbixAPI_Get.pl line 27.
die "Authentication failed\n" unless $response->content->{'result'};

How to solve this problem?

Answer the question

In order to leave comments, you need to log in

2 answer(s)
L
Leonid Nikolaev, 2017-11-18
@nikonor

something tells you that you need to dig in the direction of httpS. I have never been a specialist in zabbix and rpc, but the fact that the connection goes via TSL, and nothing is said about it in the connection settings, is somehow surprising.
but this is just a version. the best place to start is by looking at the zabbix logs.

P
parserpro, 2017-11-23
@parserpro

The reason for the error is that undef is returned to the $response variable, from which it is quite logical to call the content method.
Why this happens is the second question, but the domain in the $url variable looks suspicious.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question