最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Shell腳本實現SSL證書過期巡檢

 更新時間:2023年08月04日 10:21:17   作者:咸魚Linux運維  
我們知道?SSL?證書是會過期的,一旦過期之后需要重新申請,如果沒有及時更換證書的話,就有可能導致網站出問題,所以本文分享一個自動檢測?SSL?是否過期的?shell?腳本吧

我們知道 SSL 證書是會過期的,一旦過期之后需要重新申請。如果沒有及時更換證書的話,就有可能導致網站出問題,給公司業(yè)務帶來一定的影響

所以說我們要每隔一定時間去檢查網站上的 SSL 證書是否過期

如果公司業(yè)務體量較大的話,肯定不止一個域名,而一個域名后面又會對應著多臺機器,如果我們手動輸入命令一臺臺檢測的話,所需要的精力和時間是很大的

那么今天咸魚跟大家介紹一個自己平常在用的自動檢測 SSL 是否過期的 shell 腳本

思路

前面我們說到,一個公司(一個業(yè)務)底下可能會有多個域名多個 IP 地址,所以說我們需要整理出來放到一個文件里面,如下所示

#domain.txt
#域名:ip 池
www.baidu.com:180.101.50.242,180.101.50.188
www.bing.com:202.89.233.101,202.89.233.100

整理出來之后,后面只需要循環(huán)遍歷 domain.txt 中的每一行內容,然后把域名和 ip 地址分別提取出來一個一個去檢測就行了

首先我們對 domain.txt 中的內容進行循環(huán)遍歷,提取出域名和 ip 池

for line in $(cat domain.txt)
do
	domain=$(echo ${line} | awk -F':' '{print $1}')
	ip_pool=$(echo ${line} | awk -F '[a-z]:' '{print $2}' | sed 's/\,/ /g')
	...
done

然后再遍歷 ip 池,取出每一個 ip 地址,然后執(zhí)行檢測命令,把檢測到的結果存進 text 變量里

for line in $(cat domain.txt)
do
	domain=$(echo ${line} | awk -F':' '{print $1}')
	ip_pool=$(echo ${line} | awk -F '[a-z]:' '{print $2}' | sed 's/\,/ /g')
	# 遍歷 ip 池
    for ip in ${ip_pool}
    do
    	echo -e "\e[33m---------------start to check---------------\e[0m"
    	echo -e "ip:${ip}\ndomain:${domain}"
        # 檢測命令
    	text=$(echo | openssl s_client -servername ${domain} -connect ${ip}:443 2>/dev/null | openssl x509 -noout -dates -subject)
    done
done

我們著重看下檢測命令

echo | openssl s_client -servername ${domain} -connect ${ip}:443 2>/dev/null | openssl x509 -noout -dates -subject
  • echo: 這個命令用于向標準輸出打印一個空行
  • openssl s_client -servername www.baidu.com -connect 180.101.50.242:443: 這部分命令使用 openssl 工具來建立一個與指定網站的 SSL 連接。 -servername選項指定了要連接的服務器的主機名-connect 選項指定了服務器的 IP 地址和端口號)
  • 2>/dev/null: 這部分是重定向,將標準錯誤輸出重定向到 /dev/null 設備文件,這樣連接服務器的時候如果報錯錯誤信息就不會顯示在終端上
  • openssl x509 -noout -dates: 這部分命令用于提取 SSL 證書的有效期和主題信息。openssl x509是用于處理 X.509 證書的命令,-noout選項表示不打印證書本身,而是打印其他信息,-dates 選項表示打印證書的有效期

輸出信息如下(即 text 變量內容)

# echo | openssl s_client -servername www.baidu.com -connect 180.101.50.242:443 2>/dev/null | openssl x509 -noout -dates
notBefore=Jul  6 01:51:06 2023 GMT
notAfter=Aug  6 01:51:05 2024 GMT

其中 notBefore 是開始時間,notAfter 是過期時間

需要注意的是,如果提取不到 SSL 證書的信息,那么 text 里面是沒有內容的,所以在檢測過期時間之前我們需要判斷一下

if [[ ${text} ]] # text 里面有內容,不為空
then
	do something
fi

然后我們提取出輸出的 SSL 證書信息中 notAfter 的值,然后轉換成時間戳的形式,并且求出當前的時間戳

end_date=$(echo "$text" | grep -i "notAfter" | awk -F '=' '{print $2}') # 證書過期時間
end_timestamp=$(date -d "$end_date" +%s) # 轉換成時間戳
current_timestamp=$(date +%s) # 當前時間戳

最后我們用過期時間減去當前時間,得出剩余時間,再對剩余時間做判斷

remain_date=$(( (${end_timestamp} - ${current_timestamp}) / 86400 ))
if [[ ${remain_date} -lt 7 && ${remain_date} -ge 0 ]]
then
	echo -e "\e[31m剩余時間小于七天!請及時更換證書!\e[0m"
	echo -e "\e[31mip: ${ip}, ${domain}\e[0m"
elif [[ ${remain_date} -lt 0 ]]
then
	echo -e "\e[31m證書已過期!請及時更換證書!\e[0m"
else
	echo -e "\e[32m剩余天數為:${remain_date}\e[0m"
fi

我們來看下執(zhí)行結果:

證書未過期情況

證書快過期

證書已過期

完整腳本

