原文地址:https://lujun9972.github.io/blog/2020/04/10/使用org-mode生成晨檢報告/index.html
我們設置了每天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 | 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 | XXXX01 | | XXXX02 | | YYYY01 | | YYYY02 |