Cours Complet de langage de Programmation Lua en PDF


Télécharger Cours Complet de langage de Programmation Lua en PDF

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

Télécharger aussi :


Cours Complet de langage de Programmation Lua

...

1.1.1.4 Signe d'attention

Ce signe vous avertit d’un problème possible ou d’une information importante.

Attention e'

1.1.1.5 Type des variables et syntaxe

Tous les variables écrites entre simples guillemets sont des chaînes de caractères. Exemple

‘caption’ ‘ip’ ‘oid’

Les variables sans simples guillemets, sauf informations contraires, sont des valeurs de type double (LUA number).

Exemple value result

1.1.1.6 Variable `ip'

Toute référence à la variable ‘ip’ implique que cette adresse soit définie dans la Directory et soit correctement configurée. Toutes les fonctions LUA des librairies LUTEUS utilisent de façon transparente les paramètres des équipements représentés par leur adresse ‘ip’ respective. Si vous utilisez une fonction de requête SNMP, la fonction utilisera les paramètres SNMP de l’équipement tels que définis dans la Directory. La librairie offre plusieurs fonctions pour vérifier si une adresse IP est valide (présente dans la Directory)

Attention el,-

Il n’est pas possible de réaliser des fonctions de requêtes SNMP sur des équipements dont l’adresse ‘ip’ n’est pas dans la Directory.

1.1.1.7 Variable `oid'

Toute référence à un nom d’objet SNMP ‘oid’ implique que cet objet existe dans la data base des MIBs compilés. La librairie offre plusieurs fonctions pour vérifier la réalité d’un nom SNMP. En général il s’agit d’un nom d’objet SNMP en forme non doted, par exemple sysname, syslocation...

1.1.1.8 Variable `uid'

Toute référence à la variable ‘uid’ représente un unique identifiant de type entier 64 bits codé dans une chaîne de caractère. Logiquement tous les éléments de LoriotPro

Preversion 5 - r35 NOT FOR PUBLIC DIFFUSION

LoriotPro V5.00 Extended Edition – Supervision et gestion SNMP par scripts LUA Manuel de référence des librairies possèdent un ‘uid’ qui permet à certaines fonctions de réaliser des opérations sur ces objets.

1.1.1.9 Variable `path'

Les variables de type ‘path’ ou ’file’ qui contiennent des caractères ‘\’ doivent être modifiées pour que le caractère ‘\’ soit doublé : ‘\\’ .

Exemple

« C:\\myfile.txt »

1.1.1.10                Variable `array'

Les variables de type ‘array’ sont des tableaux LUA. Les fonctions des librairies LUTEUS vous demandent de fournir une chaîne de caractères qui sera utilisée par la fonction pour créer le tableau. Une fois le tableau créé, vous devrez l’utiliser dans votre code comme une tableau classique LUA (sans les guillemets simples).

2 LoriotPro Librairie (lp)

Cette librairie est attachée à la dll dsnmp_kernel42.dll, elle fournit l’ensemble des fonctions de base permettant d’exploiter les ressources du noyau de LoriotPro. Le fichier bin/config/lua_editor.ini contient l’ensemble des fonctions disponibles ainsi qu’un rappel simple de leur syntaxe. Ce fichier est utilisé par l’environnement de développement pour gérer les fonctions de colorisation du texte et l’affichage des tooltips.

Les fonctions de la librairie ont une syntaxe du type : lp.GetNext(‘value’,...) ;

Le tableau suivant est là uniquement pour vous fournir la liste des fonctions disponibles ainsi que leur syntaxe - consulter le manuel de référence des librairies pour une explication détaillée de chaque fonction et le manuel d’exploitation pour des exemples d’utilisations de ces fonctions -. Les noms des variables entre guillemets simples correspondent à des variables de type chaîne de caractères. Le nombre de fonctions disponibles avec la version 5 de LoriotPro Extended Edition a doublé depuis la version 4.

2.1 Tableau de définition de la librairie

Voici un résumé classé par ordre alphabétique de l’ensemble des fonctions de cette librairie.

Fonctions            Syntaxe simplifié

lp.Get   lp.Get('ip','oid');

lp.Set    lp.Set('ip','oid');

lp.GetNext         lp.GetNext('ip','oid');

lp.Gets lp.Gets('ip','oid','array');

lp.GetRows        lp.GetRows('ip','oid,oid,oid','array');

lp.GetPath         lp.GetPath();

lp.Trace               lp.Trace('texte');

lp.Break               lp_Break();

lp.Stop lp.Stop();

lp.GetFirstIP      lp.GetFirstIP();

lp.GetNextIP     lp.GetNextIP('ip');

lp.GetIPInformation      lp.GetIPInformation('ip','array');

lp.SetIPOption  lp.SetIPOption('ip',param_type,'value');

lp.GetUIDInformation  lp.GetUIDInformation('uid','array');

lp.GetChildUID lp.GetChildUID('uid','array');

lp.atoip lp.iptoa(ip);&

lp.GetIPFromMAC          lp.GetIPFromMAC('mac');

lp.FindIPFromDynamicDNS        lp.FindIPFromDynamicDNS('www.google.com');

lp.SendEvent    lp.SendEvent(

eventnumber,level,'ipref','ipmask','buffer');

lp.SendExteFrnEvent    lp.SendExternEvent(     'ipdest', port, eventnumber,

level,     'ipref','ipmask','buffer');

lp.IsLoadedMIBRef        lp.IsLoadedMIBRef('REF-MIB');

lp.FindSNMPObject       lp.FindSNMPObject('sysname');

lp.GetFirstNetwork        lp.GetFirstNetwork();

lp.GetNextNetwork      lp.GetNextNetwork('net','mask');

lp.GetNetworkFromIP  lp.GetNetworkFromIP('ip');

lp.GetFirstRouter            lp.GetFirstRouter();

lp.GetNextRouter          lp.GetNextRouter('ip_groupref');&

lp.GetNetworkInformation        lp.GetNetworkInformation('net','mask','array');

lp.GetRouterInformation            lp.GetRouterInformation('ip_groupref','array');

lp.LoadLibrary   lp.LoadLibrary('librairy_path-name');

lp.HexToOID      lp.HexToOID('xx:xx:xx:xx:');

lp.GetRowsBRC               lp.GetRowsBRC('ip','oid,oid,oid','array',VlanID);

lp.GetNextBRC lp.GetNextBRC('ip','oid',VlanID);

lp.GetBRC           lp.GetBRC('ip','oid',vlanid);

lp.SetBRC            lp.SetBRC('ip','oid',vlanid);

lp.GetsBRC         lp.GetsBRC('ip','oid','array',VlanID);

lp.Print lp.Print('texte',texte',..);

lp.GetVersion   lp.GetVersion();

lp.IsDebugMode             lp.IsDebugMode();

lp.InsertNewHost           lp.InsertNewHost('ip','name','father_uid',mode);

lp.InsertNewContainer lp.InsertNewContainer('name','father_uid',type);

lp.InsertNewNetwork  lp.InsertNewNetwork( 'name', 'desc',   'net',

'mask',  type,     speed,  'father_uid');

lp.FindName     lp.FindName('name');

lp.SaveDirectoryAs         lp.SaveDirectoryAs('filename');

lp.GetTableEntryList      lp.GetTableEntryList('entryname','array');

lp.atof  lp.atof('text_number');

lp.GetAllHostFromContainer     lp.GetAllHostFromContainer('uid','array');

lp.GetSNMPObjectDescription lp.GetSNMPObjectDescription('sysname');

lp.GetTrapFilterList        lp.GetTrapFilterList('array');

lp.GetTrapFilterInformation      lp.GetTrapFilterInformation('uid','array');

lp.GetTrapFilterActionList           lp.GetTrapFilterActionList('uid','array');

lp.GetTrapFilterActionInformation         lp.GetTrapFilterActionInformation('uid¬action','array');

lp.GetEvenList  lp.GetEvenList('array');

lp.GetEventInformation              lp.GetEventInformation(number,'array');

lp.GetEventActionList   lp.GetEventActionList(number,'array');

lp.GetEventFilterActionInformation      .GetEventFilterActionInformation(        'uidaction'

,'array');

lp.AckEvent       lp.AckEvent(number);

lp.AckEventFilterAction               lp.AckEventFilterAction('uid-action');

lp.AckTrapFilter               lp.AckTrapFilter('uid');

lp.AckTrapFilterAction  lp.AckTrapFilterAction('uid-action');

lp.ClearIPEventCounter               lp.ClearIPEventCounter('ip');

lp.ClearIPTrapCounter  lp.ClearIPTrapCounter('ip');

lp.GetLoriotProID           lp.GetLoriotProID();

lp.SetEventFilterActionDisable lp.SetEventFilterActionDisable(               'uid',      0 or

lp.SetTrapFilterActionDisable    lp.SetTrapFilterActionDisable('uid',0 or 1);

lp.SetEventFilterDisable              lp.SetEventFilterDisable(number,0 or 1);

lp.SetTrapFilterDisable lp.SetTrapFilterDisable('uid',0 or 1);

lp.GetTrapFilterGlobalStatus     lp.GetTrapFilterGlobalStatus();

lp.GetEventFilterGlobalStatus  lp.GetEventFilterGlobalStatus();

lp.SetTrapFilterGlobalStatus      lp.SetTrapFilterGlobalStatus( 0 or 1);

lp.SetEventFilterGlobalStatus   lp.SetEventFilterGlobalStatus( 0 or 1);

lp.Parse               lp.Parse('texte','array','token');

lp.Fgets               lp.Fgets(file);

lp.Fclose              lp.Fclose(file);

lp.Fopen             lp.Fopen('filename','wt')

lp.Fprintf             lp.Fprintf(file,'texte',number,...);

lp.CopyFile         lp.CopyFile('filename1','filename2');

lp.FindFile           lp.FindFile('path','ext','array');

lp.RemoveFile  lp.RemoveFile('filename');

lp.GetFileAttrib                lp.GetFileAttrib('path/filename','array');

lp.MakeDir         lp.MakeDir('path');

lp.RemoveDir    lp.RemoveDir('path');

lp.ShowPlugin   lp.ShowPlugin('uid');

lp.GetIPAddress              lp.GetIPAddress('www.name.com')

lp.HidePlugin     lp.HidePlugin('uid');

lp.CliPlugin         lp.CliPlugin('uid','Command');

lp.SendSyslog   lp.SendSyslog('ip_server','buffer');

lp.InsertADVAuditPolling            lp.InsertADVAuditPolling(           'ip', audit_ref,

'param', poll_interval, enable, gen_audio,

gen_report, event, level, condition,      sla,

['title']);

lp.UpdateADVAuditPolling         lp.UpdateADVAuditPolling('ip', audit_ref, 'param', poll_interval, enable, gen_audio,

gen_report, event,        level,     condition,           sla);

lp.FoundADVAuditUID lp.FoundADVAuditUID('ip',audit_ref,'param');

lp.EnableDirectoryObject            lp.EnableDirectoryObject('uid');

lp.LocateDirectoryUID  lp.LocateDirectoryUID('uid');

lp.UpdateDirectory        lp.UpdateDirectory();

lp.SetNetworkOption   lp.SetNetworkOption('net',       'mask',  variable,

'value');

lp.OR     lp.OR(value1 ,   value2);

lp.XOR  lp.XOR(value1 , value2);

lp.AND lp.AND(value1 ,               value2);

lp.shifttoright    lp.shifttoright(value1,shift );

lp.shifttoleft      lp.shifttoleft(value1,shift );

lp.ui64div            lp.ui64div(value1 ,          value2);

lp.ui64rest          lp.ui64rest(value1 ,        value2);

lp.ascii_ui64add               lp.ascii_ui64add('value1'              ,              'value2');

lp.ascii_ui64sub               lp.ascii_ui64sub('value1'              ,              'value2');

lp.ascii_ui64div lp.ascii_ui64div('value1'               ,              'value2');

lp.ascii_ui64rest               lp.ascii_ui64rest('value1'             ,              'value2');

lp.ascii_ui64multi            lp.ascii_ui64multi('value1'           ,              'value2');

lp.ascii_ui64or   lp.ascii_ui64or('value1' ,              'value2');

lp.ascii_ui64xor lp.ascii_ui64xor('value1'               ,              'value2');

lp.ascii_ui64and               lp.ascii_ui64and('value1'              ,              'value2');



lp.ascii_Getui64               lp.ascii_Getui64('ip','oid');

lp.ascii_GetBRCui64       lp.ascii_GetBRCui64('ip','oid',vlanid);

lp.ascii_GetNextui64     lp.ascii_GetNextui64('ip','oid');

lp.ascii_GetNextBRCui64             lp.ascii_GetNextBRCui64('ip','oid',vlanid);

lp.ascii_SetSnmpui64    lp.ascii_SetSnmpui64('ip','oid');

lp.ascii_SetSnmpBRCui64            lp.ascii_SetSnmpui64('ip','oid',vlanid);

lp.ascii_ui64ToHex          lp.ascii_ui64ToHex('1234');

lp.ascii_doubleToui64   lp.ascii_doubleToui64(value);

lp.GetSnmpObjectInformations              lp.GetSnmpObjectInformations('oid','array');

lp.FoundADVTCPUID     lp.FoundADVTCPUID('ip',tcp_port);

lp.InsertADVTCPPolling                lp.InsertADVTCPPolling('ip', tcp_port, poll_interval, enable, gen_audio, gen_report,

event,  level,     condition,           sla,         ['title']);

lp.UpdateADVTCPPolling            lp.UpdateADVTCPPolling('ip', tcp_port, poll_interval, enable, gen_audio, gen_report,

event,  level ,condition,               sla);

lp.UpdateADVTCPPollingUID     lp.UpdateADVTCPPollingUID('uid', poll_interval, enable, gen_audio, gen_report, event, level,

condition,           sla);

lp.SendTrapV1  lp.SendTrapV1('ipdest',               'ipagent',             'community',

'trapname',        type,     specific,               'iod,oid');

lp.SendTrapV2  lp.SendTrapV2('ipdest',               'community',     'trapname',

'iod1,oid2');

lp.GraphADVAuditToJpeg           lp.GraphADVAuditToJpeg('uid',               'filename.jpeg',

height,width);

lp.GraphADVPollingToJpeg        lp.GraphADVPollingToJpeg('uid',             'filename.jpeg',

'title',    height, width);

lp.GraphIPPollingToJpeg             lp.GraphIPPollingToJpeg('ip',     'filename.jpg',

'title',    height, width);

lp.GraphVuMeterToJpeg            lp.GraphVuMeterToJpeg('filename.jpeg',          'title',

value, min, max, type, height, width, bkcolor, inkcolor);

lp.SetDirectoryUID         lp.SetDirectoryUID('uid',option,'value');

lp.GetFirstDirectoryUID               lp.GetFirstDirectoryUID();

lp.GetNextDirectoryUID              lp.GetNextDirectoryUID('uid');

lp.GetRouterIfList           lp.GetRouterIfList('router_id','array'); lp.GetRouterIfList('router_id','array',index);

lp.GetNetworkHostList lp.GetNetworkHostList('net',    'mask',  'array');

lp.GetNetworkHostList('net',    'mask',  'array',

index);

Attention '

Les fonctions standard de LoriotPro retournent des tableaux indexés numériquement en utilisant l’index 0 en première position de tableau. Classiquement les tableaux indexés numériquement dans LUA débutent leur indexation avec la valeur 1. Cette particularité provoque quelques erreurs dans l’utilisation de certaines fonctions de gestion des tables LUA.

La fonction table.getn() peut être utilisée de la façon suivante :

j=lp.FindFile(lp.GetPath(),"*.dll","a"); if j then

lp.Print('Find ',j,' Files\n'); for i=0,table.getn(a) do

lp.Print(a[i],"\n");

end

end

Par contre la fonction ipairs() utilisée pour browser un tableau indexé numériquement n’est pas utilisable car elle n’affiche pas le premier élément du tableau.

for key,value in ipairs(t) do lp.Print("[",key,"] [",value,"]\n") end

Les fonctions impactées par cette limitation sont :

lp.FindFile

lp.GetAllHostFromContainer

lp.GetEvenList

lp.GetEventActionList lp.GetTableEntryList lp.GetTrapFilterActionList lp.GetTrapFilterList lp.GetRows

lp.Parse

lp.Print

lpav.FindRef

lpsla.GetSLAList

lpsla.GetLoriotProIDList

Toutes ces fonctions supportent une option index = 1 en dernière position pour les rendre compatibles.

lp.FindFile('path','ext','array',index);

lp.GetAllHostFromContainer('uid','array',index)

lp.GetEvenList('array',index)

lp.GetEventActionList(number,'array',index) lp.GetTableEntryList('entryname','array',index) lp.GetTrapFilterActionList('uid','array',index)

lp.GetTrapFilterList('array',index) lp.Parse('texte','array','token',index) lpav.FindRef(number (1-4), mode, 'string','array',index) lpsla.GetLoriotProIDList('array',index) lpsla.GetSLAList('ID','array',index)

2.1.1 lp.AckEvent

value = lp.AckEvent(event_number) Explication

Cette fonction permet de faire un acquittement « ack » des événements reçus par LoriotPro. On peut visualiser la liste des événements reçus par le logiciel en utilisant les différents outils mis à la disposition de l’administrateur.

Paramètres en entrée

event—number              le numéro de référence de l’événement à acquitter

Attention 61'

Tous les événements de référence event—number seront acquittés sans tenir compte des paramètres associés.

Paramètres en sortie

value     1 si l’opération s’est bien déroulée.

nil           Si une erreur est rencontrée.

Exemple

Le logiciel reçoit des événements 600 que nous allons acquitter avec le script suivant :

lp.AckEvent(600);

On peut remarquer que l’utilisation de cette commande a un impact visuel sur le ‘Workspace Events’ de réception des événements. Tous les événements de référence 600 sont acquittés et visualisables en gris sur fond blanc dans le ‘workspace Event’.

2.1.2 lp.AckEventFilterAction

lp.AckEventFilterAction(‘uid’); Explication

Cette fonction permet de faire un acquittement d’un filtre d’événement (uid). Chaque filtre associé à un événement possède un UID qui permet de réaliser des traitements scriptés dessus. Pour visualiser l’UID associé à un filtre, vous pouvez utiliser les outils suivants :

Paramètres en entrée

‘uid’       l’UID associé au filtre d’événement.

Paramètres en sortie

value     1 si l’opération c’est bien déroulée.

nil           Si une erreur est rencontrée.

Exemple

Vous pouvez utiliser le Wizard dans l’éditeur de l’environnement de développement pour vous aider à utiliser cette fonction.

Insert/Insert Event Filter UID...

2.1.3 lp.AckTrapFilter

value = lp.AckTrapFilter(‘uid’) ; Explication

Cette fonction permet de faire un acquittement des compteurs pour un type de TRAP (uid) reçu.

Paramètres en entrée

‘uid’       l’UID associé au filtre de TRAP.

Paramètres en sortie

value     1 si l’opération c’est bien déroulée.

nil           Si une erreur est rencontrée.

Exemple

Il est possible de collecter l’UID d’un filtre de TRAP en utilisant par exemple l’option du menu :

Monitor/Traps Filter Counters

Les UIDs des filtres de TRAP sont aussi visibles dans la dernière colonne de la listbox de réception des TRAP.

 Attention el,-

Si la valeur est à zéro, cela signifie que vous n’avez pas créé de filtre pour ce type de TRAP.

Attention e'

Tous les filtres de TRAP de référence ‘uid’ seront acquittés sans tenir compte des paramètres associés. Dans le cas d’un ‘linkdown’ par exemple, tous les TRAPs ‘linkdown’ seront acquittés.

Vous pouvez insérer directement l’UID d’un filtre de TRAP dans votre script en utilisant le Wizard de l’éditeur.

2.1.4 lp.AckTrapFilterAction

value = lp.AckTrapFilterAction(‘uid’); Explication

Cette fonction permet de faire un ack des compteurs d’action associés à un filtre de TRAP (uid) reçu.

Paramètres en entrée

‘uid’       l’UID associé à l’action d’un filtre de TRAP.

Paramètres en sortie

value     1 si l’opération c’est bien déroulée.

nil           Si une erreur est rencontrée.

Exemple

Il est possible de collecter l’UID d’un filtre de TRAP en utilisant par exemple l’option du menu :

Monitor/Traps Filter Counters

2.1.5 lp.AND

value, ‘buffer’ = lp.AND(value1 , value2);

Explication

Cette fonction réalise une opération logique de type AND entre les deux valeurs. Paramètres en entrée

Value1  un nombre

Value2  un nombre

Paramètres en sortie

value     une valeur correspondant au résultat.

‘buffer’                une valeur entière de type uint64 sous la forme d’une chaîne de caractères.

nil           si une erreur.

Exemple

a=lp.AND(128,80)

lp.Print(a,"\n")

a=lp.AND(80,80)

lp.Print(a,"\n")

a,b=lp.AND(0xFF,0xAB)

lp.Print(string.format("0x%x",a),"\n")

Il est possible d’utiliser une notation hexadécimale.

… … …

2.1.59 lp.GetLoriotProID

value = lp.GetLoriotProID();

Explication

Cette fonction retourne l’ID de votre licence LoriotPro. On peut par exemple utiliser cette fonction pour construire le path des répertoires de collectes des SLA ou construire un nom de fichier spécifique.

Paramètres en entrée

Aucun

Paramètres en sortie

value Une valeur correspondant à l’ID de votre licence

Exemple

value = lp.GetLoriotProID();

lp.Print("My LoriotPro ID :",value,"\n");

...

2.1.60 lp.GetNetworkFromIP

‘net’,’mask’ = lp.GetNetworkFromIP(‘ip’);

Explication

Cette fonction retourne le réseau (network) et son masque d’une adresse ip de la

Directory (si le réseau existe dans la Directory), si plusieurs réseaux sont possibles, le plus approchant est retourné.

Attention

Ce n’est pas forcément le réseau (container network) où se trouve l’équipement dans la Directory mais le réseau au sens physique.

Paramètres en entrée

‘ip’ l’adresse ‘ip’ de l’équipement sous la forme d’une chaîne de caractères

 Paramètres en sortie

‘net’ Le network sous sa forme ‘ip’

‘mask’ Le masque du network sous sa forme ‘ip’

nil Si une erreur est rencontrée

Exemple

net,mask=lp.GetNetworkFromIP("10.33.32.157");

if net~= nil then

lp.Print("My Net/mask : ",net,"/",mask,"\n");

end

2.1.61 lp.GetNetworkHostList

number = lp.GetNetworkHostList('net','mask','array');

number = lp.GetNetworkHostList('net','mask','array',index);

Explication

Cette fonction retourne dans un tableau ‘array’, la liste des équipements (adresses

  1. ip) du réseau (network) définis par ‘net’ et ‘mask’ rattachés à ce routeur .

Attention

La fonction retourne tous les équipements inscrits dans la Directory qui répondent à la formule :

If ((IP_equipement and mask) == ) net then OK

La fonction supporte donc le VLSM ou le subnetting.

Paramètres en entrée

‘net’ Le réseau (network) de départ sous sa forme ‘ip’

‘mask’ Le masque de sous réseau du réseau sous sa forme ‘ip’

‘array’ Un nom pour votre tableau de réponse index Egal à 1 si l’indexation du tableau doit commencer à 1 pour

supporter la fonction LUA ipairs(array) et être en conformité avec les tableaux LUA classiques.



 Paramètres en sortie

number Le nombre d’équipements inscrits dans la Directory

array La liste des adresses ip des équipements du réseau

nil Si une erreur est rencontrée

Exemple

net,mask=lp.GetFirstNetwork();

if net ~=nil then

a=1;

while a==1 do

if net==nil then break end;

 lp.Print("Network/mask : ",net,"/",mask,"\n");

u=lp.GetNetworkHostList(net,mask,"array",1);

if u then

for key,value in pairs(array) do lp.Print("[",key,"] [",value,"]\n") end

end

 net,mask=lp.GetNextNetwork(net,mask);

 end

end

2.1.62 lp.GetNetworkInformation

result = lp.GetNetworkInformation('net','mask','array');

Explication

Cette fonction retourne dans un tableau ‘array’ les informations spécifiques au réseau (network) défini par son NET-IP et son masque de sous réseau : ‘net’ et

‘mask’.

Attention

Le réseau (network) doit exister dans la Directory.

Paramètres en entrée

‘net’ Le réseau (network) de départ sous sa forme ‘ip’

‘mask’ Le masque de sous réseau du réseau sous sa forme ‘ip’

‘array’ Un nom pour votre tableau de réponse

 Paramètres en sortie

result Egal à 1 si ‘array’ est renseigné

nil Si une erreur est rencontrée

… …

2.1.63 lp.GetNext

value,buffer,OIDName = lp.GetNext(‘ip’,’oid’);

Explication

Cette fonction réalise une interrogation SNMP de type GETNEXT d’un seul objet ‘oid’ vers l’adresse ‘ip’.

Paramètres en entrée

‘ip’ C’est une chaîne de caractères contenant une adresse IP sous la forme

‘x.x.x.x’.

Attention

Cette adresse doit impérativement exister dans la Directory. Les paramètres SNMP à utiliser pour réaliser la requête sont collectés dans les propriétés de l’équipement.

‘oid’ C’est une chaîne de caractères contenant un unique nom d’objet SNMP.

Attention

Cet OID doit impérativement exister dans votre data base (MIB), il est possible d’utiliser une notation de type « doted » (1.3.2…).

Paramètres en sortie

value Le résultat numérique si l’objet SNMP ‘oid’ est de type integer/gauge…

sinon 0 si il est de type octetstring.

‘buffer’ Contient sous la forme d’une chaîne de caractères le résultat du

GETNEXT SNMP.

‘OIDName’ Contient sous la forme d’une chaîne de caractères le nom de l’OID suivant retourné par le GETNEXT SNMP.

nil Si une erreur est rencontrée

Exemple

Dans cet exemple le script utilise la variable lp_host passée par LoriotPro au script et demande l’OID SNMP Next de sysname (syslocation.0).

lp_value,lp_buffer,OIDName=lp.GetNext(lp_host,"sysname");

… …

lp.Print("Next = ",OIDName,":",lp_buffer,"\n");

Les résultats sont affichés dans la colonne « Value out ».

Dans cet exemple il y a une erreur de syntaxe au niveau du paramètre ‘ip’ et toute

les valeurs en retour son a nil.

Voici un exemple plus complexe où nous recherchons l’emplacement du disque C :

OIDName="hrstoragedescr.0";

buffer = "";

lp_value = 0;

lp_buffer = "no found";

while lp_value do

 lp_value,buffer,OIDName=lp.GetNext(lp_host,OIDName);

 lp.Print(OIDName,"\n");

 if (string.sub(buffer,1,2) == "C:" ) then

 lp.Print(buffer,"\n");

 lp_buffer=buffer;

 end;

if (string.sub(OIDName,1,14) ~= "hrstoragedescr") then break end;

end

2.1.64 lp.GetNextBRC

value,buffer,OIDName = lp.GetNextBRC(‘ip’,’oid’,vlanid);

Explication

Cette fonction réalise une interrogation SNMP de type GETNEXT d’un seul objet ‘oid’ vers l’adresse ‘ip’.

Cette fonction permet de collecter des informations dans les instances de MIB par

Vlan de Cisco. Sur les équipements Cisco de type Commutateur il y a une instance

SNMP par VLAN.

Paramètres en entrée

‘ip’ C’est une chaîne de caractères contenant une adresse IP sous la forme

‘x.x.x.x’.

Attention

Cette adresse doit impérativement exister dans la Directory. Les paramètres SNMP à utiliser pour réaliser la requête sont collectés dans les propriétés de l’équipement.

‘oid’ C’est une chaîne de caractères contenant un unique nom d’objet SNMP.

Attention

Cet OID doit impérativement exister dans votre data base (MIB).

vlanid Le numéro de VLAN à qui s’adresse votre requête

Paramètres en sortie

value Le résultat numérique collecté si l’objet SNMP ‘oid’ est de type

integer/gauge… sinon 0 si il est de type octet string.

‘buffer’ Contient sous la forme d’une chaîne de caractères le résultat du

GETNEXT SNMP.

‘OIDName’ Contient sous la forme d’une chaîne de caractères le nom de l’OID suivant retourné par le GETNEXT SNMP.

nil Si une erreur est rencontrée

... ...

2.1.65 lp.GetNextDirectoryUID

‘uid’,level = lp.GetNextDirectoryUID('uid');

Explication

Cette fonction permet de récupérer l’uid d’un item de l’arbre de la Directory suivant

un item donné. Cette fonction permet de « browser » la Directory à la recherche

d’une information.

Voir la fonction : lp.GetChildUID(‘uid’,’array’);

 Paramètres en entrée

‘uid ‘ Une valeur sur 64Bits sous la forme d’une chaîne de caractères qui est

le référentiel d’un objet de la Directory « le père » .

Paramètres en sortie

‘uid ‘ Une valeur sur 64Bits sous la forme d’une chaîne de caractères qui est

le référentiel de l’objet suivant de l’arbre de la Directory.

level La position dans l’arbre de l’objet suivant

 Si = 0 suivant

 Si = 1 entre dans une branche

 Si = -1 sort d’une branche

 Si = -x sort de x branches

nil Si une erreur est rencontrée

Exemple

Nous « browsons » l’ensemble des objets de la Directory à partir du premier objet

dans l’arbre. (Voir aussi la fonction lp.GetChildUID(‘uid’,’array’).

uid=lp.GetFirstDirectoryUID();

if uid then

 while (uid ~= nil) do

lp.Print(uid);

 a=lp.GetUIDInformation(uid,"b");

 if (a) then

 lp.Print(" ",b.name," ",b.plugin_name,"\n");

 end

uid=lp.GetNextDirectoryUID(uid);

 end

end

...

Un exemple plus complet avec une gestion des niveaux dans l’arbre.

dofile(lp.GetPath().."/config/script/loriotinit.lua");

-- init the tree position

level=0;

pos=0;

uid=lp.GetFirstDirectoryUID();

if uid then

 while (uid ~= nil) do

 a=lp.GetUIDInformation(uid,"b");

 if (a) then

-- compute the tree position

pos=pos+level;

marge="";

for i=0,pos do

marge=marge.."\t";

end

-- compute the tree position

 if b.object_type==LP_LUA_DT_COUNTRY then

elseif b.object_type==LP_LUA_DT_ORGANIZATION then

 lp.Print(marge,"LP_LUA_DT_ORGANIZATION ","\n");

 elseif b.object_type==LP_LUA_DT_ORGANIZATION_UNIT then

 lp.Print(marge,"LP_LUA_DT_ORGANIZATION_UNIT ","\n");

 elseif b.object_type==LP_LUA_DT_NETWORK then

 lp.Print(marge,"LP_LUA_DT_NETWORK ","\n");

 elseif b.object_type==LP_LUA_DT_FACTORY then

 lp.Print(marge,"LP_LUA_DT_FACTORY ","\n");

 elseif b.object_type==LP_LUA_DT_HOST then

 lp.Print(marge,"LP_LUA_DT_HOST ","\n");

 elseif b.object_type==LP_LUA_DT_HOST_FUNCTION then

 lp.Print(marge,"LP_LUA_DT_HOST_FUNCTION ","\n");

 elseif b.object_type==LP_LUA_DT_HOST_ALIAS then

 lp.Print(marge,"LP_LUA_DT_HOST_ALIAS ","\n");

 elseif b.object_type==LP_LUA_DT_HOST_EXECLINK then

 lp.Print(marge,"LP_LUA_DT_HOST_EXECLINK ","\n");

 elseif b.object_type==LP_LUA_DT_HOST_MRTG then

 lp.Print(marge,"LP_LUA_DT_HOST_MRTG ","\n");

 elseif b.object_type==LP_LUA_DT_HOST_PLUGIN then

 lp.Print(marge,"LP_LUA_DT_HOST_PLUGIN ","\n");

elseif b.object_type==LP_LUA_DT_HOST_ADVPOLLING then

 lp.Print(marge,"LP_LUA_DT_HOST_ADVPOLLING ","\n");

 end

 lp.Print(marge,level," ",uid);

 lp.Print(" ",b.name," ",b.plugin_name,"\n");

 end

uid,level=lp.GetNextDirectoryUID(uid);

 end

end

2.1.66 lp.GetNextIP

‘ip’ = lp.GetNextIP(‘ip_old’);

Explication

Cette fonction permet de récupérer sous la forme d’une chaîne de caractères l’adresse IP suivante de l’équipement suivant dans la chaîne des équipements de la

Directory. Cette fonction permet, associée à d’autres, de « browser » l’ensemble des équipements contenus dans la Directory.

 Paramètres en entrée

‘ip_old’ Une adresse ‘ip’ sous la forme d’une chaîne de caractères, ‘x.x.x.x’.

 Paramètres en sortie

‘ip’ L’adresse ‘ip’ du host suivant dans la Directory sous la forme d’une chaîne de caractères ou nil

nil Si une erreur est rencontrée

 Exemple

Voir la commande “ip”=lp.GetFirstIP().

lp_value=0;

lp_buffer="ok";

a=lp.GetFirstIP();

if a~= nil then

 while a~= nil do

 lp.Trace(a,"\n");

 a=lp.GetNextIP(a);

 end

end



598