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
Member
Registered: 2017-03-27
Posts: 6

[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
Member
Registered: 2012-12-03
Posts: 55

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
Member
Registered: 2017-03-27
Posts: 6

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

#4 2020-02-27 11:25:08

ben79510
Member
Registered: 2012-12-03
Posts: 55

Re: [SCCM] Import moniteurs

Bonjour,

J'ai aussi le même besoin.
Pourquoi le plugin sccm pour GLPI n'intègre pas cette fonctionnalité alors que fusion et ocs le fait ?

Est-il prévu dans les prochaines versions d'inclure cette fonctionnalité car cela me gène de faire des modifications de code à chaque montée de version GLPI.

Offline

#5 2020-09-16 10:05:09

pierre76lb
Member
Registered: 2017-03-27
Posts: 6

Re: [SCCM] Import moniteurs

ben79510 wrote:

Bonjour,

J'ai aussi le même besoin.
Pourquoi le plugin sccm pour GLPI n'intègre pas cette fonctionnalité alors que fusion et ocs le fait ?

Est-il prévu dans les prochaines versions d'inclure cette fonctionnalité car cela me gène de faire des modifications de code à chaque montée de version GLPI.

Le plugin SCCM va chercher les informations dans la base SQL du SCCM. SCCM ne remonte pas nativement les moniteurs donc le plugin ne l'intègre pas.

Offline

Board footer

Powered by FluxBB