PRTG + PFSENCE + FAILOVER

Voici un script qui permet de savoir si un des accès internet de la Pfsense est en panne et que celle ci vous a fait basculer sur un accès de secourt

Celui ci est écrit en PowerShell sur la base de Aman Dhally et repris par mon collègue Jonathan BLANCHARD

Pour le mettre en place , copier le dans le répertoire “PRTG Network Monitor\Custom Sensors\EXEXML”  du serveur PRTG

Ensuite sur la console, ajouter un équipement que vous nommerez par exemple IP fixe avec comme adresse IP : 8.8.8.8

Image 4

Ajouter un capteur à cet équipement

Image 5

Par exemple FailOver Internet

Dans Script /EXE sélectionner Static-Ip-LYCEE.ps1

Image 7

Dans délais d’expiration , choisissez 200s.

Image 6

Dans INTERVALLE choisissez 5 minutes (Si vous choisissez moins, vous pourriez vous faire Blacklister par CheckIP)

Image 8

Si la valeur est 1  alors c’est bon , si c’est 0 c’est que la l’accès internet change IP public…

# =======================================================
# Auteur : Jonathan BLANCHARD – Groupe Sacré Coeur Angers
# Date: 29/03/2017
# VERSION 0.2
#
# Usage : Récupérer l’adresse IP publique du routeur où est éxecuté le script et la comparer avec l’IP publique
#         que doit avoir le pfSense. Au lycée l’IP doit être celle de SFR (IP dynamique).
#
# Entrée : rien
# Sortie : sortie écran formatée en XML pour PRTG
# =======================================================<#

$url = "http://ipinfo.io/ip"
$webclient = New-Object System.Net.WebClient
$FinalIPAddress = $webclient.DownloadString($url)

# Initialisation des variables
$IP_publique = "90.53.131.70"  # @ IP publique fixe de la Livebox VDSL (ligne de secours)

# Ecriture du fichier XML de sortie (Comme la commande out-file n’a pas l’argument Append, le contenu du fichier est écrasé)
echo "<prtg>"
echo "<result>"
echo "<channel>IP</channel>"
# Comparaison enter IP publique "réelle" et celle que doit avoir la box en temps normal.
if ($FinalIPAddress.Trim() -like $IP_publique)
{
# Situation anormal
echo $("<value>" + "0" + "</value>")
}else{
# Situation normal
echo $("<value>" + "1" + "</value>")
}
echo "</result>"
echo "</prtg>"