ドメイン名と証明書の有効期限を確認したかったので、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'