Linux

檢查日期是否在下週內

  • April 13, 2019

嘗試使用 LetsEncrypt 創建用於自動續訂 SSL 的腳本。

每日腳本首先檢查 SSL 何時到期:

response="$(openssl x509 -enddate -noout -in ~/letsencrypt/www.mydomain.com/cert.pem)"

$responsenotAfter=May 9 19:27:44 2018 GMT

我希望它與今天的日期進行比較並檢查時差是否小於或等於 7 天。虛擬碼:

if [$response is less than 7 days away from today] then cd ~/letsencrypt $$ ~/dehydrated/dehydrated --cron --domain www.mydomain.com --out . --challenge http-01

我該怎麼做呢?

我試圖通過轉換$response為更可行的格式,date -d但出現date: extra operand ‘19:27:44’錯誤。

我將解決您的實際問題,而不是您提出的具體問題:dehydrated --cron已經為您檢查日期。

文件:

--cron( -c) 簽署/更新不存在/更改/過期的證書。

程式碼:

# Check expire date of existing certificate
if [[ -e "${cert}" ]]; then
 echo " + Checking expire date of existing cert..."
 valid="$("${OPENSSL}" x509 -enddate -noout -in "${cert}" | cut -d= -f2- )"

 printf " + Valid till %s " "${valid}"
 if "${OPENSSL}" x509 -checkend $((RENEW_DAYS * 86400)) -noout -in "${cert}"; then
   printf "(Longer than %d days). " "${RENEW_DAYS}"
   if [[ "${force_renew}" = "yes" ]]; then
     echo "Ignoring because renew was forced!"
   else
     # Certificate-Names unchanged and cert is still valid
     echo "Skipping renew!"

(https://github.com/lukas2511/dehydrated/blob/master/dehydrated#L1234-L1253)

RENEW_DAYS似乎預設為 30,但您可以使用配置文件覆蓋它;引用文件

dehydrad 正在幾個不同的地方尋找一個配置文件,它會使用它可以按以下順序找到的第一個配置文件:

  • /etc/dehydrated/config
  • /usr/local/etc/dehydrated/config
  • 你的 shell 的目前工作目錄
  • 執行脫水的目錄

那裡的範例配置文件包含以下行:

# Minimum days before expiration to automatically renew certificate (default: 30)
#RENEW_DAYS="30"

例如,要將值從預設的 30 天降低到 7 天,您可以將第二行編輯為:

RENEW_DAYS="7"

引用自:https://unix.stackexchange.com/questions/423075