利用go扫描所有域名的过期时间

确认当前域名下证书是否全部更换完成

工作中公司域名有很多个,尤其是用泛域名更换起来极其麻烦,好不容易更换之后,有遗漏或者更换没有生效的事情也会发生,在每个确认一遍就比较麻烦,下面是一个确认配置文件中所有域名是否更换完成的脚本,需要的请自行获取,本人只求一个关注和点赞,评论,谢谢。

package main
import (
 "bufio"
 "fmt"
 "io"
 "net/http"
 "os"
)

func getTlsNotAfter(url string) {
 get, err := http.Get(url)
 if err != nil {
  fmt.Println(url, "没有添加https", err)
  return
 }

 // 不是当前年 + 1 到期的
 if get.TLS.PeerCertificates[0].NotAfter.Year() != time.Now().Year() + 1 {
  // 打印证书到期时间
  fmt.Println(url, get.TLS.PeerCertificates[0].NotAfter)
  saveLog(url, get.TLS.PeerCertificates[0].NotAfter)
 }
}

func saveLog(log string, dataTime interface{}) {
 // 打开一个文件

// 存放结果的日志文件
 file, err := os.OpenFile("./my.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
 if err != nil {
  return
 }
 defer file.Close()
 writeLog := fmt.Sprintf("%s   %s\n", log, dataTime)
 file.WriteString(writeLog)
}

func main() {

// 存放需要查看的域名,可以直接使用云产品上面的导出功能,只要主机名即可 ,比如。www 这种,
 open, err := os.Open("./log.txt")
 if err != nil {
  return
 }
 defer open.Close()
 reader := bufio.NewReader(open)
 for {

  line, _, er := reader.ReadLine()
  if er == io.EOF {
   return
  }

  host := fmt.Sprintf("%s", line)

// 这里更换 根根域名,和上面文件中的对应起来test.com 更换成自己的即可
  url := fmt.Sprintf("https://%s.test.com", host)
  getTlsNotAfter(url)
 }

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容