čtvrtek 14. března 2013

GNU date vs BSD date

Pro kotrolu validace SSL certifikátů v Zabbixu jsem se rozhodl použít návod na wiki.zabbix, kde je odkaz na podrobnější autorův web.

Vše by fungovalo, až na malou drobnost a tou je následující příkaz, který je součástí scriptu, porovnávající datum z certifikátu s aktuálním časem. BSD date a GNU date je jiný a parametry jsou jine.

BSD date

date '+%s' --date "Dec 29 23:59:59 2013 GMT"
date: illegal time format
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
            [-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format]


Script zext_ssl_check.sh, který používá OpenSSL (openssl s_client) pro zjištění data expirace certifikátu jsem si postupně prošel až jsem narazil na příkaz date. Abych FreeBSD naučil GNU date - gdate, musel jsem doinstalovat následující balíček coreutils.

coreutils-8.20_2    The Free Software Foundation's core utilities

Pak už příkaz dělal co má.

GNU date

gdate '+%s' --date "Dec 29 23:59:59 2013 GMT"
1388361599


Pak už příkaz dělal co má. Na stránce autora jsou dvě verze scriptu pro kontrolu SSL certifikátů. Jedna je z webu a druha je z svn.

Verze s svn vraci jen počet dní do expirace.

./zext_ssl_check.sh edu.mudk.cz 443
290


Verze z webu ma širší použití.

./zext_ssl_cert.sh
usage: ./zext_ssl_cert.sh [-i|-d] hostname port
    -i Show Issuer
    -d Show valid days remaining


./zext_ssl_cert.sh -i edu.mudk.cz 443
Thawte DV SSL CA


./zext_ssl_cert.sh -d edu.mudk.cz 443
290

Ke každému scriptu je extra Template. Použil jsem verzi z svn, ale musel jsem Template modifikovat pro Zabbix 2.0.5. Konkrétně mi External_check nefungoval.

Mnou upravená definice klíče.
zext_ssl_check.sh[{HOST.CONN},{$SSL_PORT}]

V Template bylo. Zkrátka musíme vědět co a jak je kde třeba :-)

zext_ssl_cert.sh[{$SSL_PORT}]

s tím, že varianta

zext_ssl_check.sh[{HOST.CONN}, {$SSL_PORT}]
a
zext_ssl_check.sh[{HOST.CONN} {$SSL_PORT}]

mi nefunovala v Zabbixu 2.0.5.

Žádné komentáře: