Cours Complet Lua Programmation en PDF


Télécharger Cours Complet Lua Programmation en PDF

★★★★★★★★★★4 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Cours Complet Lua Programmation enjeux et pratique

...

Intégration de LUA dans LoriotPro

LoriotPro « Extended Edition » prend en charge des extensions de fonctionnalité écrites en LUA. Ces extensions se présentent sous la forme de scripts au format texte, situé dans le répertoire c:lloriotpro-replbinlconfiglscript. Ces scripts sont utilisables sous la forme d’objet SNMP virtuel ou bien directement à partir d’une ActiveView, du « Report Center », de « ShortCut » de host, ou des différents menus du logiciel. Un environnement de développement est fourni pour permettre de créer, tester et lancer des scripts de tous types. En fonction du type d’utilisation des scripts il existe plusieurs librairies de fonctions spécifiques. LoriotPro utilise la version 5.02 de LUA en mode dll (lua50.dll) ce qui permet l’utilisation de librairies externes. La suite du document s’applique à montrer comment utiliser ces fonctions et librairies.

 L’environnement de développement intégré à LoriotPro en action.

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

SNMP Objet virtuel

Pour simplifier l’usage des scripts dans l’ensemble des fonctions existantes de LoriotPro il est possible d’associer une script LUA avec un objet SNMP. L’association entre un script LUA et un nom d’objet SNMP se réalise à l’aide d’un fichier de MIB standard comportant quelques balises propriétaires. Ce mécanisme permet de fournir de façon simple à l’utilisateur un ensemble de fonctions utilisables comme des objets SNMP standard.

De base la MIB LUTEUS-SCRIPT-STANDARD-MIB incluse dans le package « Extended » de LoriotPro (fichier bin/mibs/1-lp_script-standard.mib) contient 40 objets virtuels à utiliser. La MIB LUTEUS-SCRIPT-MIB incluse dans le package « Extended » de LoriotPro (fichier bin/mibs/1-lp_script01.mib) contient des exemples d’objets virtuels créés à partir de scripts LUA.

Le principe d’utilisation de fichier de MIB pour créer des objets virtuels SNMP est très simple. Le fichier est créé en utilisant la syntaxe ASN1 standard d’un fichier de MIB. Pour que l’objet soit considéré par LoriotPro comme un script LUA il faut utiliser un « ACCESS » de type lp_access_script.

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Passage de paramètres

Lorsque LoriotPro appel un objet snmp virtuel il lui passe plusieurs paramètres que le script va pouvoir utiliser pour s’initialiser. En retour le script fournit deux valeurs que LoriotPro va utiliser pour construire la réponse.

LoriotPro fournit les paramètres suivant au script :

Paramètres Descriptions

lp_host L’adresse IP du host sous la forme d’une chaîne de caractères

lp_oid Le nom de l’objet snmp virtuel sous la forme d’une chaîne de caractères

lp_index L’index associé a l’objet snmp virtuel sous la forme d’une chaîne de caractères incluant le point. « .2 »

Le script fournit les paramètres suivant à LoriotPro :

Paramètres Descriptions

lp_value Une valeur (format double pour supporter le 64 bits) (si l’objet est de type « integer »)

lp_buffer Une chaîne de caractères (si l’objet est de type string)

Exemple:

Le fichier your-script.mib contient la définition de l’objet lp_your_diskused qui va nous permettre de calculer le pourcentage d’utilisation de notre disque C :.

YOUR-SCRIPT-MIB DEFINITIONS ::= BEGIN

IMPORTS

luteus FROM LUTEUS-TC-MIB;

scripts FROM LUTEUS-TC-MIB;

your_script OBJECT IDENTIFIER ::= { scripts 1000 }

-- Vous devez commencer à 1000 (1 to 999 is reserved to Luteus)

-- ou bien attacher vos objets à votre propre OID

-- si vous désirez diffuser vos MIB en utilisant notre OID

-- enterprises.luteus

-- consulter nous pour obtenir un range de valeur

-– le nom des objets est limité à une vingtaine de caractères

lp_your_diskused OBJECT-TYPE

SYNTAX Integer32

ACCESS lp_access_script

STATUS current

DESCRIPTION

"Test un calcul sur

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

lp_value = (lp.Get(lp_host,'hrstorageused.index') /

lp.Get(lp_host,'hrstoragesize.index'))*100;”

"

-- le script peut être “embedded” directement dans le fichier

-- il est placé entre les balises

-- il est aussi possible de ne pas utiliser ces balises

