PRTG et VRO

Récupération ID

Récupération de l'ID à cloner pour la nouvelle VM. Le script à juste besoin du nom du client en entrée pour créer le groupe avec le nom qui va bien.

// Appel à l'API PRTG pour récupérer la liste des machines dans le groupe template. l'API nous ressort un résultat sous forme de json comprenant le nom du template ainsi que son ID.
var url ="https://serveurprtg.loc/api/table.xml?content=devices&columns=name,objid&output=json&id=36406&username=prtgadmin&passhash=prtgadmin"
var urlObject = new URL(url);
result = urlObject.getContent() ;
// Parsing du résultat de la requête HTTP pour avoir seulement ce qui nous intéresse.
var obj = JSON.parse(result);
var templates=[];
// Insertion du nom ainsi que de l'ID de chaque élément du tableau (donc de chaque template).
for (i=0;i<obj['devices'].length;i++){
	templates.push(obj['devices'][i].name,obj['devices'][i].objid)
}
// On récupère dans le tableau l'ID(index du nom +1) du template qui correspond à celui séléctioné (PRTGsonde), et on le met dans la variable IdSonde.
var templatename = templates.indexOf(PRTGsonde); 
IdSonde = templates[templatename+1];
System.log("PRTG idsonde : "+IdSonde);

Positionnement de la VM dans le bon sous-groupe PRTG

// Appel à l'API PRTG pour récupérer la liste de tous les groupes. l'API nous ressort un résultat sous forme de json comprenant le nom du groupe ainsi que son ID.
var url ="https://serveurprtg.loc/api/table.xml?content=groups&output=json&columns=name,objid&username=prtgadmin&passhash=prtgadmin"
var urlObject = new URL(url);
result = urlObject.getContent() ;
// Parsing du résultat de la requête HTTP pour avoir seulement ce qui nous intéresse.
var obj = JSON.parse(result);
var groupes=[];
// Insertion du nom ainsi que de l'ID de chaque élément du tableau (donc de chaque groupe).
for (i=0;i<obj['groups'].length;i++){
	groupes.push(obj['groups'][i].name,obj['groups'][i].objid)
}
// On récupère parmi la liste des groupes dans le tableau l'ID(index du nom +1) du groupe qui correspond au client spécifié (Client.name).
var groupesname = groupes.indexOf(Client.name);
idgroupe = groupes[groupesname+1]
System.log("PRTG idgroupeclient :"+idgroupe);
 
// Appel à l'API PRTG pour récupérer la liste de tous les sous-groupes du groupe dont l'id est spécifié (idgroupe).
// L'API nous ressort un résultat sous forme de json comprenant le nom du groupe ainsi que son ID.
var url ="https://serveurprtg.loc/api/table.xml?content=groups&output=json&id="+idgroupe+"&columns=name,objid&username=prtgadmin&passhash=prtgadmin"
var urlObject = new URL(url);
result = urlObject.getContent() ;
// Parsing du résultat de la requête HTTP pour avoir seulement ce qui nous intéresse.
var obj = JSON.parse(result);
var groupes=[];
// Insertion du nom ainsi que de l'ID de chaque élément du tableau (donc de chaque sous-groupe).
for (i=0;i<obj['groups'].length;i++){
	groupes.push(obj['groups'][i].name,obj['groups'][i].objid)
}
 
// On récupère parmi la liste des groupes dans le tableau l'ID(index du nom +1) des sous-groupes du groupe spécifié auparavant.
var groupesname = groupes.indexOf(PRTGgroupe);
idsousgroupe = groupes[groupesname+1]
System.log("PRTG idsousgroupe :"+idsousgroupe);

Clone le template et crée la machine

