https://github.com/v-zhuravlev/zabbixapi
Zabbix API perl module provided as is.
https://github.com/v-zhuravlev/zabbixapi
zabbix zabbix-api
Last synced: 7 months ago
JSON representation
Zabbix API perl module provided as is.
- Host: GitHub
- URL: https://github.com/v-zhuravlev/zabbixapi
- Owner: v-zhuravlev
- Created: 2016-10-24T16:00:02.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-12-22T15:44:11.000Z (about 8 years ago)
- Last Synced: 2025-04-09T18:11:02.118Z (11 months ago)
- Topics: zabbix, zabbix-api
- Language: Perl
- Size: 11.7 KB
- Stars: 1
- Watchers: 4
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ZabbixAPI
Zabbix API perl module provided as is.
## Dependencies
Perl modules required:
```
LWP
JSON::XS
```
There are numerous ways to install them:
| in Debian | In Centos* | using CPAN | using cpanm|
|------------|-----------|------------|------------|
| `apt-get install libwww-perl libjson-xs-perl` | `yum install perl-JSON-XS perl-libwww-perl perl-LWP-Protocol-https` | `PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install Bundle::LWP'` and `PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install JSON::XS'` | `cpanm install LWP` and `cpanm install JSON::XS`|
## Sample usage
### Login / logout
```perl
$zbx = ZabbixAPI->new( { api_url => $url, username => $user, password => $password } );
$zbx->login();
## DO SOMETHING
$zbx->logout();
```
### Get params from raw JSON(copy and paste params from Zabbix API documentation examples):
```perl
$json = <<'END_PARAMS';
{
"output": ["host","name","hostid","status"],
"selectInventory": "extend",
"search": {"host":"myname"}
}
END_PARAMS
my $host_result = $zbx->do_raw('host.get',$json);
```
### Or prepare params using perl hash:
```perl
my $json = {
hostid => 10084,
selectParentTemplates => 'extend'
};
my $host_obj=$zbx->do('host.get',$json);
```
### Create mediatype
```perl
#setup email
$json = <<'END_PARAMS';
{
"description": "E-mail localhost only",
"type": 0,
"smtp_server": "localhost",
"smtp_helo": "localhost",
"smtp_email": "admin@localhost.localdomain"
}
END_PARAMS
$params = JSON::XS->new->utf8->decode($json);
$result = $zbx->create_or_update_mediatype($params);
```
### Import Templates from XML files (with create,update,delete options all ticked)
```perl
$zbx->import_configuration_from_file("$file");
```
### Import all Templates from XML files in specific directory:
```perl
#!/usr/bin/perl
use warnings;
use strict;
use FindBin qw($Bin);
use lib "$Bin/ZabbixAPI";
use Data::Dumper;
use ZabbixAPI;
my $username = 'Admin';
my $password = 'zabbix';
my $api_url = 'http://localhost/zabbix/api_jsonrpc.php';
my $zbx;
my $params;
my $json;
my $result;
$zbx = ZabbixAPI->new( { api_url=>$api_url, username => $username, password => $password } );
$zbx->login();
my $temp_dir = $ARGV[0] or die "Please provide directory with templates as first ARG\n";
opendir my $dir, $temp_dir or die "Cannot open directory: $!";
my @files = grep { /\.xml$/ && -f "$temp_dir/$_" } readdir($dir);
closedir $dir;
foreach my $file (@files) {
print $file."\n";
$zbx->import_configuration_from_file("$temp_dir/$file");
}
$zbx->logout();
```
### Import all images from directory and make them icons (mass import of icons)
see https://github.com/v-zhuravlev/ZabbixAPI/blob/master/bin/zabbix-add-images.pl sample script. Then run
`perl zabbix-add-images.pl dir_with_png_icons`
or
`perl zabbix-add-images.pl png_icon_file`
For example:
```
[vagrant@zabbix-lab zabbix]$ perl zabbix-add-images.pl zbx_pics/zabbix_import/
zbx_pics/zabbix_import//aircondition.png
zbx_pics/zabbix_import//dlink_des3526.png
zbx_pics/zabbix_import//dlink_des3526_10px.png
zbx_pics/zabbix_import//dlink_des3526_15px.png
zbx_pics/zabbix_import//dlink_des3526_25px.png
zbx_pics/zabbix_import//dlink_des3528.png
zbx_pics/zabbix_import//dlink_des3528_10px.png
zbx_pics/zabbix_import//dlink_des3528_15px.png
zbx_pics/zabbix_import//dlink_des3528_25px.png
...
zbx_pics/zabbix_import//ubnt_sector_l_100px.png
zbx_pics/zabbix_import//ubnt_sector_l_25px.png
zbx_pics/zabbix_import//ubnt_sector_l_50px.png
zbx_pics/zabbix_import//ubnt_sector_r.png
zbx_pics/zabbix_import//ubnt_sector_r_100px.png
zbx_pics/zabbix_import//ubnt_sector_r_25px.png
zbx_pics/zabbix_import//ubnt_sector_r_50px.png
```