-- à la compilation un fichier lp_your_diskused.lua sera généré dans

-- le répertoire bin/config/script

-- il est possible de copier directement le fichier lp_your_diskused.lua

-- dans le répertoire bin/config/script.

-- une fois compilé il est possible de modifier le fichier

-- lp_your_diskused.lua se trouvant dans bin/config/script.

-- attention si vous recompiler cette MIB vos modifications seront perdu.

-- lp_host et lp_index est passé au script par LoriotPro -- lp_iod n’est pas utilisé par ce script

-- lp_value est retourné par le script car l’objet est de type Integer32

 

lp_buffer ="BAD"

get1=("hrstorageused"..lp_index); --concatenation get2=("hrstoragesize"..lp_index); --concatenation

lp_value = (lp.Get(lp_host,get1)/(lp.Get(lp_host,get2)+0.001))*100; lp_buffer ="OK"

 

::= { your_script 1 }

END

On peut tester le script au préalable avec l’éditeur de script. Reportez vous au chapitre concernant l’éditeur pour plus d’information sur son utilisation.

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

La touche F5 permet de lancer le script

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

On place le fichier your-script.mib dans le répertoire bin/mibs et on lance le compilateur de MIB.

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

 Après la compilation votre script est vu comme un objet SNMP.

 Le fichier « lp_your_diskused.lua » a été créé dans le répertoire bin/config/script

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

 L’objet peut maintenant être utilisé comme un objet SNMP standard à travers tous les modules de LoriotPro.

Attention cet objet est indexé et il faudra donc indiquer manuellement l’index du disque que nous désirons tester.

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Dans ce module qui affiche le nom de l’objet SNMP reçu, nous avons

lp_your diskused.2 qui n’est en réalité qu’un artefact par contre nous avons bien les 94,02 %o d’utilisation de notre disque C :.

Nous pouvons l’utiliser dans un plugin de graph linéaire.

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Des requêtes multiples peuvent être réalisées en changeant l’index.

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA



Le principe des objets snmp virtuels est simple, une requête avec l’OID du ou des objets virtuels est envoyée vers le host. Au retour du paquet (mode synchrone uniquement), le noyaux de LoriotPro regarde les objets de type lp_access_script (logiquement à NUL) retournés par l’agent snmp et les remplace par le résultat des scripts. Les scripts peuvent eux aussi envoyer des requêtes vers l’agent snmp ou un ensemble d’agents snmp.

Les objets snmp virtuel sont bien sûr utilisables dans des ActiveView.

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Objet snmp virtuel par défaut

Il suffit de compiler la MIB LUTEUS-SCRIPT-STANDARD-MIB pour pouvoir disposer de 40 objets à définir simplement en créant les fichiers de script correspondant dans le répertoire bin/config/script.

Si vous voulez utiliser l’objet lp_script1 créer simplement un script lp_script1.lua dans le répertoire bin/config/script et l’objet sera disponible.

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Dans cet exemple nous n’utilisons plus le passage d’index car il est directement codé dans le script.

Par défaut ces objets virtuels sont de type integer32, si vous désirez réaliser des objets qui retournent une chaîne de caractère (« string ») voici la syntaxe à utiliser dans le fichier de MIB.

lp_your_string OBJECT-TYPE

SYNTAX OCTETSTRING

ACCESS lp_access_script

STATUS current

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

DESCRIPTION

"return a string"

 

lp_buffer ="BAD"

lp_value, lp_buffer =lp.Get(lp_host,"sysname.0")

::= { your_script 2 }

Après compilation le fichier lp_your_string.lua est créé dans le répertoire bin/config/script.

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Le nouvel objet snmp virtuel est utilisable et renvoit une chaîne de caractères.

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Exception d’utilisation des objets SNMP virtuel

Les objets snmp virtuels ne sont pas utilisables avec des sockets de type asynchrone, si vous développez des plugins à partir de notre SDK, ils devront utiliser une logique synchrone. Dans le Logiciel LoriotPro seuls les modules « Common Query », « Advanced Query » et le « Poller » qui travaillent en mode direct (asynchrone) n’ont pas la possibilité d’utiliser des objets snmp virtuels. Les autres plugin et module de LoriotPro travaillent avec des requêtes en mode synchrone et ils supportent les objets snmp virtuels.

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Utilisation des scripts LUA dans les ActiveView

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Introduction

