#!/usr/bin/env ruby require 'openssl' config_dirs = [ "/media/persistent/certbot", "/media/persistent/certs/letsencrypt", ] config_dirs.each do |config_dir| next unless Dir.exists?(config_dir) (Dir.entries("#{config_dir}/live/") - [".", ".."]).each do |site| next unless File.directory?("#{config_dir}/live/#{site}") cert = File.read("#{config_dir}/live/#{site}/cert.pem") x509 = OpenSSL::X509::Certificate.new(cert) days = (x509.not_after - Time.now) / 60 / 60 / 24 sanitized_site = site.gsub(/[^a-zA-Z0-9]/, '_') puts "certbot,site=#{sanitized_site} days_remaining=#{days}" end end