Xavier Dusart

Administration système

  • Augmenter la taille
  • Taille par défaut
  • Diminuer la taille
Accueil LanIP LanIP v1.2

LanIP v1.2

Envoyer Imprimer
Note des utilisateurs: / 2
MauvaisTrès bien 
LanIP permet de stocker dans une base de données MySQL les adresses IP fixes attribuées aux machines de ton réseau. Ce n'est pas :
  • un gestionnaire de parc : les attributs associés à chaque adresse sont limités
  • un gestionnaire de réseau : aucun moyen de découverte automatique du réseau n'est fourni

Mais c'est :

  • Un moyen manuel de lister les adresses IP déjà affectées
  • Quelques outils basiques associés : ping, nslookup, wake-on-lan

Capture d'écran

Note : Les noms ont été cachés pour protéger les innocents.

Gimme gimme gimme

Prérequis serveur

  • Un OS Windows serveur
  • Un serveur ouèbe, gratuit évidemment, et si possible libre (comment tu dis ? Apache ? Ouais pas mal).
  • Un interpréteur Perl vissé dans le serveur ouèbe (Active Perl, pas con).
  • Un serveur de base de données MySQL. La réponse est : non, le support de SQL server, MSDE ou Access n'est pas prévu.

Compatibilité

Windows 2003 et Windows 2000.

Donne-moi ça tout de suite

LanIP est distribué sous licence Gnu General Public License, version 2.

IPAddress12.zip (124 Ko environ) contient tous les fichiers nécessaires à l'application.

Il n'y a pas de programme d'installation, merci de lire attentivement les instructions d'installation ou de mise à jour.

Mise à jour

De la version 1.x vers 1.2

  • Supprimer le contenu du répertoire d'installation ; mettre de côté le fichier de paramétres config.inc.
  • Extraire le contenu de l'archive dans le répertoire d'installation.
  • Restaurer le fichier de paramétres config.inc.
  • Exécuter le script SQL de mise à jour de la base de données, à la racine de l'installation :
    mysql -u root -p
    <mot de passe mySQL>
    mySQL> source update_11_12.sql;
    mySQL> exit;

Installation

Pour plus de facilité, nous appellerons ton serveur ouèbe SERVEUR_CENTRAL plutôt que Catherine, parce que Catherine ça fait pas sérieux.

Installations prérequises