Les scripts utilisés par les ActiveView peuvent être attachés aux objets graphiques de la MAP. Dans ce cas, les scripts sont exécutés à intervalles réguliers (polling interval). Le planificateur (scheduler) d’actions associé à chaque ActiveView parcourt en permanence la liste chaînée des objets de la View et exécute l’expression (Request). Lorsque le temps est échu, les objets sont chaînés, ce qui entraîne l’exécution des scripts les un après les autres (en fonction du polling interval). Un script ne sera pas exécuté une seule fois mais à chaque intervalle de temps. Il est possible de désactiver l’exécution du script en utilisant dans le script une commande modifiant les paramètres de polling, mais un script désactivé ne pourra pas de lui-même se réactiver. Le script d’un objet peut interférer sur les paramètres d’un autre objet et réactiver le script ou changer ses paramètres.

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Type de scripts utilisable dans les ActiveView

Les ActiveView permettent un usage multiple des scripts LUA.

  1. Un usage direct d’objet snmp virtuel est possible.
  2. Un usage direct est possible en ligne de commande avec l’option Getipoid sous la forme d’une expression de type calculette scientifique.
  3. Un usage direct de script en mode polling est aussi possible en pointant simplement sur le fichier avec des paramètres.
  4. un script peut être attaché à l’option d’action de double click de la souris sur l’objet graphique.
  5. un script peut être attaché au menu contextuel paramétrable de l’objet graphique.
  6. Un Script peut être lancé à partir du menu principal.
  7. Un script peut être associe à l’activation d’une ActiveView de type Modal

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Usage direct d’objets SNMP virtuels

L’utilisation d’objet snmp virtuel ne pose aucun problème, ils sont utilisés comme des objets snmp standard.

Le mode « Wizard » permet de sélectionner les objets snmp virtuel, mais il ne supporte pas l’indexation Eventuelle de l’objet.

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Calculette scientifique

En utilisant la fonction GetipOId standard il est possible de réaliser des opérations mathématiques simples sur une collecte d’objet SNMP (en provenance d’un seul host) .

Getipoid defip expression Expression :

Il suffit de mettre les objets snmp (oid) désirés entre [] dans la chaîne de calcul, la syntaxe est de type calculette scientifique (langage C, C++) avec des parenthèses. Pour la syntaxe des fonctions mathématiques avancé reportez vous à la partie librairie « math » de la documentation LUA.

 L’objet [$lastvalue] assigne dans la chaîne à son emplacement la dernière valeur calculée.

Exemple :

Affiche l’utilisation d’un disque (d :) (host-resource-mib) en pourcentage

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

getipoid defip ([hrstorageused.3]/[hrstoragesize.3]*100) Affiche l’espace libre sur le disque en Mbytes

getipoid defip ((([hrStorageSize.3]-

[hrstorageused.3])*[hrstorageallocationunits.3])/1024)/1024

Attention :

Il vaut mieux éviter de mettre des blancs dans la chaîne expression Correct

(([hrstorageused.3]/[hrstoragesize.3]*100)/1000)

Non souhaité mais ça fonctionne (l’analyseur syntaxique ( parser ) de l’ActiveView supporte 50 blocs maximun)

( ( [hrstorageused.3] / [hrstoragesize.3] * 100 ) / 1000)

Valeur possible en retour d’expression

#ERROR si la syntaxe est incorrecte ou si les objets snmp (OID) ne sont pas trouvés

1.#INF00 si il y a une erreur de division par zéro

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Si on mets une valeur dans unit elle est automatiquement ajoutée au nom (« name ») de l’objet avec l’option ‘fill name’ cela permet d’avoir des noms dynamiques avec une unité.

L’option : ‘fill name’ permet de remplacer le nom de l’objet par le résultat. L’option unit dans (vu meter) est ajoutée au nom si il existe.

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

 Dans l’exemple suivant on utilise un objet snmp virtuel pour réaliser le calcul.

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

 Cet exemple intègre du calcul avec des sinus.



 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

The functions math.random and math.randomseed are interfaces to the simple random generator functions rand and srand that are provided by ANSI C. (No guarantees can be given for their statistical properties.) When called without arguments, math.random returns a pseudo-random real number in the range [0,1). When called with a number n, math.random returns a pseudo-random integer in the range [1,n]. When called with two arguments, l and u, math.random returns a pseudo-random integer in the range [l,u]. The math.randomseed function sets a "seed" for the pseudo-random generator: Equal seeds produce equal sequences of numbers.

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Lancement scheduler de script LUA

