mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-08-26 21:45:20 +02:00
sys-ctl-alm-{email,telegram}: unescape instance names before alerts
Use `systemd-escape --unescape` to restore human-readable unit identifiers in Telegram and Email alerts. Also ensure Telegram messages are URL-encoded and Email status checks try both raw and escaped forms for robustness. Fixes issue where slashes were shown as dashes in notifications. Context: see ChatGPT conversation https://chatgpt.com/share/68a4c171-db08-800f-8399-7e07f237a441
This commit is contained in:
parent
98e045196b
commit
b90a2f6c87
@ -1,19 +1,23 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -u
|
set -u
|
||||||
|
# Reverse systemd escaping for human-readable mail subject/body
|
||||||
|
friendly="$(systemd-escape --unescape "$1")"
|
||||||
|
|
||||||
|
# Try status with given arg; if empty, also try the escaped version
|
||||||
STATUS_OUT="$(systemctl status --full "$1" 2>/dev/null | head -n 30)"
|
STATUS_OUT="$(systemctl status --full "$1" 2>/dev/null | head -n 30)"
|
||||||
if [ -z "$STATUS_OUT" ]; then
|
if [ -z "$STATUS_OUT" ]; then
|
||||||
STATUS_OUT="(no matching systemd unit found for: $1)"
|
esc="$(systemd-escape "$1")"
|
||||||
|
STATUS_OUT="$(systemctl status --full "$esc" 2>/dev/null | head -n 30)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
/usr/bin/sendmail -t <<ERRMAIL
|
/usr/bin/sendmail -t <<ERRMAIL
|
||||||
To: {{ users.administrator.email }}
|
To: {{ users.administrator.email }}
|
||||||
From: systemd <{{ users['no-reply'].email }}>
|
From: systemd <{{ users['no-reply'].email }}>
|
||||||
Subject: $1
|
Subject: ${friendly}
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
|
||||||
A problem with the service $1 occurred:
|
A problem with the service ${friendly} occurred:
|
||||||
|
|
||||||
$STATUS_OUT
|
$STATUS_OUT
|
||||||
|
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
set -u
|
||||||
|
|
||||||
|
# Make the instance text human readable again (reverse systemd escaping)
|
||||||
|
friendly="$(systemd-escape --unescape "$1")"
|
||||||
|
|
||||||
# determine host name: try hostname command, otherwise use $HOSTNAME
|
# determine host name: try hostname command, otherwise use $HOSTNAME
|
||||||
if command -v hostname &>/dev/null; then
|
if command -v hostname &>/dev/null; then
|
||||||
@ -11,4 +15,4 @@ fi
|
|||||||
/usr/bin/curl -s -X POST \
|
/usr/bin/curl -s -X POST \
|
||||||
"https://api.telegram.org/bot{{ telegram_bot_token }}/sendMessage" \
|
"https://api.telegram.org/bot{{ telegram_bot_token }}/sendMessage" \
|
||||||
-d chat_id="{{ telegram_chat_id }}" \
|
-d chat_id="{{ telegram_chat_id }}" \
|
||||||
-d text="service $1 on ${host} failed"
|
--data-urlencode text="service ${friendly} on ${host} failed"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user