Monit Monitor WAN IP

Started by blubern, July 04, 2022, 12:54:47 PM

Previous topic - Next topic
Hallo zusammen,

kann mir jemand helfen und sagen wie ich über Monit meine WAN IP-Adresse (dynamisch) Monitore? Also das ich bei jedem Wechsel eine Email bekomme am besten noch mit der IP Adresse?

Grüße
::)

Das würde mich aktuell auch interessieren. Vielleicht weiß es ja jemand aus der Kommunity?
protectli fw6e | 16gb ram | 512gb mSATA ssd | coreboot (v4.12) bios
---
OPNsense 21.7.1-amd64
FreeBSD 12.1-RELEASE-p19-HBSD
OpenSSL 1.1.1k 25 Mar 2021

Auf der Suche nach einer Lösung bin ich über diesen Thread gestolpert. Da ich auch sonst nichts gefunden habe, habe ich das Folgende geschrieben:

Das folgende Skript überprüft, ob sich die öffentliche IPv4 (des Standardgateways) oder das IPv6 Prefix geändert hat und verschickt in diesem Fall eine Email:
(/tmp/igc0_prefixv6 anpassen auf die richtige Datei/Interface)

mkdir /usr/local/custom_scripts
vi /usr/local/custom_scripts/checknewip.sh

#!/bin/sh

CURRENT_IP=`curl -s https://ipv4.icanhazip.com/`
OLD_IP="${CURRENT_IP}"
CURRENT_PREFIX=$(cat /tmp/igc0_prefixv6)
OLD_PREFIX="${CURRENT_PREFIX}"

WORKDIR="/usr/local/custom_scripts"
cd "${WORKDIR}"

SUBJECT="opnsense01 - new ip detected"
CHANGED=0

echo "current ip: ${CURRENT_IP}"
if [ -f "${WORKDIR}/old_ip.txt" ]; then
  echo "old_ip.txt found"
  OLD_IP=$(cat "${WORKDIR}/old_ip.txt")
else
  echo "no old_ip.txt found"
  echo "${CURRENT_IP}" > "${WORKDIR}/old_ip.txt"
fi
echo "old ip: ${OLD_IP}"

if [ "${OLD_IP}" != "${CURRENT_IP}" ]; then
  CHANGED=1
  echo "ip changed"
  echo "${CURRENT_IP}" > "${WORKDIR}/old_ip.txt"
fi

echo "current prefix: ${CURRENT_PREFIX}"
if [ -f "${WORKDIR}/old_prefix.txt" ]; then
  echo "old_prefix.txt found"
  OLD_PREFIX=$(cat "${WORKDIR}/old_prefix.txt")
else
  echo "no old_prefix.txt found"
  echo "${CURRENT_PREFIX}" > "${WORKDIR}/old_prefix.txt"
fi
echo "old prefix: ${OLD_PREFIX}"

if [ "${OLD_PREFIX}" != "${CURRENT_PREFIX}" ]; then
  CHANGED=1
  echo "prefix changed"
  echo "${CURRENT_PREFIX}" > "${WORKDIR}/old_prefix.txt"
fi

MSG="old ip: ${OLD_IP}
new ip: ${CURRENT_IP}

old prefix: ${OLD_PREFIX}
new prefix: ${CURRENT_PREFIX}"

if [ "${CHANGED}" == 1 ]; then
  "${WORKDIR}"/mailsender.py "${SUBJECT}" "${MSG}"
fi

exit 0


Das Python Skript zum Versenden der Email:

vi /usr/local/custom_scripts/mailsender.py

#!/usr/local/bin/python3

import smtplib
from email.message import EmailMessage
from email.utils import localtime
import sys

msg = EmailMessage()
msg.set_content(sys.argv[2])
msg['Subject'] = sys.argv[1]
msg['From'] = 'from@mailserver.xy'
msg['To'] = 'to@mailserver.xy'
msg['Date'] = localtime()

server = smtplib.SMTP('mailserver.xy', 25)
server.ehlo()
server.starttls()
server.ehlo()
server.login('from@mailserver.xy', 'mailpassword')
server.send_message(msg)
server.quit()


Dann noch für das OPNsense WebGUI einen Eintrag für die "Command"-Auswahl unter System->Settings->Cron anlegen:

vi /usr/local/opnsense/service/conf/actions.d/actions_own_checknewip.conf

[checknewip]
command:/usr/local/custom_scripts/checknewip.sh
parameters:
type:script
message:checking if ip4 or ip6 prefix has changed
description:check if ip4 or ip6 prefix has changed

und ein "service configd restart" durchführen, damit der neue Eintrag auch als Auswahl erscheint.

Dann einen neuen Cronjob angelegt mit "*/5" bei den Minuten (alle 5 Minuten ausführen) und als command "check if ip4 or ip6 prefix has changed". Description irgendwas eintragen (erforderlich).

Das Skript werde ich noch erweitern auf eine IPv4 / IPv6 Regex Üperprüfung und dann per API noch meine DNS Einträge bei OVH aktualisieren.

Hoffe das hilft jemandem.