Custom Search

JITAKU_SVR_Wiki

#!/usr/bin/local/perl

use Date::Simple;
use DateTime::Format::Strptime;
use Time::Piece;
use Net::SMTP;


##ssl証明書の期限を取得
###ARGV[0]には調査対象のFQDNを指定する
$server_ssl = `/usr/bin/openssl s_client -connect $ARGV[0]:443 2>&1 < /dev/null | /usr/bin/openssl x509 -enddate | /usr/bin/grep notAfter`;

##邪魔な文字列を削除
$server_ssl =~ s/notAfter\=//;
$server_ssl =~ s/GMT//;

##残日数を計算するためにパースする
$date_pers = Time::Piece->strptime($server_ssl, '%b %d %H:%M:%S %Y ');

##2011-02-10の形式で、日付の計算するための関数へ入力
$ssl_limit = Date::Simple->new($date_pers->ymd);

##メールに記載する日付
$SSL_year = $date_pers->strftime("%Y");
$SSL_mon = $date_pers->strftime("%m");
$SSL_day = $date_pers->strftime("%d");

##現在の日時を取得
$today = Date::Simple->new();


##証明書有効期間の計算
$diff = $ssl_limit - $today;



##条件に合致した場合にメール通知する
###メール送信者
$FROM = 'ssl_report@hogehoge.com';

###送信先
$MAILTO = 'foo@hogehoge.com';

###SMTPサーバ
$HOST = '127.0.0.1';


##証明書期限「60日前」、「30日前」、「10日前」、「7日前から」、が条件
if ( $diff == "60" or $diff == "30" or $diff == "10" or $diff <= "7" ) {

##証明書期限当日のみ
if ( $diff == 0 ) {

$from = "$FROM";
$mailto = "$MAILTO";
$subject ="【$ARGV[0]】【最終日】SSL証明書期限レポート";
$header = << "MAILHEADER";
From: $from
To: $mailto
Subject: $subject
MAILHEADER

$message = << "_HERE_";
ドメイン名:【$ARGV[0]】
有効期限:$SSL_year年$SSL_mon月$SSL_day日

$ARGV[0]の証明書は本日最終日です。
証明書の更新を行ってください。
または、至急担当者へ連絡してください。
_HERE_


##証明書の期限が切れている場合のみ
} elsif ( $diff < 0 ) {
$from = "$FROM";
$mailto = "$MAILTO";
$subject ="【$ARGV[0]】【期限切れ】SSL証明書期限レポート";

$header = << "MAILHEADER";
From: $from
To: $mailto
Subject: $subject
MAILHEADER

$message = << "_HERE_";
有効期限:$SSL_year年$SSL_mon月$SSL_day日

$ARGV[0]の証明書切れています。
至急、担当者に確認してください。
_HERE_


##それ以外の条件は以下の連絡方法
} else {
$from = "$FROM";
$mailto = "$MAILTO";
$subject ="【$ARGV[0]】【$diff日前】SSL証明書期限レポート";

$header = << "MAILHEADER";
From: $from
To: $mailto
Subject: $subject
MAILHEADER

$message = << "_HERE_";
ドメイン名:【$ARGV[0]】
有効期限:$SSL_year年$SSL_mon月$SSL_day日

$ARGV[0]の証明書は$diff日前になりました。
_HERE_
}

$smtp = Net::SMTP->new("$HOST");
$smtp->mail($from);
$smtp->to($mailto);
$smtp->bcc(@mail_bcc);
$smtp->data();
$smtp->datasend("$header\n");
$smtp->datasend("$message\n");
$smtp->dataend();
$smtp->quit;

}



TIPS:
色々と詰め込んだので詳細は以下で確認。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-12-22 (火) 15:01:22 (644d)