Zabbix: передать ZABBIX_SERVER/HOST_NAME в окружение python3 для trapper
This commit is contained in:
+14
-8
@@ -7,7 +7,7 @@ IFS=$'\n\t'
|
|||||||
# ============================================
|
# ============================================
|
||||||
|
|
||||||
CONFIG_FILE="/etc/ssh-monitor.conf"
|
CONFIG_FILE="/etc/ssh-monitor.conf"
|
||||||
SSH_MONITOR_VERSION="0.9.7.0"
|
SSH_MONITOR_VERSION="0.9.7.1"
|
||||||
|
|
||||||
TELEGRAM_BOT_TOKEN=""
|
TELEGRAM_BOT_TOKEN=""
|
||||||
TELEGRAM_CHAT_ID=""
|
TELEGRAM_CHAT_ID=""
|
||||||
@@ -742,17 +742,23 @@ send_zabbix_trapper() {
|
|||||||
# UTF-8 в -o через python3 (argv) надёжнее, чем -i файл на части сборок zabbix_sender.
|
# UTF-8 в -o через python3 (argv) надёжнее, чем -i файл на части сборок zabbix_sender.
|
||||||
if command -v python3 >/dev/null 2>&1; then
|
if command -v python3 >/dev/null 2>&1; then
|
||||||
: >"$zlog"
|
: >"$zlog"
|
||||||
printf '%s' "$one_line" | SSHMON_ZBX_TRAPPER_K="$key_al" SSHMON_ZBX_TRAPPER_LOG="$zlog" python3 -c '
|
# ZABBIX_* должны быть в окружении python3 (в bash без export они не видны в os.environ).
|
||||||
import os, subprocess, sys
|
printf '%s' "$one_line" | ZABBIX_SERVER="$ZABBIX_SERVER" ZABBIX_HOST_NAME="$ZABBIX_HOST_NAME" \
|
||||||
|
SSHMON_ZBX_TRAPPER_K="$key_al" SSHMON_ZBX_TRAPPER_LOG="$zlog" python3 -c '
|
||||||
|
import os, subprocess, sys, traceback
|
||||||
val = sys.stdin.read()
|
val = sys.stdin.read()
|
||||||
k = os.environ["SSHMON_ZBX_TRAPPER_K"]
|
k = os.environ["SSHMON_ZBX_TRAPPER_K"]
|
||||||
path = os.environ["SSHMON_ZBX_TRAPPER_LOG"]
|
path = os.environ["SSHMON_ZBX_TRAPPER_LOG"]
|
||||||
r = subprocess.run(
|
try:
|
||||||
["zabbix_sender", "-z", os.environ["ZABBIX_SERVER"],
|
r = subprocess.run(
|
||||||
"-s", os.environ["ZABBIX_HOST_NAME"], "-k", k, "-o", val],
|
["zabbix_sender", "-z", os.environ["ZABBIX_SERVER"],
|
||||||
capture_output=True, text=True)
|
"-s", os.environ["ZABBIX_HOST_NAME"], "-k", k, "-o", val],
|
||||||
|
capture_output=True, text=True)
|
||||||
|
out = (r.stdout or "") + (r.stderr or "")
|
||||||
|
except Exception:
|
||||||
|
out = "ssh-monitor python zabbix_sender: " + traceback.format_exc()
|
||||||
with open(path, "w", encoding="utf-8", newline="\n") as fh:
|
with open(path, "w", encoding="utf-8", newline="\n") as fh:
|
||||||
fh.write((r.stdout or "") + (r.stderr or ""))
|
fh.write(out)
|
||||||
' || true
|
' || true
|
||||||
if _sshmon_zbx_parse_sender_output "alert (${key_al})" "$zlog" 0; then
|
if _sshmon_zbx_parse_sender_output "alert (${key_al})" "$zlog" 0; then
|
||||||
alert_rc=0
|
alert_rc=0
|
||||||
|
|||||||
Reference in New Issue
Block a user