for line in $(cat domain.txt)
do
        domain=$(echo ${line} | awk -F':' '{print $1}')
        ip_pool=$(echo ${line} | awk -F '[a-z]:' '{print $2}' | sed 's/\,/ /g')
        for ip in ${ip_pool}
        do
                echo -e "\e[33m---------------start to check---------------\e[0m"
                echo -e "ip:${ip}\ndomain:${domain}"
                text=$(echo | openssl s_client -servername ${domain} -connect ${ip}:443 2>/dev/null | openssl x509 -noout -dates )
                # 判斷命令是否執(zhí)行成功,執(zhí)行成功的話 text 變量里面是有內容的
                if [[ ${text} ]] 
                then
                    end_date=$(echo "$text" | grep -i "notAfter" | awk -F '=' '{print $2}') # 證書過期時間
                    end_timestamp=$(date -d "$end_date" +%s) # 轉換成時間戳
                    current_timestamp=$(date +%s) # 當前時間戳
                    # 如果證書過期時間減去當前時間的天數小于七天的話,則提示需要準備更換證書了
                    remain_date=$(( (${end_timestamp} - ${current_timestamp}) / 86400 ))
                    if [[ ${remain_date} -lt 7 && ${remain_date} -ge 0 ]]
                    then
                        echo -e "\e[31m剩余時間小于七天!請及時更換證書!\e[0m"
                        echo -e "\e[31mip: ${ip}, ${domain}\e[0m"
                    elif [[ ${remain_date} -lt 0 ]]
                    then
                        echo -e "\e[31m證書已過期!請及時更換證書!\e[0m"
                    else
                        echo -e "\e[32m剩余天數為:${remain_date}\e[0m"
                    fi
                else
                            echo -e "\e[31mError!${ip}\e[0m"
                            echo -e "\e[31m${domain}\e[0m"
                fi
        done
done

到此這篇關于Shell腳本實現SSL證書過期巡檢的文章就介紹到這了,更多相關SSL證書過期巡檢內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Linux logrotate日志切割安裝配置說明

    Linux logrotate日志切割安裝配置說明

    這篇文章主要為大家介紹了Linux logrotate日志切割的安裝配置說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • shell 字符串操作(長度,查找,替換)詳解

    shell 字符串操作(長度,查找,替換)詳解

    在做shell批處理程序時候,經常會涉及到字符串相關操作。有很多命令語句,如:awk,sed都可以做字符串各種操作。其實shell內置一系列操作符號,可以達到類似效果,大家知道,使用內部操作符會省略啟動外部程序等時間,因此速度會非常的快
    2012-09-09
  • shell腳本declare命令的用法詳解(聲明變量的屬性和類型)

    shell腳本declare命令的用法詳解(聲明變量的屬性和類型)

    這篇文章主要介紹了shell腳本declare命令用法(聲明變量的屬性和類型,declare?命令在一般的腳本編寫中并不常用,大多數情況下直接使用簡單的變量賦值語句即可滿足需求,需要的朋友可以參考下
    2023-06-06
  • linux命令學習之10個網絡命令和監(jiān)控命令

    linux命令學習之10個網絡命令和監(jiān)控命令

    下面列出來的10個基礎的每個linux用戶都應該知道的網絡和監(jiān)控命令,大家參考使用吧
    2014-01-01
  • linux中 pmap 命令詳解

    linux中 pmap 命令詳解

    這篇文章主要介紹了linux中 pmap 命令詳解,需要的朋友可以參考下
    2017-09-09
  • Shell腳本統(tǒng)計文件行數的8種方法

    Shell腳本統(tǒng)計文件行數的8種方法

    這篇文章主要介紹了Shell腳本統(tǒng)計文件行數的8種方法,本文講解了獲取單個文件行數、獲取特定目錄所有文件的行數兩種需求共計8種方法,需要的朋友可以參考下
    2015-03-03
  • shell腳本4種執(zhí)行方式

    shell腳本4種執(zhí)行方式

    Linux中shell腳本的執(zhí)行通常有4種方式,分別為工作目錄執(zhí)行,絕對路徑執(zhí)行,sh執(zhí)行,shell環(huán)境執(zhí)行。這篇文章主要介紹了shell腳本4種執(zhí)行方式 ,需要的朋友可以參考下
    2019-05-05
  • Linux換行符的使用方法詳解

    Linux換行符的使用方法詳解

    本文介紹了Linux中常用的換行符LF及其在文件中的表示,展示了如何使用sed命令替換換行符,并列舉了與換行符處理相關的Linux命令,通過代碼講解的非常詳細,需要的朋友可以參考下
    2025-04-04
  • 完美解決linux下dns配置重啟失效的問題

    完美解決linux下dns配置重啟失效的問題

    下面小編就為大家?guī)硪黄昝澜鉀Qlinux下dns配置重啟失效的問題。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Bash?Shell通配符與正則表達式實用示例詳解

    Bash?Shell通配符與正則表達式實用示例詳解

    正則表達式是一種可以用于模式匹配和替換的工具,通過正則表達式,Shell可以使用一系列的特殊字符構建匹配模式,然后將匹配模式與待比較字符串或文件進行比較,這篇文章主要介紹了Bash?Shell通配符與正則表達式的相關資料,需要的朋友可以參考下
    2025-10-10

最新評論

休宁县| 理塘县| 鱼台县| 岱山县| 焦作市| 淮安市| 万安县| 苏尼特右旗| 海盐县| 张家界市| 句容市| 盐亭县| 调兵山市| 瑞昌市| 丰都县| 永川市| 阳春市| 合水县| 永宁县| 天水市| 平乡县| 石棉县| 蕉岭县| 城固县| 汕头市| 开封县| 石渠县| 潼南县| 娱乐| 屏南县| 马边| 许昌市| 乐昌市| 北京市| 辉南县| 手机| 瓮安县| 渝北区| 饶平县| 枣庄市| 和林格尔县|