OPNsense Forum

International Forums => German - Deutsch => Topic started by: blubern on July 04, 2022, 12:54:47 pm

Title: Monit Monitor WAN IP
Post by: blubern on July 04, 2022, 12:54:47 pm
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
 ::)
Title: Re: Monit Monitor WAN IP
Post by: grayhound0815 on February 25, 2023, 07:16:10 pm
Das würde mich aktuell auch interessieren. Vielleicht weiß es ja jemand aus der Kommunity?
Title: Re: Monit Monitor WAN IP
Post by: pp on March 23, 2023, 12:16:34 pm
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)
Code: [Select]
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:
Code: [Select]
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:
Code: [Select]
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.