You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2019-11-07 11:08:50

pierre76lb
Guest
Registered: 2017-03-27
Posts: 5

[SCCM] Import moniteurs

Bonjour,

J'utilise le plugin SCCM pour l'import des ordinateurs de mon parc informatique. Il n'intègre pas la possibilité d'importer les moniteurs et leurs détails.
C'est la que j'ai ajouté une classe à SCCM pour permettre de remonter les détails des moniteurs par utilisateurs. Il y'a donc une table SQL avec les informations des moniteurs.
Je ne souhaite pas passer par un agent FusionInventory car SCCM fait très bien le boulot.
Pour moi il y'a les solutions suivantes :
- Soit modifier le fichier sccmxml.class.php et sccm.class.php du plugin dans sccm/inc/ pour rajouter les fonctions getMonitors et setMonitors mais je ne pense pas bien comprendre le fonctionnement (code ci-dessous)
- Soit faire un import automatique de la table (via l'injection de fichier csv), mais il faut au préalable créer les modèles et cela n'automatise pas vraiment les choses
-Soit peut-être modifier le fichier xml que génère le plugin SCCM pour inclure ma fonction ?

Avez-vous des idées ?

Merci par avance.


Code fonction get de sccm.class.php :

function getMonitors($deviceid, $limit = 99999999) {
      $PluginSccmSccmdb = new PluginSccmSccmdb();
      $res = $PluginSccmSccmdb->connect();
      if (!$res) {
         die;
      }
      $query = "SELECT
            SerialNumber0 as \"Mon-Serial\",
			DiagonalSize0 as \"Mon-Diagon\",
			Manufacturer0 as \"Mon-Manufa\,
			Name0 as \"Mon-Name\,
            GroupID as \"Mon-Group\",
         FROM v_GS_MONITORDETAILS
         WHERE ResourceID = '".$deviceid."'
         ORDER BY GroupID";
      $result = $PluginSccmSccmdb->exec_query($query);
      $data = [];
      $i=0;
      $tab = [];
      while (($tab = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) AND $i < $limit) {
         $tmp = [];

         foreach ($tab as $key => $value) {
            $tmp[$key] = $this->cleanValue($value);
         }
         $data[] = $tmp;
         $i++;
      }
      $PluginSccmSccmdb->disconnect();

      return $data;
   }

Code fonction set de sccmxml.class.php :

    function setMonitors() {
        $PluginSccmSccm = new PluginSccmSccm();
        $CONTENT = $this->sxml->CONTENT[0]; $i = 0;
      foreach ($PluginSccmSccm->getMonitors($this->device_id) as $value) { 
         $CONTENT->addChild('MONITORS');
         $MONITORS = $this->sxml->CONTENT[0]->MONITORS[$i];
         $MONITORS->addChild('SERIAL', $value['Mon-Serial']);
         $MONITORS->addChild('DESCRIPTION', $value['Mon-Diagon']);
         $MONITORS->addChild('MANUFACTURER', $value['Mon-Manufa']);
         $MONITORS->addChild('CAPTION', $value['Mon-Name']);
         $MONITORS->addChild('PORT', $value['Mon-Group']);	 
         $i++;
      }
   }  

Offline

#2 2019-11-12 17:07:54

ben79510
Guest
Registered: 2012-12-03
Posts: 49

Re: [SCCM] Import moniteurs

Bonjour, j'ai le même problème.
Avez vous pu avancer sur le sujet ?

Offline

#3 2019-11-14 15:44:00

pierre76lb
Guest
Registered: 2017-03-27
Posts: 5

Re: [SCCM] Import moniteurs

Bonjour,

Solution trouvée

j'ai pris la première solution, j'ai créé ma fonction getMonitors dans le sccm.class.php :

   function getMonitors($deviceid, $limit = 99999999) {
      $PluginSccmSccmdb = new PluginSccmSccmdb();
      $res = $PluginSccmSccmdb->connect();
      if (!$res) {
		die;
      }
      $query = "SELECT
	SerialNumber0 as \"Mon-Serial\",
	Name0 as \"Mon-Name\",
	DiagonalSize0 as \"Mon-Diagon\",
	Manufacturer0 as \"Mon-Manufa\"
         FROM v_GS_MONITORDETAILS
         WHERE ResourceID = '".$deviceid."'";
      $result = $PluginSccmSccmdb->exec_query($query);
      $data = [];
      $i=0;
      $tab = [];
      while (($tab = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) AND $i < $limit) {
         $tmp = [];
         foreach ($tab as $key => $value) {
            $tmp[$key] = $this->cleanValue($value);
         }
         $data[] = $tmp;
         $i++;
      }
      $PluginSccmSccmdb->disconnect();
      return $data;
   }

j'ai aussi inclut un  $PluginSccmSccmxml->setMonitors(); un peu plus bas avec les autres appels de fonction set

pour sccmxml.class.php, j'ai créé ma fonction setMonitors :

    function setMonitors() {
        $PluginSccmSccm = new PluginSccmSccm();
        $CONTENT = $this->sxml->CONTENT[0]; $i = 0;
      foreach ($PluginSccmSccm->getMonitors($this->device_id) as $value) {
         $CONTENT->addChild('MONITORS');
         $MONITORS = $this->sxml->CONTENT[0]->MONITORS[$i];
         $MONITORS->addChild('SERIAL', $value['Mon-Serial']);
         $MONITORS->addChild('CAPTION', $value['Mon-Name']);
         $MONITORS->addChild('MANUFACTURER', $value['Mon-Manufa']);
         $MONITORS->addChild('DESCRIPTION', $value['Mon-Diagon']);
         $i++;
      }
   }

De plus dans SCCM j'ai rajouté la classe MonitorDetail tuto ici : http://exar.ch/collecting-monitor-seria … with-sccm/

Pour expliquer le code, on va chercher les informations dans la base SQL de SCCM, la c'est la base v_GS_MONITORDETAILS qui nous intéresse. Donc j'ai pris les champs suivants :  SerialNumber0,Name0, DiagonalSize0 et Manufacturer0.

Le script va créer un fichier XML pour chaque poste et va l'ajouter via FusionInventory.
J'ai compris lorsque j'ai vu un fichier XML d'un agent sur un poste.

Offline

Board footer

Powered by FluxBB