Let’s EncryptのSSL証明書の有効期限一覧を出力

ドメイン名と証明書の有効期限を確認したかったので、certbot certificatesで証明書の一覧が出力されるのを利用して、grepとsedで必要なフィールドを取り出す

コマンド

sudo certbot certificates 2> /dev/null | grep -A 4 "Certificate Name" | sed -n -e '/Certificate/p;/Domains/p;/Expiry/p'

certbot部

certbot certificatesだけだとエラー出力に Saving debug log to /var/log/letsencrypt/letsencrypt.log が出力されてしまうので、それを/dev/nullに捨てている

grep部

Certificate Nameを含む行から数えて、Expiry Dateがある4行目までを抽出

sed部

"Certificate Name", "Domains", "Expiry Date"でマッチした行のみを出力

実行サンプル

$ sudo certbot certificates 2> /dev/null | grep -A 4 "Certificate Name" | sed -n -e '/Certificate Name/p;/Domains/p;/Expiry Date/p'
  Certificate Name: example.com
    Domains: example.com sub1.example.com sub2.example.com
    Expiry Date: 2023-05-10 05:35:12+00:00 (VALID: 69 days)
  Certificate Name: sub3.example.com
    Domains: sub3.example.com
    Expiry Date: 2023-04-16 03:16:55+00:00 (VALID: 44 days)
  Certificate Name: sub4.example.com
    Domains: sub4.example.com
    Expiry Date: 2023-05-10 05:35:18+00:00 (VALID: 69 days)

※grep部分は省略しても同じ結果でした

$ sudo certbot certificates 2> /dev/null | sed -n -e '/Certificate Name/p;/Domains/p;/Expiry Date/p'

参考