Hi Tristan,
On Mon, May 20 2024, Tristan Kohl via wrote:
> smartd then complains that the file is not executable...
Sorry, it was a Monday morning for me.
If you are comfortable using Guile---which I'm sure you almost are by
now--You can use 'program-file':
Please have a look at any of these hooks on one of my systems. [1]
An untested version of your script might look something like this,
although I probably got some of the quoting wrong---either in Scheme or
in your command.
(define smartd-send-ntfy
(program-file "send-ntfy"
#~((let* ((subject (getenv "SMARTD_SUBJECT))
(device (getenv "SMARTD_DEVICE))
(failure-type (getenv "SMARTD_FAILTYPE))
(timestamp (getenv "SMARTD_TFIRST"))
(message (getenv "SMARTD_MESSAGE")))
(system* "curl"
"ntfy.sh/<my-topic>"
"-d" (string-join
`("curl"
"-Ls"
"-H" ,(string-append "Title: " subject)
"-d" ,subject
"-d" ,(string-append
"'"
(string-join (list "Device:" device
"Time:" timestamp
"Message:" message))
"'"))))))))
Kind regards
Felix
[1]
https://codeberg.org/lechner/system-config/src/commit/215fc20a29e553fd8108ba737d557ecb98279540/host/wallace-server/operating-system.scm#L1134-L1168