需要兩個文件,一個用於存儲功能變數名稱信息,另一個是檢測腳本 註意:這兩個文件是在一個目錄下 domain_ssl.info 【存儲功能變數名稱信息】 check_domain_time.sh 【檢測腳本】 執行結果 參考博文:linux學習第七十一篇:shell腳本:通過功能變數名稱獲取證書的過期時間並郵件告警 ...
需要兩個文件,一個用於存儲功能變數名稱信息,另一個是檢測腳本
註意:這兩個文件是在一個目錄下
domain_ssl.info 【存儲功能變數名稱信息】
1 [root@mini05 20180930]# cat domain_ssl.info 2 # 檢測百度功能變數名稱 3 www.baidu.com:443
check_domain_time.sh 【檢測腳本】
1 [root@mini05 20180930]# cat check_domain_time.sh 2 #!/bin/bash 3 ################ Version Info ################## 4 # Create Date: 2018-09-29 5 # Author: Zhang 6 # Mail: [email protected] 7 # Version: 1.0 8 # Attention: 通過功能變數名稱獲取證書的過期時間 9 ################################################ 10 # V1.0.0 2018-09-29 腳本編寫 張 11 # 1.通過功能變數名稱獲取證書的過期時間 12 ################################################ 13 14 # 載入環境變數 15 . /etc/profile 16 . ~/.bash_profile 17 . /etc/bashrc 18 19 # 腳本所在目錄即腳本名稱 20 script_dir=$( cd "$( dirname "$0" )" && pwd ) 21 script_name=$(basename ${0}) 22 23 readFile="${script_dir}/domain_ssl.info" 24 grep -v '^#' ${readFile} | while read line;do #讀取存儲了需要監測的功能變數名稱的文件 25 # echo "${line}" 26 get_domain=$(echo "${line}" | awk -F ':' '{print $1}') 27 get_port=$(echo "${line}" | awk -F ':' '{print $2}') 28 29 # echo ${get_domain} 30 # echo "${get_port}" 31 # echo "======" 32 33 END_TIME=$(echo | openssl s_client -servername ${get_domain} -connect ${get_domain}:${get_port} 2>/dev/null | openssl x509 -noout -dates |grep 'After'| awk -F '=' '{print $2}'| awk -F ' +' '{print $1,$2,$4 }' ) 34 #使用openssl獲取功能變數名稱的證書情況,然後獲取其中的到期時間 35 END_TIME1=$(date +%s -d "$END_TIME") #將日期轉化為時間戳 36 NOW_TIME=$(date +%s -d "$(date | awk -F ' +' '{print $2,$3,$6}')") #將目前的日期也轉化為時間戳 37 38 RST=$(($(($END_TIME1-$NOW_TIME))/(60*60*24))) # 到期時間減去目前時間再轉化為天數 39 40 echo "${RST}" 41 done
執行結果
1 [root@mini05 20180930]# ./check_domain_time.sh 2 238
參考博文:linux學習第七十一篇:shell腳本:通過功能變數名稱獲取證書的過期時間並郵件告警