// Appel à l'API PRTG pour cloner la machine dont l'id est "IdSonde" dans le groupe approprié "idsousgroupe". Le résultat nous est envoyé sous la forme d'un fichier html à parser.
var url ="https://serveurprtg.loc/api/duplicateobject.htm?id="+IdSonde+"&targetid="+idsousgroupe+"&username=prtgadmin&passhash=prtgadmin"
var urlObject = new URL(url);
result = urlObject.getContent() ;
// Parsing du résultat de la requête HTTP pour avoir seulement ce qui nous intéresse .
// On récupère la ligne contenant l'id du nouvel équipement créé (?id=xxxxxx) et on met la variable sous forme de string.
id_non_formate = result.match(/\?id=[0-9]+/g);
var id_to_string = String(id_non_formate);
// Dans la ligne ?id=xxxxxx, on va récupèrer seulement l'élément qui nous intéresse (xxxxxx) et le mettre dans la variable id.
var id = id_to_string.match(/[0-9]+/g);
System.log("PRTG idvmclonée :"+id);
 
// On refait appel à l'API PRTG pour modifier les propriétés de l'équipement afin de lui mettre l'adresse IP qui correspond ainsi que son nom.
var url2 ="https://serveurprtg.loc/api/setobjectproperty.htm?id="+id+"&name=host&value="+ip+"&username=prtgadmin&passhash=prtgadmin"
var urlObject = new URL(url2);
result2 = urlObject.getContent() ;
var url1 ="https://serveurprtg.loc/api/setobjectproperty.htm?id="+id+"&name=name&value="+vm.name+"&username=prtgadmin&passhash=prtgadmin"
var urlObject = new URL(url1);
result1 = urlObject.getContent() ;
// Par défaut, tout équipement cloné est mis en pause par PRTG, on va donc le mettre en route.
var url3 ="https://serveurprtg.loc/api/pause.htm?id="+id+"&action=1&username=prtgadmin&passhash=prtgadmin"
var urlObject = new URL(url3);
result3 = urlObject.getContent() ;

Récupération des groupes pour un client

A l'éxécution, ce script récupère les les groupes pour un client donné, le résultat est renvoyé au 1er script.

var url ="https://serveurprtg.loc/api/table.xml?content=groups&output=json&columns=name,objid&username=prtgadmin&passhash=prtgadmin"
var urlObject = new URL(url);
result = urlObject.getContent() ;
var obj = JSON.parse(result);
var groupes=[];
for (i=0;i<obj['groups'].length;i++){
	groupes.push(obj['groups'][i].name,obj['groups'][i].objid)
}
var is_in_array = groupes.indexOf(nom_client);
if (is_in_array < 0 )
{
	return null;
} else {
 
var groupesname = groupes.indexOf(nom_client);
idgroupe = groupes[groupesname+1]
System.log(idgroupe);
 
var url2 ="https://serveurprtg.loc/api/table.xml?content=groups&output=json&id="+idgroupe+"&columns=name,objid&username=prtgadmin&passhash=prtgadmin"
var urlObject2 = new URL(url2);
result2 = urlObject2.getContent() ;
var obj2 = JSON.parse(result2);
var groupes2=[];
for (i=0;i<obj2['groups'].length;i++){
	groupes2.push(obj2['groups'][i].name)
}
 
return groupes2;
}

Création du client

Si le client n'existe pas encore dans PRTG, il est également possible de l'ajouter avec l'orchestrateur

var url ="https://serveurprtg.loc/api/duplicateobject.htm?id=36994&targetid=3876&username=prtgadmin&passhash=prtgadmin"
var urlObject = new URL(url);
result = urlObject.getContent() ;
id_non_formate = result.match(/\?id=[0-9]+/g);
var id_to_string = String(id_non_formate);
var id = id_to_string.match(/[0-9]+/g);
var url2 ="https://serveurprtg.loc/api/setobjectproperty.htm?id="+id+"&name=name&value="+client+"&username=prtgadmin&passhash=prtgadmin"
var urlObject = new URL(url2);
result2 = urlObject.getContent() ;
var url3 ="https://serveurprtg.loc/api/pause.htm?id="+id+"&action=1&username=prtgadmin&passhash=prtgadmin"
var urlObject = new URL(url3);
result3 = urlObject.getContent() ;
System.log("Client " + client + " créé dans PRTG avec les sous groupes associés")
wiki/prtg.et.vro.txt · Dernière modification: 2018/04/23 19:13 (modification externe)
CC0 1.0 Universal
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5