使用org-mode生成晨檢報告

原文地址: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

#+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 |
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章