2017-07-13 4 views
-2

scénario mikrotik changer IP dynamique automaticaly IP statique avec un commentaire comme datemikrotik IP dynamique statique avec un commentaire

:local comment 
:local address 
:local mac-address 
{ 
/ip dhcp-server lease 
:foreach a in=[find where dynamic] do={ 
:set dhcpip [ get $i address ]; 
:set mac [ get $i mac-address ]; 

add address=$dhcpip mac-address=$mac comment="$date"; 
}} 

fonctionne pas où le problème?

Répondre

0

Si vous exécutez le script à partir du terminal, vous obtiendrez des messages d'erreur utiles pour vous aider à corriger votre propre script. Pour exécuter le script, rendez-vous au /system script puis obtenez le numéro du script en exécutant print. Le script peut ensuite être exécuté avec run <number>. Vous pouvez également voir la syntaxe des erreurs surlignées dans votre script à partir de la sortie d'impression.

La première erreur a reçu était:

expected end of command (line 3 column 11)

Ceci est parce que votre nom de variable comprend une - qui n'est pas un caractère valide pour les noms de variables - voir Manual:Scripting#Variables. En corrigeant cette erreur en faisant simplement la variable mac je remarque que les variables que vous avez déclarées en haut, ne sont pas les variables que vous utilisez dans votre script et ailleurs vous avez déjà utilisé mac. Ceci est en fait la cause de votre erreur suivante:

syntax error (line 7 column 6)

Après la mise à jour toutes les variables à être cohérentes (dhcpip-address et a-i) Le dernier problème est que $date est définie nulle part. Pour cela, vous pouvez ajouter :local date [/system clock get date] quelque part dans votre script. Avec cela, vous devriez être en mesure de réparer votre propre script - et je vous recommande fortement de le faire afin que vous puissiez apprendre de vos erreurs.

Une critique du script, au-delà de sa mauvaise implémentation, est que plutôt que de stocker dans des variables, vous pouvez utiliser la commande make-static. Ce qui suit est un script qui fait exactement ceci:

/ip dhcp-server lease 
:foreach i in=[find dynamic] do={ 
    make-static $i 
    set $i comment=[/system clock get date] 
} 

Si vous ne avez pas besoin du commentaire puis faire tous les baux dynamiques peut être fait statique avec une seule commande:

/ip dhcp-server lease make-static [find dynamic]