証明書の有効期限スクリプトを取得します。
の/ etc / ZABBIX /スクリプト/チェック-CERT-ザ・有効期限が切れる。SH : #!/ binに/ bashのの ホスト = $ 1 ポート = $ 2 END_DATE = `は/ usr / binに/ホストのOpenSSL s_client -servername $ $ $ホスト-host -port -showcertsポート<は/ dev / nullに 2 >は/ dev / nullを | わかるsed -n ' / CERTIFICATE / BEGIN / END CERT / P ' | は/ usr / binに/ X509のOpenSSL -text 2 >は/ dev / nullを | sedの -n ' S / *未後:* P // ' ` #OpenSSLのSSL証明書の検証と妥当性確認。 # -SNI特性検査を使用して、ホスト証明書が複数存在することに起因するサーバー名$ホスト # </ DEV / ヌルインタラクティブプログラムハングアップを防止するために、方向入力規格を、。以下からの/ dev / nullでの読み取り、0が直接読み出されます。 #SEDが唯一の一致部分を表示するために、-nおよびPと共に使用しました。// 、// 一致する範囲。 OpenSSLのX509# - 証明書の有効性を含むテキストデコード証明書情報、。 IF [-n " $のEND_DATE " ] 、その後 end_date_seconds = ` DATE ' +%のS ' - DATE " の$ END_DATE " ` now_seconds = ` DATE ' + Sの%' ` エコー "($ end_date_seconds- $ now_seconds)/ 3600分の24 」 | 紀元前 Fiの
自動ディスカバリドメインスクリプト:
#は/ usr / binに/のenvパイソン! #コーディング:UTF 8 インポートOS のインポートSYS インポートのJSON #この関数は、ZABBIXのための辞書の特定のフォーマット構築するために主にある DEFの:ssl_cert_discovery() web_list = [] web_dict =を{ " データ" :なし} 開くと(" の/ etc / ZABBIX /スクリプト/ ssl_cert_list " " R&LT " )F AS: のためのsslcert におけるF: 辞書 = {} 辞書[ " {} #DOMAINNAME" ] = sslcert.strip()。スプリット()[0] 辞書の[ " {#PORT} " ] = sslcert.strip()。スプリット()[1 ] web_list.append(辞書) web_dict [ " データ" ] = web_list jsonStr = json.dumps(web_dict、インデント= 4 ) を返すjsonStrを 場合 __name__ == " __main__ " : 印刷 ssl_cert_discovery()
ドメイン名のリスト:
の/ etc / ZABBIX /スクリプト/ ssl_cert_list:
www.baidu.com 443
www.qq.com 443
ZABBIXの設定:
/etc/zabbix/zabbix_agentd.conf.d/userparameter_sslcert.conf:
UserParameter = sslcert_discoveryは/ usr / binに/パイソン/etc/zabbix/scripts/sshcert_discovery.py
UserParameter = sslcert.info [*]、/ binに/ bashの/など/zabbix/scripts/check-cert-expire.sh $ 1 $ 2
テンプレートのZABBIXを追加します。
https://files.cnblogs.com/files/imcati/Template_ssl_cert_info.xml