Мониторим время оплаты домена в zabbix

Идем в /var/lib/zabbixsrv/externalscripts (CentOS, путь по умолчанию), и создаем domain.sh
[cc]whois $1 | grep paid | perl -e ‘use Time::Local;$_ = <>; /paid-till:\s*(\d+)\.(\d+)\.(\d+)/; print timelocal(0,0,0,$3,$2-1,$1) — time() . «\n»;'[/cc] Если у нас заббикс 1.8, то $1 меняем на $2 (только в самом начале!! в выражении перла менять не нужно), потому что старый заббикс первым параметром передает ip\имя узла, на котором заведен айтем. Ах да, регулярка только для ru, для других зон придеться переделывать.

Потом «Настройка» — «Узлы сети» — Создаем фейковый хост с ip 127.0.0.1 c понятным именем группе Fake hosts(Эту группу я создал ранее и использую для всякого мониторинга данных не с реальных хостов.

У данного хоста заводим айтем:
Тип — Внешняя проверка
Ключ — domain.sh[«yukra.ru»]
Тип информации — Числовой(целое положительное)
Тип данный — s
Интервал обновления, Хранение истории, Хранение динамики — по вкусу, у меня 86400 (1 сутки), 14, 30

По желанию можно навесить триггеры. У меня на «меньше 2592000» (30 суток) и «меньше 604800» (7 суток).

You can skip to the end and leave a response. Pinging is currently not allowed.

9 комментариев to “Мониторим время оплаты домена в zabbix”

  1. 7a15f6570a3d4d7de9ce66463a585582:

    Зачем же так издеваться на людьми? В перле есть command options — n,l.
    $ perl -h | perl -ne ‘print if /^\s+(\-n|\-l)/’
    -l[octal] enable line ending processing, specifies line terminator
    -n assume «while () { … }» loop around program
    Можно городить свой велосипед, вместо использования стандартных средств. Но только логично иметь для этого причину. Здесь она неочевидна, мягко говоря. А читабельность ухудшается.

    Мой вариант quick and dirty кода:
    #!/usr/bin/env ruby

    require «date»

    domain_name = ARGV.shift

    def whois_out domain #parse whois output; get domain name and return paid till date
    cmd = «whois + #{domain}»
    IO.popen(cmd) {|pipe|
    if pipe.read =~ /paid-till:\s+(.*)/
    return record = $1
    end
    }
    end

    till = whois_out(domain_name)
    days_left = (DateTime.parse(«#{till}») — DateTime.now).to_i
    p days_left

  2. 7a15f6570a3d4d7de9ce66463a585582:

    #!/usr/bin/env ruby

    require «date»

    domain_name = ARGV.shift

    def whois_out domain #parse whois output; get domain name and return paid till date
    cmd = «whois + #{domain}»
    IO.popen(cmd) {|pipe|
    if pipe.read =~ /paid-till:\s+(.*)/
    return record = $1
    end
    }
    end

    till = whois_out(domain_name)
    days_left = (DateTime.parse(«#{till}») — DateTime.now).to_i
    p days_left

  3. 7a15f6570a3d4d7de9ce66463a585582:

    Поскольку не знаю как отформатированное сообщение в wordpress сделать, а pastebin валяется, то запостил код на гитхаб:
    https://github.com/letitberandom/scripts/blob/master/paid_till.rb

  4. yukra:

    Эээ … это мой блог, в который я пишу для себя что бы потом самому сюда смотреть когда понадобиться. Твой вариант конечно красивей, энтерпрайзней и все такое, но у меня и мой работает :)

    Ps [cc ] code [ /cc]

  5. yukra:

    Я даже сначала не заметил «#!/usr/bin/env ruby» … Это как бы сразу нет. Не тогов я держать на сервере еще 1 скриптовый язык общего назначения что бы гонять через него пару файлов.

  6. 7a15f6570a3d4d7de9ce66463a585582:

    Джава хоть есть на сервере?
    https://github.com/letitberandom/scripts/blob/master/Domain.java

    • yukra:

      Ты что? откуда … я приличный человек :) CentOS minimal + php + perl + mysql + apache + nginx + zabbix + по мелочи.

  7. Ruslango:

    Добрый день! А не подскажете регулярки для других зон?
    В частности интересуют .рф .info .com .pro .москва
    Спасибо!

Leave a Reply

Subscribe to RSS Feed