Or donc, sur SERVEUR_CENTRAL, il faut avant toute chose :

  • Récupérer les programmes prérequis
  • Installer Apache (ou IIS, mais tant pis pour toi)
  • Installer MySQL (package "essential", installation "typical") et le configurer à suivre (notamment mot de passe root)
  • Installer Active Perl (installation complète)
  • Ajouter avec PPM le package Perl DBD::mysql
    [set http_proxy=http//votre.proxy.interne:8080]
    ppm install DBD::mysql
    En cas de problème, voir ces commentaires.
    Les autres packages Perl nécessaires sont :
    • DBI
    • CGI
    • Net::Ping
    • Socket
    • Time::HiRes
    • Locale::Maketext
    • XML::Simple
    Ils sont compris dans l'installation standard de Active Perl.

Installation de LanIP

Décompacte le zip amoureusement concocté par mes soins sur SERVEUR_CENTRAL, dans C:\Program Files\. Cela va créer le répertoire "IPAddress1" (et pas "LanIP" ou "LanIP1", c'est juste pour t'embrouiller).

Change si nécessaire à la première ligne de chaque script *.pl le chemin de l'interpréteur Perl. Si tu as fait une installation standard de Active Perl, tu peux laisser #!c:\perl\bin\perl.

Assure-toi ensuite qu'Apache veuille bien exécuter des scripts Perl se trouvant dans le répertoire de LanIP. Pour ça, ajoute dans le fichier de configuration d'Apache httpd.conf les lignes suivantes :

 

Alias /lanip/ "C:/Program Files/IPAddress1/html/" 
<Directory "C:/Program Files/IPAddress1/html/">
AddHandler cgi-script .pl
Options Indexes FollowSymLinks -MultiViews +ExecCGI
AllowOverride all
Order allow,deny
Allow from all
</Directory>

Il faut relancer Apache après ces modifications.

Configuration

Ouvre ton navigateur à l'URL http://localhost/lanip/. Le cadre de gauche est vide, le cadre de droite te propose de saisir une adresse. Clique sur le lien vers la page d'administration, en haut du cadre de gauche.

Renseigne les différents paramétres dans la première rubrique. Les valeurs par défaut devraient faire l'affaire, à l'exception du mot de passe MySQL qu'il serait bon de changer, et du masque de sous-réseau en usage chez toi. Enregistre.

Note : l'utilisateur sous lequel tourne le serveur Apache doit avoir les droits en écriture sur le répertoire C:\Program Files\IPAddress1\html, où s'enregistre la configuration.

Crée la base de données : renseigne dans la deuxième rubrique le mot de passe de root pour MySQL et clique sur "Créer". Une fois la création terminée, retourne à l'accueil.

Cette fois, le cadre de gauche devrait te montrer une arborescence vide. Ze djobe ize done.

Utilisation

Clique sur l'icône à la racine de l'arbre (c.-à-d. "Réseaux") pour revenir à l'accueil à tout moment. Au fur et à mesure que tu ajouteras des adresses, tu verras se remplir l'arbre à gauche, avec un noeud pour chacun des trois premiers octets de l'adresse IP. Clique sur un octet pour voir toutes les machines partageant ce début d'adresse IP.

Ajout

Tu dois au moins renseigner les champs en gras, à savoir : adresse IP (c'est la clef de la base de données), masque de sous-réseau (indispensable pour le Wake-On-Lan), et nom de la machine.

Recherche

Tu peux rechercher sur une partie du nom, de l'utilisateur ou de la description, grâce au méta-caractère SQL "%", qui équivaut à l'habituelle "*". Par exemple, %INF% dans le champ Nom renverra toutes les machines comportant "INF" dans leur nom.

Tu peux aussi rechercher sur n'importe quel octet de l'adresse IP ; il te suffit de laisser à blanc les autres octets. Par exemple : rien - rien - 9 - rien renverra toutes les adresses IP dont le troisième octet vaut 9, quel que soit le réseau.

Pour lancer la recherche, clique sur le bouton correspondant au champ que tu as renseigné. La touche "Entrée" est désactivée (pénible, hein ?).

Modification

Pour changer l'adresse IP d'une machine existante, il faut procéder en deux étapes :

  1. Suppression de l'adresse existante
  2. Ajout avec la nouvelle adresse

Pour les autres champs, recherche la machine et clique sur l'icône . Modifie les champs nécessaires et clique sur "Ajouter". Il te sera alors demandé de confirmer la mise à jour.

Suppression

Recherche la machine et clique sur . Il te sera alors demandé de confirmer la suppression.

Outils

Pour que les outils fonctionnent sur un réseau segmenté, il faut bien évidemment que le serveur hébergeant LanIP aie connaissance de tous les réseaux de ton LAN, que ce soit par des routes explicites ou une passerelle par défaut qui les connaisse.

Tu peux vérifier la présence d'une adresse IP sur le réseau grâce au bouton .

Tu peux rechercher l'adresse IP affectée à une machine grâce au bouton , qui effectue une requête DNS. Ce sont les serveurs DNS dont est client le serveur hébergeant LanIP qui seront interrogés.

Les incohérences entre la base de données et le résultat de la commande sont surlignées.

Tu peux réveiller à distance une machine éteinte, grâce au bouton . Cette magie est rendue possible par les cartes réseau supportant cette fonctionnalité, dite "Wake-On-Lan", et l'activation d'icelle dans le BIOS de la machine.

Import / Export

Les options d'import et d'export de données sont accessibles par la page d'administration.

L'export est possible sous forme d'un fichier CSV, dit "natif", qui comprend les champs suivants :

@IP;Nom;@Mac;Utilisateur;Description
Le fichier commence par une ligne de titre, puis une ligne par enregistrement.

L'import est possible dans différents formats :

  • CSV Natif : c'est le format utilisé pour l'export.
  • CSV Pytheas : c'est le format exporté par le logiciel de gestion de parc Pytheas Asset Management©™®. Il comprend une ligne de titre, puis une ligne par enregistrement, au format :
    Désignation;Etat;Adresse IP;Domaine;DHCP;Passerelle;Sous-réseau;Serv DNS 1;Serv DNS 2;Nom d'ordinateur;Adr Wins 1;Adr Wins 2;Type réseau;Libre;Site;Bâtiment;Etage;Salle;Société;Département;Service;Utilisateur
    Seuls sont repris les champs "Adresse IP", "Nom", "Département - Service" dans le champ "description" de LanIP, et "Utilisateur".
  • CSV Adresses Mac : une ligne de titre, puis une ligne par enregistrement, au format :
    Nom;@IP;@Mac
La ligne de titre est systématiquement vérifiée ; c'est la signature du fichier permettant de s'assurer qu'il est au bon format. Tu peux choisir lors de l'import d'écraser ou non les adresses déjà existantes dans la base.

Protection des pages

Tu peux restreindre l'accès à la page d'administration, par exemple, ou à n'importe quelle page que tu juges sensible, en utilisant la fonctionnalité d'Apache ".htaccess". Pour cela, crée un fichier .htaccess dans le sous-répertoire 'html" de l'installation de LanIP. Comme l'explorateur de Windows ne permet pas de créer des fichiers avec seulement une extension, tu devras le faire en ligne de commande :

c:
cd "\program files\IPAddress1"
echo.>.htaccess

Edite ensuite ce fichier, pour qu'il contienne :

<FilesMatch admin.pl>
AuthName "LanIP"
AuthType Basic
AuthUserFile "c:/program files/IPAddress1/.htpasswd"
require valid-user
</FilesMatch>

Il ne reste plus qu'à créer le fichier contenant le login/mot de passe autorisé à accéder aux pages protégées :

cd ..
c:\program files\Apache Software Foundation\Apache2.2\bin\htpasswd -c .htpasswd <login>
<mot de passe>

Tu peux aussi utiliser l'authentification Windows, si tu es sur un serveur Windows, grâce au module Apache mod_auth_sspi. En ce qui me concerne, je l'ai activé de la manière suivante :

Après avoir téléchargé le module SSPI, copie mod_auth_sspi.so dans le répertoire modules d'Apache.

Dans le fichier httpd.conf d'Apache, ajoute la directive :

<IfModule !mod_auth_sspi.c>
LoadModule sspi_auth_module modules/mod_auth_sspi.so
</IfModule>

Et enfin, crée un fichier .htaccess dans le répertoire html de l'installation de LanIP, contenant :

<IfModule mod_auth_sspi.c>
<FilesMatch admin.pl>
AuthName "Login Windows"
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIOfferBasic On
SSPIBasicPreferred On
SSPIDomain TON_DOMAINE_WINDOWS
SSPIOmitDomain On
require user TON_DOMAINE_WINDOWS\TOI_MEME
</FilesMatch>
<FilesMatch .*>
AuthName "Login Windows"
AuthType SSPI
SSPIAuth On
SSPIOfferBasic On
SSPIBasicPreferred On
SSPIDomain DCOMPTES
SSPIOmitDomain On
require group TON_DOMAINE_WINDOWS\TON_GROUPE
</FilesMatch>
</IfModule>

Si les utilisateurs sont authentifiés auprès du serveur Web, leur login sera enregistré lors de toute modification de la base de données. Comme ça tu les fliques bien, les mecs. Fini de faire les zouaves. Le paramétre est récupéré via la variable d'environnement REMOTE_USER.

Ecriture de plugins

Un plugin est composé d'au moins 2 fichiers, stockés dans le répertoire "plugins" :

  • <plugin>.xml
  • <plugin>.<html|pl|cgi|php|...>
Le premier décrit en XML le plugin, au format suivant :
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="/joomla/plugins.xsl"?>
<ipaddress>
<plugin>
<name>Nom du plugin</name>
<version>1.0</version>
<date>01/01/2008</date>
<author>Auteur</author>
<notes>Description de la fonction offerte par le plugin.</notes>
<url>URL du plugin, par exemple plugin.html</url>
</plugin>
</ipaddress>

Le second fichier est le code du plugin proprement dit, écrit dans n'importe quel langage compris par ton serveur ouèbe. Ceci dit, ça sera plus facile de l'écrire en Perl.

IPAddress parcourt le répertoire "plugins" à la recherche de tous les fichiers XML, et les liste sur sa page d'accueil.

Prenons par exemple le plugin fourni en standard, à savoir "Last Change". L'URL du plugin est une page HTML de saisie de paramétres (lastchange.html). Cette page appelle un script Perl pour réaliser la recherche (lastchange.pl), en lui passant les paramétres saisis.

L'écriture du script est facilitée par la fonction Perl IPAddress::displayResult($query, $page, $action, %params). Celle-ci affiche — avec pagination — les résultats correspondants aux paramétres qui lui sont passés, à savoir:

  • $query : la requête SQL à exécuter sur la base de données
  • $page : le numéro de la page à afficher
  • $action : le script à appeler lors du changement de page
  • %params : le hash contenant la liste des paramétres HTTP à passer lors de l'appel du script, sous forme de champs "hidden"

Query

Pour créer la requête SQL qui va bien, voir le shéma de la base de données.

Page

Le principe est que le script de recherche des résultats (lastchange.pl, par exemple) est réentrant. C'est-à-dire qu'il s'appelle lui-même à chaque changement de page, avec un paramétre qui change... hé oui, tu l'as deviné, c'est le numéro de page. Ce paramétre est passé en POST, sous forme de champ "hidden". S'il n'est pas passé, c'est qu'on est à la première invocation du script, il faut l'initialiser à zéro.

Action

De même que le numéro de page, l'action (l'URL) à invoquer au changement de page est passée au script sous forme de champ "hidden". C'est le script du plugin lui-même, qu'on récupère via l'objet CGI par my $action = $cgi_query->url(-relative=>1);.

Params

Le hash %params contient les variables passées initialement au script par la page HTML, avec leur valeur. Elles sont réinjectées dans le script "Action", sous forme de champs "hidden".

Reste à faire

  • Blinder les requêtes SQL. Le "SQL injection" est très facile via les champs de recherche.
  • Automatiser la découverte des machines.
  • Des plugins.
  • Modifier la feuille de style ipaddress.css pour un résultat éclatant de beauté.
  • Traduire dans toutes les langues l'interface de LanIP, grâce aux fichiers d'internationalisation. S'inspirer de IPAddress1/I18N/en.pm.

Merci de me soumettre le résultat de vos efforts, afin que la communauté des utilisateurs en profite.

Remerciements

  • A Geir Landrö, pour l'arbre "dTree"
  • A Vitaly Evseenko de Matcode Software pour l'utilitaire de Wake-On-Lan "mc-wol.exe".
Mis à jour le Vendredi, 06 Mars 2009 18:39