MikroTik Scripting MikroTik MUM – USA 2015 Brian Horn – WISP TRACON LLC
Scripting
• Fournit une méthode pour automatiser les tâches grâce à l'utilisation de scripts définis par
l'utilisateur
• Exécution sur commande
• Permet de configurer un routeur complet ou un groupe de paramètres
• c'est-à-dire un script acheté pour configurer les règles du pare-feu
• Exécution sur événement déclencheur
• Planificateur système (System Scheduler)
• Exécute le script à une heure spécifique, après un intervalle spécifié, ou les deux
• Traffic Monitor
• Exécute le script lorsque le trafic de l'interface dépasse un seuil donné
• Netwatch
• Exécute le script en fonction de l'état des hôtes surveillés à l'aide de pings (ICMP)
Scripts de configuration
• Configuration de base (GoldConfig)
• Configuration standard appliquée à plusieurs routeurs
• Certains paramètres sont ensuite personnalisés
• SSID sans fil, canal, mot de passe, mot de passe système
• Configuration des fonctionnalités
• Pare-feu, files d'attente, …
• Créer un script
• Configurer un routeur, tester la configuration, exporter vers un fichier de script
• Appliquer un script
• Importer un fichier de script pour ajouter une fonctionnalité
• Pour créer un routeur configuré par défaut
• Mettre à niveau vers la version requise de RouterOS
• Système -> Réinitialiser la configuration -> Aucune configuration par défaut -> Exécuter après la
réinitialisation (sélectionner le fichier de configuration)
• Personnaliser
Exemples de scripts
• Surveillance de l'alimentation du site
• Solution d'alimentation redondante, fonctionnant sur secteur ou sur batterie ?
• Utilisation de la liaison dorsale
• Alertes basées sur l'utilisation de la liaison
• Rapports d'utilisation client
• Collecte des données d'utilisation mensuelles et réinitialisation des compteurs
• Analyse sans fil à distance
• Que se passe-t-il sur un site distant ?
• Sauvegardes de la configuration du routeur
• Sauvegarde et transfert automatiques des fichiers de configuration
Transfert des résultats
• Les données collectées par le routeur doivent être transférées vers l'application / le serveur où
elles sont traitées ou stockées.
• Methods
• Email
• FTP
• SSH
Transfert de courrier électronique
• L'outil de courrier électronique (e-mail) est un utilitaire qui permet au routeur d'envoyer des
courriers électroniques • Peut envoyer des messages et/ou fichiers
Exemple d’utilisation GMail
• Configurer un client pour se connecter au server
/tool e-mail
set address=[Link] port=587 from=userxyz@[Link] user=userxyz password=abcd130426
start-tls=yes
• Envoyer un message avec fichier joint
send to=monitor@[Link] subject="Daily Report - Site MER" body="Router ID and Date"
file=[Link]
Ecrire/ tester des scripts
WinBox peut fournir des méthodes simples pour tester les commandes et voir les résultats.
Ouvrez les fenêtres Journal et Terminal et utilisez :log
Ou
Terminal uniquement et utilisez :put
Obtention des données système
System Identity
:global SystemIdentity [/system identity get name]
• Check what you got is correct
:put $SystemIdentity
• System Clock
:global SystemDate [/system clock get date]
:put $SystemDate
• Extract the day of the month
:global Today [:pick [/system clock get date] 4 6]
:put $Today
Obtenir des données peut être complexe
• Récupérer les statistiques d'utilisation des clients et réinitialiser les compteurs chaque mois
• Simple Queues (file d’attente)
Extraction des champs
• Nous voulons extraire le nombre total d'octets téléchargés et chargés
Ce que vous pouvez écrire sous la forme
Application d'alimentation redondante
Site distant utilisant RB750UP
Décisions de contrôle de puissance redondantes
Mesurer la tension du système avec l'alimentation secteur sous et hors tension
• Déterminer le seuil à utiliser pour déterminer l’état de l’alimentation électrique
Batterie complètement chargée ≥ 25,6 V
Utiliser 26 V comme seuil
Pseudo Code – Step 1
Measure system voltage (Vsystem)
If running on utility power (Vsystem ≥ 26 V)
Do nothing
Else (running on battery power)
Send email to alert power status, include current voltage
De quelles informations système avons-nous besoin pour générer des rapports ?
Pseudo Code – Step 2
Get system information
Identity, Date, Time
Measure system voltage (Vsystem)
If running on utility power (Vsystem ≥ 26 V)
Do nothing
Else (running on battery power)
Send email to alert power status, include current voltage
Voulons-nous une alerte lorsque le courant électrique est rétabli ?
Pseudo Code – Step 3
Set global variable Vflag = 1
Get system information
Identity, Date, Time
Measure system voltage (Vsystem)
If running on utility power (Vsystem ≥ 26 V)
Else (running on battery power) Clear Vflag (Vflag = 0)
Send email to alert power status, include current voltage
Pseudo Code – Step 3
Set global variable Vflag = 1
Get system information Identity, Date, Time
Measure system voltage (Vsystem)
If running on utility power (Vsystem ≥ 26 V)
If Vflag not set (Vflag = 0)
Send email to alert utility power has been restored Set Vflag (Vflag = 1)
Else (running on battery power)
Clear Vflag (Vflag = 0)
Send email to alert power status, include current voltage
Que se passe-t-il si les batteries sont trop déchargées ?
Conseils de script
• Utilisez du pseudo-code pour structurer l'objectif
• Utilisez des noms de variables significatifs
• Commentez le code
• Testez le code en sections et déboguez
• La valeur de la variable globale peut être définie, plutôt que [get] pour vérifier le fonctionnement
du code
• Attention lors de :
• Utilisation de Netwatch et :reboot :
• Désactivation ou mise hors tension des interfaces