Gestion Parc Informatique Client UNIX Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2
2 Sommaire: Analyse: Scénario Diagramme de cas d'utilisations général Diagramme de cas d'utilisations Diagramme de séquence acteur / système Diagramme de séquence poste client / serveur Diagramme d'activité Diagramme de classe Programmation: Algorithmes codés, Tests Résultat Conclusion Présentation du projet: Présentation générale Présentation de la partie client Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2
3 Présentation générale Description: Il s'agit de développer un système d'inventaire automatise en temps réel A la mise en service d'un poste sur le réseau pédagogique de l'établissement, celui ci devra être reconnu par le système suivant le paramétrage et récupérera dans une base de données les informations matérielles et logicielles du matériel connecte. Ce projet se divise en 3 parties: - Serveur: Détecter la connexion d'un poste Recevoir le relevé d'informations du poste Mettre a jour la base de données ( un utilisateur autorisé pourra configurer le service) - Base de donnes: Récupérer la BdD Extraire des informations de la BdD Exécuter des requêtes pré-programmées sur la base de données -Client: Récupérer les informations du poste Traiter les données mises a jour Envoyer les informations au serveur d'inventaire Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2
4 Présentation générale Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2
5 Présentation de la partie client Utilisateur lambdaPoste clientPoste serveur Envoie la base de données automatiquement Démarrage du poste Un utilisateur lambda démarre son poste. Au lancement de l'ordinateur, le poste client exécute un script pour effectuer un inventaire matériel et logiciel. Il appelle ensuite un programme qui effectue une comparaison entre les fichiers d'inventaires, et envoie le fichier au serveur s'ils sont différents. L'ensemble des opérations est compris dans le chargement du systeme d'exploitation et est complètement transparent pour l'utilisateur. Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2
6 Scénario L'utilisateur allume son poste ( système d'exploitation UNIX ). A la fin du démarrage, le système d'exploitation lance automatiquement le script (shell). Le script effectue dans un premier temps la rotation des fichiers log.txt en log.txt.old (s'ils existent déjà, sinon il les crée). Il procède ensuite au relevé d'informations, et fait appel au programme en C++. Une fois que le programme a fini de s'executer, l'utilisateur prends la main, il peut s'identifier et lancer une session Xwindow. (Possibilité de mettre lors du chargement de Xwindow au lieu du OS) Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2
7 Scénario Le script effectue ensuite un inventaire ordonné des informations a récupérer et les stocke dans log.txt dans l'ordre suivant: 1-Table MATERIEL2-Table HDD4- Table OS #Processeur – Vendeur #Nom du HDD #Nom du OS #Processeur – Modele #Taille totale #Memoire RAM #Taille totale disponible #Carte son #Carte graphique3-Table ETHERNET5- Table LOGICIELS #Processeur – cadence #Nom de la CR #Liste Logiciels #Date #Adresse MAC Le script appelle ensuite le programme GPI.exe (C++). Le programme compare les deux fichiers d'inventaire, s'ils sont différents, il établie une connexion avec le serveur et envoie le fichier d'inventaire le plus récent L'intégralité du processus est complètement transparente pour l'utilisateur. Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2
8 Diagramme de cas d'utilisations générale Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2
9 Diagramme de cas d'utilisations Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2
10 Diagramme de séquence acteur / système Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2
11 Diagramme de séquence client / serveur Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2
12 Diagramme d'activité [BDD non a jour] Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2
13 Diagramme de classes Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2
14 Prototypes, Tests Algorithme de comparaison des fichiers // Traitement Fichiers for ( unsigned i = 0; !OldFile.eof() && Id; ++i ) { File >> Word; OldFile >> OldWord; //Comparaison if ( Word != OldWord ) { Id = false; File.close(); c_NetworkCommunication Envoi; Envoi.SendToServer( Path_File, IP_SERVER ); } Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2
15 Algorithme de vérification d'accès ifstream File( Path_File ); //Verification de l'ouverture des fichier if ( File.bad() ) { cerr << "Ouverture de \"log.txt\" echouee" << endl; return -1; } Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2 Prototypes, Tests
16 Exemple de mise en forme via script Shell Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2 Prototypes, Tests ### TABLE ETHERNET ### echo -n INSERT INTO ETHERNET VALUES \(\"\",\"\",\" >> /etc/init.d/log.txt #Premiere carte reseau #Nom de la carte reseau echo -n `/sbin/lspci -v | grep Network\ controller` >> /etc/init.d/log.txt echo -n \",\" >> /etc/init.d/log.txt #Adresse MAC echo -n `/sbin/ifconfig | grep HWaddr | grep eth0 | cut -b 39-60` >> /etc/init.d/log.txt echo -n \"\),\ >> /etc/init.d/log.txt echo -e '\r'[#######################################_________]'\c' #Deuxieme carte reseau echo -n \(\"\",\"\",\" >> /etc/init.d/log.txt echo -n `/sbin/lspci -v | grep Ethernet\ controller` >> /etc/init.d/log.txt echo -n \",\" >> /etc/init.d/log.txt
17 Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2 Prototypes, Tests int main ( int argc, char* argv[] ) { int Res; try { c_Client Comm; Res = Comm.Comp(); } catch ( t_Erreur RcvdError ) { c_Erreur Erreur; Erreur.Log_Error ( RcvdError ); return -1; } return Res; } Une erreur apparait dans le bloc try.. int c_NetworkCommunication::SendBuffer ( int Sock, const char* BufToSend ) { //Envoi if ( send( Sock, BufToSend, strlen ( BufToSend ), 0 ) < 0 ) { //cerr << "Impossible d'envoyer " << "BufToSend" << " au serveur"" << endl; c_Erreur Erreur; t_Erreur Report = "Envoi"; Erreur.Throw_Error ( Report ); return -1; } return 0; L'envoi echoue, la fonction apelle Throw_Error avec une erreur contenant le libelle "Envoi" Extrait des fichier lib.cpp et GPI.cpp void c_Erreur::Throw_Error( t_Erreur Type_Error ) {throw Type_Error; } int main ( int argc, char* argv[] ) { int Res; try { c_Client Comm; Res = Comm.Comp(); } catch ( t_Erreur RcvdError ) { c_Erreur Erreur; Erreur.Log_Error ( RcvdError ); return -1; } return Res; } L'erreur est interceptee par le bloc catch void c_Erreur::Log_Error ( t_Erreur Type_Error ) { cerr << "An error has occured. Please check " << Path_GPILOG << " for more information." << endl; ofstream Error ( Path_GPILOG ); //Recuperation de la date actuelle time_t TimeBuffer; time(&TimeBuffer); Error << "Error : " << Type_Error << " has occured on " << ctime(&TimeBuffer) << "." <<endl; }
18 Résultats Extrait du fichier log.txt Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2 INSERT INTO MATERIEL VALUES ("","GenuineIntel","Intel(R) Pentium(R) M processor 1500MHz","503","00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 03)","01:00.0 VGA compatible controller: ATI Technologies Inc M9+ 5C61 [Radeon Mobility 9200 (AGP)] (rev 01) (prog-if 00 [VGA])"," ","Tue Apr 10 12:21:52 CEST 2007"); INSERT INTO HDD VALUES ("","","/dev/hda","58.7","31"); INSERT INTO ETHERNET VALUES ("","","02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG Network Connection (rev 05)","00:0E:35:16:F7:14"), ("","","02:08.0 Ethernet controller: Intel Corporation 82801DB PRO/100 VE (MOB) Ethernet Controller (rev 83)","08:00:46:DA:9C:03"); INSERT INTO OS VALUES ("","","Linux default"); INSERT INTO LOGICIELS VALUES ("","","3ddiag resolution a2ps aaa_base acl agfa-fonts alacarte amarok
19 Conclusion Une grosse partie du travail a été effectuée: Les normes de communications ont été établies avec l'équipe Serveur. On utilisera le protocole TCP/IP via une communication Socket (port 60000) L'algorithme de comparaison fonctionne. Le relevé d'informations ordonné fonctionne. Le transfert du relevé fonctionne. Le traitement des erreurs fonctionne. La mise en forme pour insertion automatique dans la BDD fonctionne. L'exécution automatique du script au démarrage fonctionne. Rémy Chaumard – BTSIRIS2 – projet GPI client UNIX – revue n2