diff --git a/monitoring/altinea_monitoring_request.sh b/monitoring/altinea_monitoring_request.sh new file mode 100644 index 0000000..2fdec89 --- /dev/null +++ b/monitoring/altinea_monitoring_request.sh @@ -0,0 +1,79 @@ +#!/bin/sh + +DEBUG() { + [ "$_DEBUG" = "on" ] && $@ +} + +# Define VPN interface name +VPNIF="vpnaltinea" + +if ! [ -x "$(command -v jq)" ]; then + echo "jq could not be found, please install it with :" + echo "apt install jq" + exit 99; +fi + +# Get public IP addresses +EXTIP4=`curl -s https://checkipv4.altinea.fr/getIP.php` +EXTIP6=`curl -s https://checkipv6.altinea.fr/getIP.php` + +# Testing if returned IPs are empty and setting +# a dummy value for later comparison +if [ -z "$EXTIP4" ]; then + EXTIP4='dummy' +fi +if [ -z "$EXTIP6" ]; then + EXTIP4='dummy' +fi + +# Check if found IPv4 address is configured on this server +if [ $(hostname -I |grep -c $EXTIP4) -ne 0 ]; then + IP4=$EXTIP4 +else + # Let see if we can find an ip address on the configured VPN interface + DEBUG echo "Couldn't find a public IPv4 address on this host" + DEBUG echo "Let see if we find a $VPNIF wireguard interface" + VPNIP4=`ip -j addr show dev $VPNIF | jq -r '.[0].addr_info | map(select(.family == "inet"))[0].local'` + if [ -z "$VPNIP4" ]; then + DEBUG echo "Can't find an IPv4 address on $VPNIF interface" + else + DEBUG echo "Found VPN IPv4 : $VPNIP4. Using it for monitoring purposes" + IP4=$VPNIP4 + fi +fi + +# Same routine for IPv6 +if [ $(hostname -I |grep -c '$EXTIP6') -ne 0 ]; then + IP6=$EXTIP6 +else + DEBUG echo "Couldn't find a public IPv6 address on this host" + DEBUG echo "Let see if we find an IPv6 on $VPNIF interface" + VPNIP6=`ip -j addr show dev $VPNIF | jq -r '.[0].addr_info | map(select(.family == "inet6"))[0].local'` + if [ -z "$VPNIP6" ]; then + DEBUG echo "Can't find an IPv6 address on $VPNIF interface" + else + DEBUG echo "Found VPN IPv6 : $VPNIP6. Using it for monitoring purposes" + IP6=$VPNIP6 + fi + +fi + +# Generate first part on the command +COMMAND="sendEmail -f noc@altinea.fr -u Nouvelle demande de monitoring -t support@altinea.fr -m Nouvelle IP à monitorer :\n"`hostname -f`"\n" + +# Add IPv4 if found +if [ -z "$IP4" ]; then + DEBUG echo "Sorry we're unable to find a routable IPv4 address, sorry !" +else + COMMAND="$COMMAND IPv4 : $IP4\n" +fi + +# Add IPv6 if found +if [ -z "$IP6" ]; then + DEBUG echo "Sorry we're unable to find a routable IPv6 address, sorry !" +else + COMMAND="$COMMAND IPv6 : $IP6\n" +fi + +# And run the request by mail +$COMMAND -o tls=no -o message-charset=UTF-8 -s zpush.altinea.fr