Ci-dessous un exemple de script TCL que vous pouvez exécuter depuis votre FortiManager, mais avant il faut activer l'utilisation de script TCL sur votre FortiManager.
Procédure réalisée sur une VM FORTIMANAGER en 6.4.3
Activation des scripts TCL sur votre FortiManager (en SSH) :
config system admin setting
set show_tcl_script enable
end
Création du script TCL :
Aller sur "Device Manager",
Cliquer sur "Scripts",
Cliquer sur "Create New".
Indiquer un nom pour votre script,
Sélectionner "TCL Script",
Sélectionner "Remote FortiGate Directly (via CLI)".
Taper votre Script.
Voici un exemple de script TCL pour :
Modification de l’ip d’une interface,
Modification d’une plage DHCP,
Suppression d’une route + création d’une route.
#DEBUT du script
#LIGNE ESSENTIELLE
#!
#DEBUT modification de l'ip de l'interface
# Exécution de la commande « config vdom »
set vdom [exec "config vdom\n" "# " 15]
puts $vdom
# Exécution de la commande « edit @VDOM »
set editserv [exec "edit @VDOM\n" "# " 15]
puts $editserv
# Exécution de la commande « config system interface »
set cfgsysint [exec "config system interface\n" "# " 15]
puts $cfgsysint
# Exécution de la commande « edit XXX »
set edit@ID [exec "edit @ID \n" "# " 15]
puts $edit@ID
# Modification de l’adresse ip de l’interface
set setip [exec "set ip @IP @MASK\n" "# " 15]
puts $setip
# Exécution de la commande « next »
set next [exec "next\n" "# " 15]
puts $next
# Exécution de la commande « end »
set end [exec "end\n" "# " 15]
puts $end
#FIN modification de l'ip de l'interface
#DEBUT modification DHCP de l'interface
# Exécution de la commande « config system dhcp server »
set cfgsysdhcp [exec "config system dhcp server\n" "# " 15]
puts $cfgsysdhcp
# Recherche d’une configuration DHCP avec la valeur @NAME
set dhcp [exec "show | grep -f '@NAME'\n" "# " 15]
#puts $dhcp #Dé-commenter pour un débug afin d’afficher la valeur
# SLIP du résultat sous forme de tableau
set SplitEdit [split $dhcp \n]
#puts $SplitEdit #Dé-commenter pour un débug afin d’afficher la valeur
# Récupération de la 3éme valeur du tableau – le comptage commence à 0
set numedit [lindex $SplitEdit 2]
#puts $numedit #Dé-commenter pour un débug afin d’afficher la valeur
# Exécution de la commande « edit X » - valeur récupérer ci-dessus
set editdhcp [exec "$numedit\n" "# " 15]
puts $editdhcp
# Modification de l’ip de la gateway
set setgw [exec "set default-gateway @GATEWAY\n" "# " 15]
puts $setgw
# Modification du masque de sous réseau
set setmask [exec "set netmask @MASK\n" "# " 15]
puts $setmask
# Exécution de la commande « config ip-range »
set cfgiprange [exec "config ip-range\n" "# " 15]
puts $cfgiprange
# Exécution de la commande « edit 1 »
set editiprange [exec "edit 1\n" "# " 15]
puts $editiprange
# Modification du début de la plage dhcp
set setstart [exec "set start-ip @START_IP\n" "# " 15]
puts $setstart
# Modification de la fin de plage dhcp
set setend [exec "set end-ip @END_IP \n" "# " 15]
puts $setend
# Exécution de la commande « next »
set next [exec "next\n" "# " 15]
puts $next
# Exécution de la commande « end »
set end [exec "end\n" "# " 15]
puts $end
# Exécution de la commande « end »
set end [exec "end\n" "# " 15]
puts $end
# Exécution de la commande « end »
set end [exec "end\n" "# " 15]
puts $end
#FIN modification DHCP de l'interface
#DEBUT modification routage
# Exécution de la commande « config vdom »
set vdom [exec "config vdom\n" "# " 15]
puts $vdom
# Exécution de la commande « edit @VDOM »
set editroot [exec "edit @VDOM\n" "# " 15]
puts $editroot
# Exécution de la commande « config router static »
set cfgrtstatic [exec "config router static\n" "# " 15]
puts $cfgrtstatic
# Recherche de la route qui à la valeur @ROUTE
set route [exec "show | grep -f '@ROUTE'\n" "# " 15]
#puts $route #Dé-commenter pour un débug afin d’afficher la valeur
# SLIP du résultat sous forme de tableau
set Splitroute [split $route \n]
#puts $Splitroute #Dé-commenter pour un débug afin d’afficher la valeur
# Récupération de la 3éme valeur du tableau – le comptage commence à 0
set routeedit [lindex $Splitroute 2]
#puts $routeedit #Dé-commenter pour un débug afin d’afficher la valeur
# SLIP du résultat $routeedit sous forme de tableau
set splitedit [split $routeedit]
#puts $ splitedit #Dé-commenter pour un débug afin d’afficher la valeur
# Récupération de la 6éme valeur du tableau – le comptage commence à 0
set nedit [lindex $splitedit 5]
#puts $nedit #Dé-commenter pour un débug afin d’afficher la valeur
# Exécution de la commande « delete X » - valeur récupérer ci-dessus
set dlroute [exec "delete $nedit\n" "# " 15]
puts $dlroute
# Exécution de la commande « edit 0 »
set editroute [exec "edit 0\n" "# " 15]
puts $editroute
# Création de la route pour la destination @IP_DST @MASK_DST
set setdst [exec "set dst @IP_DST @MASK_DST\n" "# " 15]
puts $setdst
# Création de la route avec la gateway @IP_GATEWAY
set setrtgw [exec "set gateway @IP_GATEWAY\n" "# " 15]
puts $setrtgw
# Création de la route avec le device @DEVICE
set setdevice [exec "set device @DEVICE\n" "# " 15]
puts $setdevice
# Exécution de la commande « next »
set next [exec "next\n" "# " 15]
puts $next
# Exécution de la commande « end »
set end [exec "end\n" "# " 15]
puts $end
# Exécution de la commande « end »
set end [exec "end\n" "# " 15]
puts $end
#FIN modification routage
# Exécution de la commande « quit »
set quit [exec "quit\n" "# " 15]
puts $quit
#FIN du script
Pour plus d'informations : https://docs.fortinet.com/document/fortimanager/6.2.0/administration-guide/914165/tcl-scripts