Agent d’inventaire OCS-NG et clients légers

Depuis quelques années nous utilisons des clients légers HP pour lesquels nous avons développé une image sous linux (t5tux). Cette drôle d’idée présente de nombreux avantages:

  • On ne dépend de personne pour les mises à jour des client ( RDP, Citrix et autres… ).
  • Cette image a été faite quand HP ne proposait pas linux sur ses clients légers.
  • La même image fonctionne sur plusieurs générations de clients.
  • La config est téléchargée en TFTP.
  • L’image se met à jour toute seule avec PXE.
  • On apprend plein de choses…

Bref… l’histoire continue avec un nouveau problème: inventorier ces postes avec OCS-NG.

OCS dispose d’un agent d’inventaire pour linux mais celui-ci est assez lourd. De plus, il dispose d’un grand nombre de fonctionnalités inutiles dans notre cas. Nous souhaitons un minimum d’infos: numéro de série, model, ip, mac…

La communication entre l’agent et le serveur se fait avec un fichier XML compressé ou non avec ZLIB et transmis dans une reqûete de type POST. Pourquoi ne pas générer un XML minimaliste et l’envoyer nous même ?

Un simple script bash, épaulé de quelques utilitaires: dmidecode, busybox, wget fera l’affaire.


#! /bin/sh

model=`/usr/local/sbin/dmidecode -s system-product-name`
type=`/usr/local/sbin/dmidecode -s baseboard-product-name`
bytes=`free -k | grep Mem | awk '{ print $2 }'`
memory=$(($bytes/1024))
bytes=`fdisk -l | grep Disk | grep da | cut -f2 -d, | awk '{ print $1 }'`
disk=$(($bytes/1024/1024))
serial=`/usr/local/sbin/dmidecode -s system-serial-number`
hwaddr=`ifconfig eth0 | grep HWaddr | sed "s/.*HWaddr \(.*\)//"`
ip=`ifconfig eth0 | grep "inet addr" | sed "s/.*addr:\(.*\) B.*//"`
tag=`hostname | cut -f1 -d-`
hostname=`hostname`

echo "Model: $model"
echo "Ram: $memory"
echo "Disk: $disk"
echo "Serial: $serial"
echo "Mac: $hwaddr"
echo "ip: $ip"
echo "tag: $tag"
echo "hostname: $hostname"

cat << EOF > /tmp/inventory.xml


  
    
      TAG
      $tag
    
    
      $serial
      Hewlett-Packard
      Hewlett-Packard
      $serial
      Hewlett-Packard
      $model - $type
      $serial
    
    
      131071
      $memory
      $hostname
      T5TUX
      t5tux
      Physical
    
    
      eth0
      $ip
      $hwaddr
      Ethernet
    
    
      FLASH
      $disk
      disk
    
  
  $hostname-9999-01-01-01-01-01
  INVENTORY


EOF

wget --post-file=/tmp/inventory.xml http://ocs-ng.xxxx.fr/ocsinventory

Quelques astuces:

  • wget avec un « –post-file monfichier » ou curl avec un « –binary-data @monfichier » permettent de poster des données.
  • le CHECKSUM à 131071 indique que toutes les données sont modifiées. J’ai trouvé cette info sur un forum mais pas dans la doc officielle.
  • Le client léger est en lecture seule du coup le DEVICEID ne peut être stocké. La date servant à sa génération est falsifiée: « 9999-01-01-01-01-01 »

Très simple et pas forcément très élégant mais ça marche très bien !

Fonera et station météo Lacrosse Technology WS2305 (Etape 1 la station WS2305)

Nous allons voir comment transformer une statio météo Lacrosse Technology WS2305 en station Méteo Wifi avec connexion sur un serveur. Pour cela nous allons utiliser la fameuse fonera légèrement modifiée.

Fonera.png p30_lcf_72dpi_ws2305bla_alu.jpg

Continuer la lecture de « Fonera et station météo Lacrosse Technology WS2305 (Etape 1 la station WS2305) »

Jouer avec les entrées sorties GPIO sur la Fonera.

Intéressé par l’accès aux GPIO, et avec l’aide du fameux blog de Denis Bodor, voilà quelques infos pour ajouter le module du noyau à votre Fonera. Celle-ci doit avoir été flashée avec le firmware OpenWrt Kamikaze 7.09.

Fonera.png

Récupérer et compiler OpenWrt (Je suis sous ubuntu avec les paquets de développement nécessaires)

Le téléchargement du kit de développement OpenWrt se fait au travers d’un accès Subversion.

 svn co https://svn.openwrt.org/openwrt/tags/kamikaze_7.09

Pour pouvoir utiliser les accès aux GPIO, vous devez ajouter à votre Fonera un module du noyau. Voilà une archive toute prête pour être intégrée dans le SDK d’OpenWrt. Je ne suis pas à l’origine de ces sources, juste du makefile 😉

Récupérez ce paquet: proc_gpio.tgz puis décompressez le dans le répertoire kamikaze_7.09/package. Vous pouvez ensuite lancer un make menuconfig dans le répertoire kamikaze_7.09. Dans le menu « kernel modules » / « Other modules » vous trouverez le fameux proc_gpio. Pensez a régler le système comme étant un Atheros 2.6, sinon vous n’aurez pas ce choix dans le menu.

Capture-pierre_EquinoxeFR___-Download-OpenWrt-kamikaze_7.09.png

Ensuite passez par un classique make

Vous aurez alors un fichier ./bin/packages/kmod-kmod-gpio_1_mips.ipk à télécharger et à installer sur votre fonera. Une version déjà compilée est disponible ici