URI: 
       Add new probe write-to-file - reed-alert - Lightweight agentless alerting system for server
  HTML git clone git://bitreich.org/reed-alert/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/reed-alert/
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
   DIR LICENSE
       ---
   DIR commit 13cf2712556758a985dc315ae25eea2aa7b3b0dd
   DIR parent 98918e04dc8835f5dd3c4634cbc246dc89037fe9
  HTML Author: Solene Rapenne <solene@perso.pw>
       Date:   Thu, 11 Jul 2019 10:06:26 +0200
       
       Add new probe write-to-file
       
       Diffstat:
         M README                              |      19 +++++++++++++++++++
         M example-full.lisp                   |       4 ++++
         M example-simple.lisp                 |       2 ++
         M probes.lisp                         |      14 ++++++++++++++
         M test/test.lisp                      |       3 +++
       
       5 files changed, 42 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/README b/README
       @@ -370,6 +370,25 @@ Example: `(=> alert ssl-expiration :host "domain.local" :seconds 86400 :port 669
        Example: `(=> alert ssl-expiration :host "smtp.domain.local" :seconds 86400 :starttls "smtp" :port 25)
        
        
       +write-to-file
       +--------------------
       +Write content to a file, create it if non existent.
       +
       +The purpose of this probe is to be used at the end of a reed-alert
       +script to update the modification time of a file, and use file-updated
       +on this file at the beginning of a script to monitor if reed-alert did
       +finish correctly on last run.
       +
       +> Set the path of the file.
       +    :path "STRING"
       +
       +> Set the content of the file (OPTIONAL).
       +    :text "STRING" (default to current time in seconds)
       +
       +Example: `(=> alert write-to-file :path "/tmp/reed-alert.txt")`
       +Example: `(=> alert write-to-file :path "/tmp/reed-alert.txt" :text "hello world")`
       +
       +
        The configuration file
        ======================
        
   DIR diff --git a/example-full.lisp b/example-full.lisp
       @@ -19,6 +19,7 @@
        ;; check if :path file exists and has been updated since :limit minutes
        (=> empty file-updated :path "/var/log/messages" :limit 400)
        (=> mail file-updated :path "/bsd.rd"           :limit 1 :desc "OpenBSD kernel") ;; failure
       +(=> mail file-updated :path "/tmp/reed-alert.txt" :limit 10)
        
        ;; check if :path pid file process is running
        (=> mail pid-running  :path "/var/run/xdm.pid" :desc "XDM pid")
       @@ -58,6 +59,9 @@
        (=> mail ssl-expiration :host "freenode.net" :seconds (* 7 24 60 60))
        (=> mail ssl-expiration :host "freenode.net" :seconds 1296000 :port 6697)
        
       +;; update a file modification time
       +(=> mail write-to-file :path "/tmp/reed-alert.txt")
       +
        ;; we declare a new probe here
        (create-probe
         check-http-pattern
   DIR diff --git a/example-simple.lisp b/example-simple.lisp
       @@ -6,6 +6,7 @@
        
        ;; this is a comment
        ; this is also a comment
       +(=> mail file-updated :path "/tmp/reed-alert" :limit 100)
        (=> mail disk-usage :path "/" :limit 90)
        
        (=> mail service :name "dovecot")
       @@ -16,3 +17,4 @@
        (=> mail ping :host "bitreich.org" :desc "Ping Bitreich")
        (=> mail ping :host "openbsd.org"  :desc "Ping OpenBSD.org")
        (=> mail ssl-expiration :host "freenode.net" :seconds (* 7 24 60 60) :desc "SSL IRC Freenode")
       +(=> mail write-to-file :path "/tmp/reed-alert")
   DIR diff --git a/probes.lisp b/probes.lisp
       @@ -140,3 +140,17 @@
             "openssl x509 -inform pem -noout "
             (when starttls (strcat " -starttls " starttls))
             " -checkend " seconds))))
       +
       +(create-probe
       + write-to-file
       + (let ((filepath (getf params :path nil))
       +       (text (getf params :text
       +                   (princ-to-string
       +                    (get-universal-time)))))
       +   (when filepath
       +     (with-open-file
       +         (stream-out filepath
       +                     :direction :output
       +                     :if-exists :supersede)
       +       (format stream-out "~a~%" text))
       +     t)))
   DIR diff --git a/test/test.lisp b/test/test.lisp
       @@ -22,3 +22,6 @@
        (or
         (=> notification disk-usage :path "/"    :limit 1 :reminder 2 :desc "always error, should be followed by always ok")
         (=> notification disk-usage :path "/"    :limit 99 :reminder 2 :desc "always OK"))
       +
       +(=> notification write-to-file :path "/tmp/hello.txt")
       +(=> notification write-to-file :path "/tmp/hello2.txt" :text "hi")