当前位置:网站首页>Detect certificate expiration script
Detect certificate expiration script
2020-11-06 21:29:00 【Irving the procedural ape】
Premise
It's always a hindsight , It's always a hindsight . The status quo is that whatever problems arise , Can not carry out early warning and intervention before the customer is unknown . In the morning, I had a chance to communicate with the R & D manager , Write this script , Trying to start with early warning .
From production k8s Cluster get realibox.cn Certificate , In the pre launch environment daemon Case study .
daemon Case study
# pwd/yufa/zhengshu/testlltotal 32-rw-r--r-- 1 root wheel 465B 9 9 09:50 test-ingress.yaml-rw-r--r-- 1 root wheel 711B 9 9 09:47 test.yaml-rw-r--r-- 1 root wheel 3.5K 9 9 09:24 tls.crt-rw-r--r-- 1 root wheel 1.6K 9 9 09:25 tls.key# kubectl -n realibox create secret tls realibox-cn --key ./tls.key --cert ./tls.crt# cat test.yamlapiVersion: v1kind: Servicemetadata: name: tomcat namespace: realiboxspec: selector: app: tomcat release: canary ports: - name: http port: 8080 targetPort: 8080 - name: ajp port: 8009 targetPort: 8009---apiVersion: apps/v1kind: Deploymentmetadata: name: tomcat-deploy namespace: realiboxspec: replicas: 1 selector: matchLabels: app: tomcat release: canary template: metadata: labels: app: tomcat release: canary spec: containers: - name: tomcat image: tomcat:7-alpine ports: - name: httpd containerPort: 8080 - name: ajp containerPort: 8009# cat test-ingress.yamlapiVersion: extensions/v1beta1kind: Ingressmetadata: name: ingress-tomcat-tls namespace: realibox annotations: kubernets.io/ingress.class: "kong"spec: tls: - hosts: - "*.realibox.cn" # And secret The domain name of the certificate needs to be consistent secretName: realibox-cn #secret The name of the certificate rules: - host: zisefeizhu.realibox.cn http: paths: - path: backend: serviceName: tomcat servicePort: 8080
Write a script to detect the expiration of domain name
I don't want to talk much about it
# cat check_daemon.sh#!/bin/bashsource /etc/profile# Define mailing lists maillist=( linkun@realibox.com #2350835860@qq.com)# Send mail function send_mail(){ SUBJECT="$1 The domain name is about to expire " if [ $2 -ge 0 ];then CONTENT="$1: This domain name is about to expire , There is not enough time left $2 God , Please renew it in time !" for mail in ${maillist[*]};do echo -e "" Currently detected domain name :" $domain\n " Days left : " $days\n ${CONTENT} " | mail -s "${SUBJECT}" $mail done else day=$((-$2)) CONTENT="$1: This domain name has expired , Exceeded $day God , Please renew in time !" for mail in ${maillist[*]};do echo -e "${CONTENT}" | mail -s "${SUBJECT}" $mail done fi}# testing mails Whether the order exists , If not, install mail package is_install_mail(){ which mail &> /dev/null if [ $? -ne 0 ];then yum install -y mail fi}is_install_mail# Define the list of domain names to be detected domainlist=( zisefeizhu.realibox.cn)# Detect domain expiration time and notify for domain in ${domainlist[*]};do echo " Currently detected domain name :" $domain # Remove domain name expiration time end_time=$(echo | timeout 1 openssl s_client -servername $domain -connect $domain:443 2>/dev/null | openssl x509 -noout -enddate 2>/dev/null | awk -F '=' '{print $2}' ) ([ $? -ne 0 ] || [[ $end_time == '' ]]) && exit 10 end_times=`date -d "$end_time" +%s ` tmp=`date -d today +"%Y-%m-%d %T"` current_times=`date -d "$tmp" +"%s"` let left_time=$end_times-$current_times days=`expr $left_time / 86400` echo " Days left : " $days # Convert to timestamp end_times=`date -d "$end_time" +%s ` # Displays the current time in the form of a timestamp tmp=`date -d today +"%Y-%m-%d %T"` current_times=`date -d "$tmp" +"%s"` # The number of days left for domain name expiration let left_time=$end_times-$current_times days=`expr $left_time / 86400` echo " Days left : " $days if .........
版权声明
本文为[Irving the procedural ape]所创,转载请带上原文链接,感谢
边栏推荐
- mongo 用户权限 登录指令
- Python basic variable type -- list analysis
- es创建新的索引库并拷贝旧的索引库 实践亲测有效!
- 2020-09-09:裸写算法:两个线程轮流打印数字1-100。
- From overseas to China, rancher wants to do research on container cloud market
- MongoDB与SQL常用语法对应表
- Swagger 3.0 brushes the screen every day. Does it really smell good?
- What the hell is fastthreadlocal? The existence of ThreadLocal!!
- This project allows you to quickly learn about a programming language in a few minutes
- Markdown tricks
猜你喜欢
ERD-ONLINE 免费在线数据库建模工具
How to start the hidden preferences in coda 2 on the terminal?
The native API of the future trend of the front end: web components
Why is quicksort so fast?
This project allows you to quickly learn about a programming language in a few minutes
【学习】接口测试用例编写和测试关注点
美团内部讲座|周烜:华东师范大学的数据库系统研究
Message queue - Analysis
What is the tensor in tensorflow?
Vue communication and cross component listening state Vue communication
随机推荐
A small goal in 2019 to become a blog expert of CSDN
美团内部讲座|周烜:华东师范大学的数据库系统研究
磁存储芯片STT-MRAM的特点
ES6 learning notes (4): easy to understand the new grammar of ES6
ES6 learning notes (3): teach you to use js object-oriented thinking to realize the function of adding, deleting, modifying and checking tab column
How about small and medium-sized enterprises choose shared office?
mongo 用户权限 登录指令
JVM memory allocation - xms128m - xmx512m - XX: permsize = 128M - XX: maxpermsize = 512M
Can you do it with only six characters?
[forward] how to view UserData in Lua
Small program introduction to proficient (2): understand the four important files of small program development
Those who have worked in China for six years and a million annual salary want to share these four points with you
事务的本质和死锁的原理
An article will introduce you to HTML tables and their main attributes
IPFs rudder filecoin landing at the same time, fil currency price broke a thousand
2020-08-30:裸写算法:二叉树两个节点的最近公共祖先。
[elastic search engine]
STM32F030K6T6兼容替换灵动MM32F031K6T6
预留电池接口,内置充放电电路及电量计,迅为助力轻松搞定手持应用
Application insights application insights use application maps to build request link views