编辑
2024-08-16
即用脚本
00

目录

更新ssl证书
自定义脚本
使用crontab方式进行定时任务管理

更新ssl证书

默认自定义申请的证书 免费时间为90天 一般默认2个月就去申请更新一下
业务服务域名 最好选择晚上 因为脚本内会停止nginx访问 不过也很快

自定义脚本

脚本内自动去更新 更新后 推送到手机上通知

python
import psutil # pip install psutil import subprocess import requests # 推送给我的手机 以便知道是否更新成功 def push_deer_func(): title = "SSL證書延期" content = f""" [IP] 154.**.**.66 \n [域名] [www] baidu \n [内容] 證書延期執行 renew """ pushKey = "PDU25561Th********Jf0dsZgH" data = {"text": title, "desp": content, "type": "markdown", "pushkey": pushKey} url = 'https://api2.pushdeer.com/message/push' response = requests.post(url, data=data).json() # 查找占用端口80的进程 def find_process_using_port(port): for conn in psutil.net_connections(): if conn.laddr.port == port: return psutil.Process(conn.pid) return None # 停止指定进程 def stop_process(process): if process: process.terminate() # 更新SSL证书 def update_ssl(): # subprocess.run(["sudo", "certbot", "renew", "--force-renewal"]) # 执行 Certbot 更新 subprocess.run(["sudo", "certbot", "renew", "--quiet"], check=True) # 重新启动Nginx服务 def restart_nginx(): subprocess.run(["sudo", "service", "nginx", "restart"]) push_deer_func() # 主程序 if __name__ == "__main__": # 查找占用端口80的进程 process = find_process_using_port(80) if process: print(f"找到占用端口80的进程:{process.name()}") # 停止占用端口80的进程 stop_process(process) print("已成功停止占用端口80的进程") # 更新SSL证书 print("更新SSL证书...") update_ssl() print("SSL证书已更新") # 重新启动Nginx服务 print("重新启动Nginx服务...") restart_nginx() print("Nginx服务已重新启动") else: print("未找到占用端口80的进程")

使用crontab方式进行定时任务管理

此方式使用方法自行百度

shell
0 9 1 */2 * /usr/bin/python3 /home/script_job/check_renew.py 0 9 1 */2 *:这是 cron 表达式的时间部分,定义了何时运行命令或脚本。 0:分钟字段,表示在每小时的第 0 分钟。 9:小时字段,表示在每天的第 9 小时(也就是早上 9 点)。 1:日期字段,表示每月的第 1 天。 */2:月份字段,表示每两个月。* 表示任何月份,/2 表示步长为 2,所以这个字段表示每两个月。 *:星期字段,表示每星期。 /usr/bin/python3 /home/script_job/check_renew.py:这是命令部分,表示需要执行的命令或脚本。 这里的命令是使用 /usr/bin/python3(Python3 的路径) 来执行位于 /home/script_job/check_renew.py 的 Python 脚本。

本文作者:Freed

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!