SeaTable 是一款新型的在线协同表格和信息管理系统。它支持“文件”、“图片”、“单选项”、“协作人”、“计算公式”等丰富的数据类型。 我们可以用它来方便的组织和管理各类信息。同时,它也是一个好用的轻型数据库,并自带了非常精美的 UI。
对一些 IT 小应用,如果自行从头写一个工具就要花费不少时间,还不好维护。通过给 SeaTable 写扩展就能在很短的时间内完成,维护起来还方便。
下面我们以监控多个站点的证书过期时间为例,来说明下具体的流程。
我们团队平时管理的站点有二十多个,全部使用的是免费的 Lets' encrypt 证书,并通过脚本在证书过期前自动更新证书。偶尔会出现脚本没有配置对或其他的原因导致证书没有正常更新,尤其是对新部署的站点。这就需要制作一个功能来解决这类的问题。
先来看下这个站点记录表,它记录了站点名称、运维文档、负责人、证书过期时间等信息。如下图:
![f9baf08333fd2e85fd2ec346a391d715.png](https://i-blog.csdnimg.cn/blog_migrate/289f498b73cefa7be0e595842ef4812d.jpeg)
站点证书过期时间记录表
为了方便查看各站点的证书过期时间,我们在默认视图基础上,增加了一个“按证书到期排序”视图,用排序按钮,为视图设置的条件是:证书过期时间、升序。即可把表格里所有站点的证书过期时间,按照由早到晚的顺序自动排列展示。
如下图:
![00e117896c41164b3a4fcc57dce7ad90.png](https://i-blog.csdnimg.cn/blog_migrate/5c89554bcb72b462a9bc42a08a320ce2.jpeg)
视图:对证书过期时间升序排序
可以看到,“按证书到期排序”视图能方便我们查看站点的证书过期时间,但是并不能帮助自动化监控。那么怎么自动化呢?我们用以下两步来做到:
- 增加后台脚本每日访问这些网站并记录证书过期时间到表格中
- 通过 SeaTable 的“提醒规则”功能,实现自动提醒
用脚本检查网站过期时间
通过 SeaTable 界面,我们可以给表格生成一个 API Token。用 API Token 我们就能在程序中操作表格的内容。SeaTable 也提供了 Python 库 (https://github.com/seatable/seatable-api-python)。我们用 Python 写的脚本内容如下:
api_token = xxxseatable = SeaTableAPI(api_token, 'https://cloud.seatable.cn')seatable.auth()# 列出'云端服务'这个表的所有行rows = seatable.list_rows('云端服务')for row in rows: domain = row['Name'] # 对每个记录,访问对应的网站获取证书的过期时间,如果和当前记录的时间不同,那么更新到表格 expiration = get_cert_expiration(domain) old_expiration = row['证书过期时间'] if '证书过期时间' in row else '' if old_expiration != expiration: row['证书过期时间'] = expiration seatable.update_row('云端服务', row['_id'], row)
get_cert_expiration 函数内容如下:
import sslimport OpenSSLcert = ssl.get_server_certificate((domain, 443))x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)expiration = datetime.strptime(x509.get_notAfter().decode("utf-8"),"%Y%m%d%H%M%SZ")return str(expiration)
再添加一个 Cron 定时任务来每日调用这个脚本,我们就实现了每日访问这些网站并记录证书过期时间到表格中。
添加提醒规则
下面我们来添加提醒规则。
点击“添加新规则”按钮,添加一个提醒规则。规则设置,如下图:
![f1c468859aa080c0d74244bfc6120657.png](https://i-blog.csdnimg.cn/blog_migrate/812ae7fb18351baefea3de8968015ccc.jpeg)
SeaTable 提醒规则功能设置界面
在提醒规则设置上:
- 规则名称:自定义即可。
- 表格:选择“云端服务”这个记录站点证书过期时间的子表。视图选择默认视图就可以。
- 检测频率:我们选择每天检测一次。
![5770c4e8bfaca9073856f0e564cfa6d5.png](https://i-blog.csdnimg.cn/blog_migrate/1482409383b3051f5cdf5516f430f6e9.jpeg)
检测频率选项
- 条件:因为要监控过期时间,所以就选择“记录接近截止日期”这个条件。它就会自动对表格中的“日期”类型列的时间进行监控。
- 选择一个日期列:在弹出的表格中的日期列选项里,我们选择“证书过期时间”列,并设置一个非负整数14天。14天表示“证书过期时间”列里的每个时间,在还有14天就要过期时,就会自动发出监控通知。
- 发送通知给:从下拉的共享者里选择想要接收此监控提醒通知的人就可以。
- 自定义消息:自定义输入即可。
以上,我们通过 SeaTable 的 API 功能,通过写一个简单的 Python 脚本,就满足了我们进行站点证书过期监控的需求。可以看到,对一些 IT 小应用,通过给 SeaTable 写扩展就能在很短的时间内完成,维护起来还方便。
推荐阅读
多人填写,自动汇总,填写人互不可见?用 SeaTable 表格更简单
不用软件也能做好多个项目跟进管理?我用一个协同表格就搞定
不用记账软件也能做好个人支出记账,SeaTable 表格更简单好用
使用 SeaTable 可点击下方“了解更多”