Il est possible de lancer des scripts (fichiers LUA) directement avec la commande RunScript dans le champ expression d’un objet de l’ActiveView. Chaque objet d’un ActiveView peut donc faire tourner un script. Dans le cas d’un script lancé par une ActiveView seul le paramètre lp_buffer sera retourné par le script et un test classique pourra être réalisé dessus mais vous devez obligatoirement définir la variable lp_value dans votre script (lp_value=0 ;).

Attention

Le script sera exécuté à chaque polling intervalle. Si vous voulez exécuter un script de façon unitaire, utilisez les fonctions de menu contextuel ou faire un double click de la souris associé à l’objet graphique.

La syntaxe complète est la suivante :

RunScript ip_adresse script_file lp_index lp_oid

Termes Syntaxe remarques

RunScript La commande

ip_adresse L’adresse IP du Host concerné en mode doté (X.Y.Z.W) ou defip qui utilise l’adresse IP par défaut de l’ActiveView. Ce paramètre est passé dans lp_host au script.

script_file Le nom du fichier lua. Le fichier doit se trouver impérativement dans le répertoire bin/config/script et il ne faut pas mettre l’extension .lua. Si vous créez un sous répertoire dans bin/config/script par exemple socket vous pouvez lancer des scripts de ce répertoire avec la syntaxe.

Socket/nom_fichier

Exemples

Soit le fichier script1.lua dans bin/config/script.

RunScript defip script1

Soit le fichier script1.lua dans bin/config/script/socket. RunScript defip socket/script1

lp_index Ce paramètre est optionnel, le programme passe ce paramètre dans la variable lp_index du script.

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

 Attention

 Ce paramètre ne doit pas contenir de caractères blancs.

 Exemples

 Soit le fichier script1.lua dans bin/config/script.

 RunScript defip script1 .2

 Soit le fichier script1.lua dans bin/config/script/socket.

 RunScript defip socket/script1 .2

lp_oid Ce paramètre est optionnel le programme passe ce paramètre dans la variable

lp_oid du script.

 Attention

 Ce paramètre ne doit pas contenir de caractères blancs et pour l’utiliser il faut un paramètre lp_index dans la ligne même si il ne sert à rien.

 Exemples

 Soit le fichier script1.lua dans bin/config/script.

 RunScript defip script1 .2 param

 Soit le fichier script1.lua dans bin/config/script/socket.

 RunScript defip socket/script2 .2 param

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

 socket/lp_script2

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Script utilisé avec la fonction DoubleClick

Un script peut être associé à l’action de double click sur un objet graphique. Ceci permet de dérouler un script sur action uniquement et non plus de façon régulière (polling) et continue.

 La syntaxe complète des paramètres est : filename.lua ip_adresse index oid

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Script associé au menu contextuel d’un objet graphique

Un script peut être associé au menu contextuel paramétrable d’un objet graphique. Ceci permet de dérouler une sélection de scripts sur action uniquement et non plus de façon régulière (polling) et continue.

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

La syntaxe complète des paramètres est : filename.lua ip_adresse index oid

Une fenêtre pour gérer l’exécution du script est affichée.

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

 Cliquer sur l’icône croix rouge pour quitter cette fenêtre.

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Utilisation directe de script dans une ActiveView

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

 LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

Utilisation de Script d’initialisation pour les ActiveView Modal

Il est possible d’associer un script d’initialisation au démarrage d’une ActiveView Modal. Pour configurer ce Script, il faut utiliser la fenêtre de propriété de l’ActiveView.

Une ActiveView Modal peut être appelée à partir du Report Center, d’un ShortCut, du menu contextuel d’un objet graphique d’une ActiveView ou d’un double click de souris sur un objet graphique d’ActiveView.

Parametres Description

Default IP Adress Le parametre lp_host passé au script.

Attention

Dans le cas d’une utilisation à travers un shortcut de directory le lp_host passé au script est celui indiqué dans la ligne de commande du shortcut (cela permet de travailler avec des ActiveView utilisant la notion de « defip ») et ce paramètre est remplacé par l’adresse IP du shortcut.

LUA StartUP Script Le fichier lua lancé

OID Parameter Le parametre lp_oid passé au script

INDEX Parameter Le parametre lp_index passé au script

Reportez vous au chapitre « ShortCut associant une ActiveView Modal et un Script LUA » pour une description de l’utilisation de cette fonction.

Utilisation direct de script

LoriotPro V4.00 Extended Edition – Supervision et gestion SNMP par scripts LUA

A partir des menus du logiciel

Il est possible de lancer un script à partir des menus du logiciel. Le logiciel passe dans la variable lp_host l’adresse IP du Host par défaut sélectionné dans la directory



430