暗无天日

=============>DarkSun的个人博客

使用org-mode生成晨检报告

我们设置了每天8点多自动进行调用一次晨检脚本,该脚本会将检查的一些数据存入本地的一个SQLite数据库中。

今天我发现org-mode自带了 ob-sqlite 模块,可以在org-mode中对SQLite数据库进行操作,这使得用org-mode生成晨检报告成为可能。

ob-sqlite 本身的使用非常简单,只需要先 ob-sqlite

(require 'ob-sqlite)

然后就可以在org中执行SQL数据库了,比如用下面语句可以查出磁盘使用量超过85%的主机:

#+begin_src sqlite :db ~/baseline.sqlite3
  select distinct(host) from baseline where day='20200401' and type='磁盘空闲量检查' and value>85;
#+end_src

#+RESULTS:
| XXXX01 |
| XXXX02 |
| YYYY01 |
| YYYY02 |

那么下一个要解决的问题就是如何动态修改 day 参数了,我希望它能动态的指向当前的日期,而不是让我手工进行调整。

万幸的是,org-mode的代码块普遍支持通过 :var header参数传递参数值,且若变量的值是以 `(',`[',`''或``' 开头的,则它被认为是Emacs lisp代码,其代码的运行返回值才会作为变量真正的值.

如此,我们可以修改上面内容为:

#+begin_src sqlite :db ~/baseline.sqlite3 :var day=(format-time-string "%Y%m%d")
  select distinct(host) from baseline where day='$day' and type='磁盘空闲量检查' and value>85;
#+end_src

#+RESULTS:
| XXXX01 |
| XXXX02 |
| YYYY01 |
| YYYY02 |