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?
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.