10.07.2015 Views

Agent unifié Unix sous Mac OS X - OCS Inventory NG

Agent unifié Unix sous Mac OS X - OCS Inventory NG

Agent unifié Unix sous Mac OS X - OCS Inventory NG

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>OCS</strong><strong>Inventory</strong> <strong>NG</strong> : <strong>Agent</strong> unifié <strong>Unix</strong> <strong>sous</strong> <strong>Mac</strong> <strong>OS</strong> XNOTE : Il semblerait que les versions 1.0 et 1.0.1 de l'agent unifié aient un bug <strong>sous</strong> <strong>Mac</strong> <strong>OS</strong> X et soient instables :l'agent fonctionne normalement mais s'arrête après avoir effectué sa première remontée vers le serveur (bug signalé àGoneri notamment). Toutefois, le tutoriel ci-des<strong>sous</strong> fonctionne avec les versions 0.0.9.2, 1.0 et 1.0.1 de l'agent unifié.Personnellement, j'utilise la version 0.0.9.2 pour sa stabilité.Le but de ce tutoriel est de créer un agent <strong>Mac</strong> <strong>OS</strong> X (10.3.9 minimum) basé sur l'agent unifié unix et son packaged'installation pour simplifier son déploiement.Je me suis basé sur les informations données par Wes Young (saxjazman@gmail.com) qui se trouve essentiellementdans le repertoire tools/macosx des sources de l'agent unifié unix.Sommaire :1. Pré-requis2. Préparation Perl3. Compilation4. Création d'un installeur adapté à votre environnement5. Création d'un installeur "universel"6. Désinstallation propre de l'agent <strong>OCS</strong><strong>NG</strong> pour <strong>Mac</strong> <strong>OS</strong> X1. Pré-requisCe qu'il vous faut :- XCode 3 (à installer depuis le DVD d'installation de <strong>Mac</strong> <strong>OS</strong> X ou à télécharger librement - enregistrement requis -sur http://developer.apple.com/technology/xcode.html)- l'agent unifié <strong>Unix</strong> (à télécharger sur http://nana.rulezlan.org/~goneri/ocsinventory-agent)- une connexion internet active pour le téléchargement et l'installation des modules Perl avant compilation.A titre d'information, XCode intègre une version de Perl suffisante pour l'agent.NOTE : Un package d'installation et une archive qui contient tout ce qui est nécessaire à la création d'un package« universel » sont téléchargeables à l'adresse suivante : http://www.ocsinventory-ng.org/index.php?page=1-02Si vous voulez préparer un package adapté à votre environnement, continuez ce tutoriel.2. Préparation PerlL'agent est développé en Perl et Wes Young a préféré intégrer dans l'agent les dépendances Perl nécessaires à sonfonctionnement plutôt que de demander à l'utilisateur d'installer manuellement ces modules à chaque installation. Ducoup, il est nécessaire à la création de l'exécutable <strong>Mac</strong> d'installer ces dépendances au moins une fois.Pour ce faire, il faut lancer cpan dans un Terminal :$ perl ­MCPAN ­e shellInstaller ensuite les modules suivants avec la commande install. Exemple :cpan> install Digest::MD5Liste des modules à installer :Digest::MD5XML::SimpleNet::IPLWP<strong>Mac</strong>::SysProfileModules optionnels (voir le README à la racine de l'agent unifié pour de plus amples informations) :Proc::DaemonProc::PID::Fileipmitoolif


Compress::ZlibUne fois ces modules installés, il faut changer une configuration de cpan pour pouvoir créer la librairie nécessaire àl'agent. Toujours dans cpan, lancez la commande suivante :cpan> o conf makepl_arg 'LIB=~/darwin­perl­lib PREFIX=­­perl­only'cpan> o conf commitcpan> quitDécompressez les sources de l'agent unifié :$ tar ­xvzf Ocsinventory­<strong>Agent</strong>­x.x.x.tar.gz(remplacez x.x.x par la version de l'agent)Rendez-vous ensuite dans le répertoire des sources de votre agent réservé à la partie <strong>Mac</strong> <strong>OS</strong> X :$ cd Ocsinventory­<strong>Agent</strong>­x.x.x/tools/macosx/scriptsLancez le script de création des dépendances Perl pour l'agent :$ perl ./create­darwin­perl­lib_fromCPAN.plCe script va créer un répertoire darwin-perl-lib à la racine de votre répertoire personnel. NE DEPLACEZ PAS CEREPERTOIRE ! Il est nécessaire à la compilation de l'agent de la prochaine étape.Une fois le script exécuté, retournez dans cpan et remettez les options modifiées précédemment d'aplomb :$ perl ­MCPAN ­e shellcpan> o conf makepl_arg ''cpan> o conf commitcpan> quit3. CompilationRendez-vous dans le répertoire macosx des sources de l'agent :$ cd ..(si vous étiez précédemment dans le répertoire scripts)Lancez le script de compilation de l'agent :$ sh ./BUILDME.shLe script va s'exécuter et vous demandera à un moment donné de rentrer votre mot de passe d'utilisateur (présence d'unecommande sudo dans le script).Voilà, vous avez maintenant plusieurs fichiers/répertoires nouvellement créés dans le répertoire courant (normalement~/Ocsinventory-<strong>Agent</strong>-x.x.x/tools/macosx) et notamment un fichier unified_unix_agent-macosx.zip qui contient tout cequi est nécessaire pour votre travail de création de package de déploiement. Copiez ce fichier dans votre répertoirepersonnel et dezippez-le. Vous devez alors avoir un répertoire ~/unified_unix_agent-macosx/. On va maintenanttravailler là dedans.4. Création d'un installeur adapté à votre environnementLorsque je parle d'un installeur « adapté à votre environnement », je veux dire qu'il est directement configuré pourfonctionner dans votre environnement (il dispose déjà de son adresse de serveur et de son certificat).Rendez-vous dans le répertoire de l'agent nouvellement créé :


$ cd ~/unified_unix_agent­macosxCe répertoire contient normalement les fichiers/répertoires suivants :$ ls ­latotal 104drwxr­xr­x 13 test test 442 16 avr 13:36 .drwx­­­r­x@ 67 test test 2278 16 avr 13:43 ..­rw­r­­r­­ 1 test test 2860 16 avr 13:36 INSTALLdrwxr­xr­x 3 test test 102 16 avr 13:36 <strong>OCS</strong><strong>NG</strong>.pkg­rw­r­­r­­ 1 test test 2500 16 avr 13:36 README­rw­r­­r­­ 1 test test 51 16 avr 13:36 cacert.pemdrwxr­xr­x 4 test test 136 16 avr 13:36 launchfiles­rw­r­­r­­ 1 test test 434 16 avr 13:36 modules.conf­rw­r­­r­­ 1 test test 966 16 avr 13:36 multicritere.php­<strong>Mac</strong><strong>OS</strong>X.patch­rwxr­xr­x 1 test test 22708 16 avr 13:36 ocsinventory­agent­rw­r­­r­­ 1 test test 89 16 avr 13:36 ocsinventory­agent.cfgdrwxr­xr­x 13 test test 442 16 avr 13:36 scripts­rw­r­­r­­ 1 test test 1645 16 avr 13:36 tele_package.php­<strong>Mac</strong><strong>OS</strong>X.patchA partir d'ici, je vous livre ma méthode personnelle. A l'origine, Wes Young a créé un multitude de petits scripts quipermettent d'automatiser toutes les tâches suivantes. Toutefois, comme j'ai modifié la manière de lancer l'agent (en tantque root et non en tant qu'utilisateur _ocsng nouvellement créé pour l'occasion), je n'utilise plus ses scripts. Si vousvoulez utiliser la méthode de Wes Young, lisez le fichier INSTALL. Attention : Wes n'utilise pas PackageMaker livréavec XCode mais Iceberg (http://s.sudre.free.fr/Software/Iceberg.html).Il nous faut rajouter ici l'application <strong>OCS</strong><strong>NG</strong>.app qui se trouve dans Ocsinventory-<strong>Agent</strong>-x.x.x/tools/macosx. Si lerépertoire Ocsinventory-<strong>Agent</strong>-x.x.x se trouve dans votre répertoire home, vous pouvez le faire par la commandesuivante :$ cp ­R ../Ocsinventory­<strong>Agent</strong>­x.x.x/tools/macosx/<strong>OCS</strong><strong>NG</strong>.app ./Du coup, vous devez avoir un répertoire unified_unix_agent-macosx qui contient les éléments suivants :$ ls ­latotal 104drwxr­xr­x 15 test test 510 16 avr 14:49 .drwx­­­r­x@ 67 test test 2278 16 avr 13:43 ..­rw­r­­r­­ 1 test test 2860 16 avr 13:36 INSTALLdrwxr­xr­x 3 test test 102 16 avr 14:49 <strong>OCS</strong><strong>NG</strong>.appdrwxr­xr­x 3 test test 102 16 avr 13:36 <strong>OCS</strong><strong>NG</strong>.pkgdrwxr­xr­x 3 test test 102 16 avr 14:43 <strong>OCS</strong><strong>NG</strong>_Installer.pmdoc­rw­r­­r­­ 1 test test 2500 16 avr 13:36 README­rw­r­­r­­ 1 test test 51 16 avr 13:36 cacert.pemdrwxr­xr­x 4 test test 136 16 avr 13:36 launchfiles­rw­r­­r­­ 1 test test 434 16 avr 13:36 modules.conf­rw­r­­r­­ 1 test test 966 16 avr 13:36 multicritere.php­<strong>Mac</strong><strong>OS</strong>X.patch­rwxr­xr­x 1 test test 22708 16 avr 13:36 ocsinventory­agent­rw­r­­r­­ 1 test test 89 16 avr 13:36 ocsinventory­agent.cfgdrwxr­xr­x 13 test test 442 16 avr 13:36 scripts­rw­r­­r­­ 1 test test 1645 16 avr 13:36 tele_package.php­<strong>Mac</strong><strong>OS</strong>X.patchOuvrez dans un éditeur texte (personnellement, j'utilise Smultron - http://smultron.sourceforge.net) le fichierocsinventory-agent.cfg.Modifiez la première ligne server=... pour y mettre votre propre nom de serveur. Exemple :server=http://ocsinventoryserveur.mondomaine.com/ocsinventoryVous pouvez aussi mettre simplement le nom du serveur ou son adresse IP, cela fonctionne. Exemple :server=ocsinventoryserveur.mondomaine.comou


server=10.1.1.1Vous pouvez aussi enregistrer ici des informations de TAG par exemple (tag=xxxxx).Sauvez et fermez.Ouvrez ensuite launchfiles/org.ocsng.agent.plist avec Property List Editor (intégré dans XCode) et modifiez la valeur dela clef UserName de '_ocsng' en 'root'. Sauvez et fermez.Ouvrez ensuite launchfiles/10_3_9-startup/<strong>OCS</strong><strong>Inventory</strong>/<strong>OCS</strong><strong>Inventory</strong> avec un éditeur de texte. Modifiez '_ocsng' en'root' à la ligne 22 et effacez "sudo -u _ocsng" de la ligne 24 (il ne doit rester que '/Applications/<strong>OCS</strong><strong>NG</strong>.app/Contents/<strong>Mac</strong><strong>OS</strong>/<strong>OCS</strong><strong>NG</strong>'). Sauvez et fermez.Remplacez ensuite le fichier cacert.pem par votre propre certificat (nécessaire pour le déploiementd'applications/fichiers par l'agent).Ensuite, copiez les éléments suivants dans le répertoire Contents/Resources de l'appication <strong>OCS</strong><strong>NG</strong>.app (dans unTerminal) :$ cp modules.conf ./<strong>OCS</strong><strong>NG</strong>.app/Contents/Resources$ cp ocsinventory­agent.cfg ./<strong>OCS</strong><strong>NG</strong>.app.Contents/Resources$ cp cacert.pem ./<strong>OCS</strong><strong>NG</strong>.app/Contents/Resources$ cp ­R launchfiles/10_3_9­startup ./<strong>OCS</strong><strong>NG</strong>.app/Contents/Resources$ cp launchfiles/org.ocsng.agent.plist ./<strong>OCS</strong><strong>NG</strong>.app/Contents/ResourcesCréez un nouveau fichier avec un éditeur de texte, que vous nommerez post_script.sh et que vous enregistrerez dans~/unified_unix_agent-macosx.Copiez/collez le script suivant :#!/bin/shecho 'determining <strong>OS</strong> Version'<strong>OS</strong>VER=`uname ­r`echo "<strong>OS</strong>: $<strong>OS</strong>VER"sudo chown ­R root:wheel /Applications/<strong>OCS</strong><strong>NG</strong>.appsudo chmod ­R 711 /Applications/<strong>OCS</strong><strong>NG</strong>.appPREFIX="/Applications/<strong>OCS</strong><strong>NG</strong>.app/Contents/Resources"TPATH="/etc/ocsinventory­agent"sudo mkdir $TPATH/sudo chown root:admin $TPATH/sudo chmod 770 $TPATH/sudo cp $PREFIX/ocsinventory­agent.cfg $TPATH/sudo cp $PREFIX/modules.conf $TPATH/sudo chmod ­R 770 $TPATH/TPATH="/var/lib/ocsinventory­agent"sudo mkdir ­p $TPATHsudo mkdir ­p $TPATH/http:__VOTRESERVEUR_ocsinventorysudo cp $PREFIX/cacert.pem $TPATH/http:__VOTRESERVEUR_ocsinventory/sudo chown ­R root:admin $TPATHTPATH="/var/log/ocsng.log"sudo touch $TPATHsudo chown root:admin $TPATHsudo chmod 660 $TPATHif [ "$<strong>OS</strong>VER" == "7.9.0" ]; thenecho "Found Jaguar <strong>OS</strong>, using 10.3 StartupItems setup"TPATH="/Library/StartupItems"


sudo cp ­R $PREFIX/10_3_9­startup/<strong>OCS</strong><strong>Inventory</strong> $TPATH/sudo chown ­R root:wheel $TPATH/<strong>OCS</strong><strong>Inventory</strong>sudo chmod 755 $TPATH/<strong>OCS</strong><strong>Inventory</strong>sudo chmod 644 $TPATH/<strong>OCS</strong><strong>Inventory</strong>/StartupParameters.plistsudo chmod 755 $TPATH/<strong>OCS</strong><strong>Inventory</strong>/<strong>OCS</strong><strong>Inventory</strong>echo 'Starting Service using Sudo'sudo /Library/StartupItems/<strong>OCS</strong><strong>Inventory</strong>/<strong>OCS</strong><strong>Inventory</strong> startelseecho "Found Tiger or newer <strong>OS</strong>, using Launch<strong>Agent</strong> plists"TPATH="/Library/LaunchDaemons"sudo cp $PREFIX/org.ocsng.agent.plist $TPATH/sudo chown root:wheel $TPATH/org.ocsng.agent.plistsudo chmod 644 $TPATH/org.ocsng.agent.plistfiecho 'Loading Service'sudo launchctl load $TPATH/org.ocsng.agent.plistecho 'done'Pensez à modifier dans le script le nom VOTRESERVEUR par le nom de votre serveur dans les lignes qui traite durépertoire /var/lib/ocsinventory-agent (lignes 21 et 22 normalement).Sauvez et fermez.Ouvrez PackageMaker (dans /Developer/Applications/Utilities).Nommez votre organisation et choisissez <strong>Mac</strong> Os X v10.3 Panther comme Minimum Target. Sauvez immédiatementvotre fichier dans le répertoire ~/unified_unix_agent-macosx <strong>sous</strong> le nom que vous voulez (<strong>OCS</strong><strong>NG</strong>_Installer.pmdocpar exemple). Rentrez un titre dans la zone Title : <strong>OCS</strong><strong>NG</strong> <strong>Mac</strong> <strong>OS</strong> X <strong>Agent</strong> par exemple.Décochez 'Volume selected by user' et cochez 'System Volume' dans la zone Install Destination. Vérifiez que User Seesest sur 'Easy and Custom Install'.Faites ensuite glisser l'application <strong>OCS</strong><strong>NG</strong> vers la zone Contents de votre fenêtre PackageMaker.Dans l'onglet Configuration, décochez la case 'Allow custom location', vérifiez que la Destination est bien /Applicationset cliquez sur le petit menu déroulant à droite de la ligne Install pour cocher l'option 'Relative to project' (cette optionvous permettra ensuite de pouvoir déplacer comme vous le voulez votre répertoire source sans affecter le fichier.pmdoc). 'Restart Action' doit être sur 'None' et la case 'Require admin authentification' doit être cochée.Dans l'onglet Components, décochez la case 'Allow Relocation'. Dans l'onglet Scripts, allez sur la ligne Postflight,cliquez sur le petit menu déroulant à droite de la ligne pour cocher l'option 'Relative to project' et tapez ensuite'post_script.sh' dans la ligne.Vous pouvez maintenant cliquer sur Build pour créer votre package. Il aura normalement le même nom que votre Title(<strong>OCS</strong><strong>NG</strong> <strong>Mac</strong> <strong>OS</strong> X <strong>Agent</strong>.mpkg dans mon exemple).Si aucune erreur ne survient pendant la création, votre package est disponible pour un déploiement manuel. Attention,ce package n'est utilisable que dans votre environnement.5. Création d'un installeur "universel"Lorsque je parle d'un installeur "universel", je veux dire que c'est un installeur de l'agent qui demande en find'installation de préciser le nom du serveur <strong>OCS</strong><strong>NG</strong> et d'indiquer le certificat à utiliser. Ce certificat, s'il ne s'appelle pascacert.pem, sera correctement renommé.Remarque : Cet installeur est disponible au téléchargement à l'adresse : http://www.ocsinventory-ng.org/index.php?page=1-02Vous trouverez aussi à cette adresse une archive qui contient déjà les différents éléments nécessaires à la création de ce


type de package, de façon à pouvoir directement l'adpater sans passer par la partie compilation (partie 2 et 3 de ce tuto).Rendez-vous dans le répertoire de l'agent nouvellement créé :$ cd ~/unified_unix_agent­macosxCe répertoire contient normalement les fichiers/répertoires suivants :$ ls ­latotal 104drwxr­xr­x 13 test test 442 16 avr 13:36 .drwx­­­r­x@ 67 test test 2278 16 avr 13:43 ..­rw­r­­r­­ 1 test test 2860 16 avr 13:36 INSTALLdrwxr­xr­x 3 test test 102 16 avr 13:36 <strong>OCS</strong><strong>NG</strong>.pkg­rw­r­­r­­ 1 test test 2500 16 avr 13:36 README­rw­r­­r­­ 1 test test 51 16 avr 13:36 cacert.pemdrwxr­xr­x 4 test test 136 16 avr 13:36 launchfiles­rw­r­­r­­ 1 test test 434 16 avr 13:36 modules.conf­rw­r­­r­­ 1 test test 966 16 avr 13:36 multicritere.php­<strong>Mac</strong><strong>OS</strong>X.patch­rwxr­xr­x 1 test test 22708 16 avr 13:36 ocsinventory­agent­rw­r­­r­­ 1 test test 89 16 avr 13:36 ocsinventory­agent.cfgdrwxr­xr­x 13 test test 442 16 avr 13:36 scripts­rw­r­­r­­ 1 test test 1645 16 avr 13:36 tele_package.php­<strong>Mac</strong><strong>OS</strong>X.patchIl nous faut rajouter ici l'application <strong>OCS</strong><strong>NG</strong>.app qui se trouve dans Ocsinventory-<strong>Agent</strong>-x.x.x/tools/macosx. Si lerépertoire Ocsinventory-<strong>Agent</strong>-x.x.x se trouve dans votre répertoire home, vous pouvez le faire par la commandesuivante :$ cp ­R ../Ocsinventory­<strong>Agent</strong>­x.x.x/tools/macosx/<strong>OCS</strong><strong>NG</strong>.app ./Du coup, vous devez avoir un répertoire unified_unix_agent-macosx qui contient les éléments suivants :$ ls ­latotal 104drwxr­xr­x 15 test test 510 16 avr 14:49 .drwx­­­r­x@ 67 test test 2278 16 avr 13:43 ..­rw­r­­r­­ 1 test test 2860 16 avr 13:36 INSTALLdrwxr­xr­x 3 test test 102 16 avr 14:49 <strong>OCS</strong><strong>NG</strong>.appdrwxr­xr­x 3 test test 102 16 avr 13:36 <strong>OCS</strong><strong>NG</strong>.pkgdrwxr­xr­x 3 test test 102 16 avr 14:43 <strong>OCS</strong><strong>NG</strong>_Installer.pmdoc­rw­r­­r­­ 1 test test 2500 16 avr 13:36 README­rw­r­­r­­ 1 test test 51 16 avr 13:36 cacert.pemdrwxr­xr­x 4 test test 136 16 avr 13:36 launchfiles­rw­r­­r­­ 1 test test 434 16 avr 13:36 modules.conf­rw­r­­r­­ 1 test test 966 16 avr 13:36 multicritere.php­<strong>Mac</strong><strong>OS</strong>X.patch­rwxr­xr­x 1 test test 22708 16 avr 13:36 ocsinventory­agent­rw­r­­r­­ 1 test test 89 16 avr 13:36 ocsinventory­agent.cfgdrwxr­xr­x 13 test test 442 16 avr 13:36 scripts­rw­r­­r­­ 1 test test 1645 16 avr 13:36 tele_package.php­<strong>Mac</strong><strong>OS</strong>X.patchOuvrez dans un éditeur texte (personnellement, j'utilise Smultron - http://smultron.sourceforge.net) le fichierocsinventory-agent.cfg.Supprimez la ligne 'server=...'Sauvez et fermez.Ouvrez ensuite launchfiles/org.ocsng.agent.plist avec Property List Editor (intégré dans XCode) et modifiez la valeur dela clef UserName de '_ocsng' en 'root'. Sauvez et fermez.Ouvrez ensuite launchfiles/10_3_9-startup/<strong>OCS</strong><strong>Inventory</strong>/<strong>OCS</strong><strong>Inventory</strong> avec un éditeur de texte. Modifiez '_ocsng' en'root' à la ligne 22 et effacez "sudo -u _ocsng" de la ligne 24 (il ne doit rester que '/Applications/<strong>OCS</strong><strong>NG</strong>.app/Contents/<strong>Mac</strong><strong>OS</strong>/<strong>OCS</strong><strong>NG</strong>'). Sauvez et fermez.


Ouvrez Editeur de Script (dans /Applications/AppleScript).Copiez/Collez l'AppleScript suivant :(*This script collects server addresse, tag reference and certificat file for the<strong>OCS</strong><strong>NG</strong> agent*)­­ Get the server namedisplay dialog "What is your <strong>OCS</strong><strong>NG</strong> Server addresse ?" & return & "(format :server.domain.ext ; exemple : ocsinventory.mydomain.com)" default answer ""buttons {"OK"} default button 1set the server_addresse to the text returned of the result­­ is it the good name ?display dialog "Check your server addresse :" & return & return &server_addresse & return & return & "Is it right ?" buttons {"Yes", "No"}default button 2set the validation to the button returned of the resultif the validation is not "Yes" thendisplay dialog "What is the good addresse :" & return & "(format :server.domain.ext ; exemple : ocsinventory.mydomain.com)" & return & "BE CAREFUL: if you don't write the good addresse, you must install again the agent."default answer "" buttons {"OK"} default button 1set the server_addresse to the text returned of the resultend if­­ récupération du TAGdisplay dialog "What TAG would you like for this computer ?" & return defaultanswer "" buttons {"OK"} default button 1set the computer_tag to the text returned of the result­­ correct file /etc/ocsinventory­agent.cfgdo shell script "echo 'server=" & server_addresse & "' >> /etc/ocsinventoryagent/ocsinventory­agent.cfg"with administrator privilegesdo shell script "echo 'tag=" & computer_tag & "' >> /etc/ocsinventoryagent/ocsinventory­agent.cfg"with administrator privilegesdo shell script "date >> /var/log/install.log"do shell script "echo 'serveur : " & server_addresse & "' >>/var/log/install.log"­­ change directory name /var/lib/ocsinventory­agent/http:__server_ocsinventorydo shell script "mv /var/lib/ocsinventory­agent/http:__server_ocsinventory /var/lib/ocsinventory­agent/http:__" & server_addresse & "_ocsinventory" withadministrator privilegesdo shell script "date >> /var/log/install.log"do shell script "ls ­la /var/lib/ocsinventory­agent >> /var/log/install.log"do shell script "echo 'Renommage OK' >> /var/log/install.log"­­ get certificatset certificat to choose file with prompt "Where is your certificat file"default location ((path to desktop folder)) without multiple selections allowedand invisiblesdo shell script "cp " & (P<strong>OS</strong>IX path of (certificat as string)) & "/var/lib/ocsinventory­agent/http:__" & server_addresse & "_ocsinventory" withadministrator privilegesdo shell script "date >> /var/log/install.log"do shell script "ls ­la /var/lib/ocsinventory­agent/http:__" & server_addresse &"_ocsinventory >> /var/log/install.log"do shell script "echo 'Certificat OK' >> /var/log/install.log"­­ right sectiondo shell script "chown ­R root:admin /var/lib/ocsinventory­agent" withadministrator privilegesdo shell script "date >> /var/log/install.log"do shell script "ls ­la /var/lib/ocsinventory­agent >> /var/log/install.log"do shell script "echo 'chown OK' >> /var/log/install.log"


do shell script "chmod ­R 755 /var/lib/ocsinventory­agent" with administratorprivilegesdo shell script "date >> /var/log/install.log"do shell script "ls ­la /var/lib/ocsinventory­agent >> /var/log/install.log"do shell script "echo 'chmod OK' >> /var/log/install.log"do shell script "sh/Applications/<strong>OCS</strong><strong>NG</strong>.app/Contents/Resources/post_post_script.sh" withadministrator privilegesEnregistrez-le en tant qu'application <strong>sous</strong> le nom 'validat_adr_server' dans le répertoire ~/unified_unix_agent-macosx.Fermez Editeur de script.NOTE : à ce niveau-là, mes compétences en développement étant minime, je tiens à signaler que l'applescript ci-dessusest largement optimisable, notamment en ce qui concerne la partie "validation du nom du serveur". En effet, je faisafficher une fenêtre qui indique le nom entré précédemment et qui demande de confirmer ou de recommencer maisseulement une fois. On ne peut pas recommencer plusieurs fois en cas d'erreur répétée. Je pense que c'est surtout cepoint qu'il faut revoir !Créez un nouveau fichier avec un éditeur de texte, que vous nommerez post_post_script.sh et que vous enregistrerezdans ~/unified_unix_agent-macosx.Copiez/collez le script suivant :#!/bin/shecho 'determining <strong>OS</strong> Version'<strong>OS</strong>VER=`uname ­r`echo "<strong>OS</strong>: $<strong>OS</strong>VER"PREFIX="/Applications/<strong>OCS</strong><strong>NG</strong>.app/Contents/Resources"if [ "$<strong>OS</strong>VER" == "7.9.0" ]; thenecho "Found Jaguar <strong>OS</strong>, using 10.3 StartupItems setup"TPATH="/Library/StartupItems"sudo cp ­R $PREFIX/10_3_9­startup/<strong>OCS</strong><strong>Inventory</strong> $TPATH/sudo chown ­R root:wheel $TPATH/<strong>OCS</strong><strong>Inventory</strong>sudo chmod 755 $TPATH/<strong>OCS</strong><strong>Inventory</strong>sudo chmod 644 $TPATH/<strong>OCS</strong><strong>Inventory</strong>/StartupParameters.plistsudo chmod 755 $TPATH/<strong>OCS</strong><strong>Inventory</strong>/<strong>OCS</strong><strong>Inventory</strong>echo 'Starting Service using Sudo'sudo /System/Library/StartupItems/<strong>OCS</strong><strong>Inventory</strong>/<strong>OCS</strong><strong>Inventory</strong> startelseecho "Found Tiger or newer <strong>OS</strong>, using Launch<strong>Agent</strong> plists"TPATH="/Library/LaunchDaemons/"sudo cp $PREFIX/org.ocsng.agent.plist $TPATHsudo chown root:wheel $TPATH/org.ocsng.agent.plistsudo chmod 644 $TPATH/org.ocsng.agent.plistecho 'Loading Service'sudo launchctl load $TPATH/org.ocsng.agent.plistfisudo chown ­R root:root /Applications/<strong>OCS</strong><strong>NG</strong>.appsudo chmod ­R 711 /Applications/<strong>OCS</strong><strong>NG</strong>.appecho 'done'Ensuite, copiez les éléments suivants dans le répertoire Contents/Resources de l'appication <strong>OCS</strong><strong>NG</strong>.app (dans unTerminal) :


$ cp modules.conf ./<strong>OCS</strong><strong>NG</strong>.app/Contents/Resources$ cp ocsinventory­agent.cfg ./<strong>OCS</strong><strong>NG</strong>.app.Contents/Resources$ cp ­R launchfiles/10_3_9­startup ./<strong>OCS</strong><strong>NG</strong>.app/Contents/Resources$ cp launchfiles/org.ocsng.agent.plist ./<strong>OCS</strong><strong>NG</strong>.app/Contents/Resources$ cp post_post_script.sh ./<strong>OCS</strong><strong>NG</strong>.app/Contents/Resources$ cp validat_adr_serveur.app ./<strong>OCS</strong><strong>NG</strong>.app/Contents/ResourcesCréez un nouveau fichier avec un éditeur de texte, que vous nommerez post_script.sh et que vous enregistrerez dans~/unified_unix_agent-macosx.Copiez/collez le script suivant :#!/bin/shecho 'determining <strong>OS</strong> Version'<strong>OS</strong>VER=`uname ­r`echo "<strong>OS</strong>: $<strong>OS</strong>VER"sudo chown ­R root:wheel /Applications/<strong>OCS</strong><strong>NG</strong>.appsudo chmod ­R 711 /Applications/<strong>OCS</strong><strong>NG</strong>.appPREFIX="/Applications/<strong>OCS</strong><strong>NG</strong>.app/Contents/Resources"TPATH="/etc/ocsinventory­agent"sudo mkdir $TPATH/sudo chown root:admin $TPATH/sudo chmod 770 $TPATH/sudo cp $PREFIX/ocsinventory­agent.cfg $TPATH/sudo cp $PREFIX/modules.conf $TPATH/sudo chmod ­R 770 $TPATH/TPATH="/var/lib/ocsinventory­agent"sudo mkdir ­p $TPATHsudo mkdir ­p $TPATH/http:__serveur_ocsinventorysudo chown ­R root:admin $TPATHTPATH="/var/log/ocsng.log"sudo touch $TPATHsudo chown root:admin $TPATHsudo chmod 660 $TPATHexec $PREFIX/validat_adr_server.appecho 'done'Sauvez et fermez.Ouvrez PackageMaker (dans /Developer/Applications/Utilities).Nommez votre organisation et choisissez <strong>Mac</strong> Os X v10.3 Panther comme Minimum Target. Sauvez immédiatementvotre fichier dans le répertoire ~/unified_unix_agent-macosx <strong>sous</strong> le nom que vous voulez (<strong>OCS</strong><strong>NG</strong>_Installer.pmdocpar exemple). Rentrez un titre dans la zone Title : <strong>OCS</strong><strong>NG</strong> <strong>Mac</strong> <strong>OS</strong> X <strong>Agent</strong> par exemple.Décochez 'Volume selected by user' et cochez 'System Volume' dans la zone Install Destination. Vérifiez que User Seesest sur 'Easy and Custom Install'.Faites ensuite glisser l'application <strong>OCS</strong><strong>NG</strong> vers la zone Contents de votre fenêtre PackageMaker.Dans l'onglet Configuration, décochez la case 'Allow custom location', vérifiez que la Destination est bien /Applicationset cliquez sur le petit menu déroulant à droite de la ligne Install pour cocher l'option 'Relative to project' (cette optionvous permettra ensuite de pouvoir déplacer comme vous le voulez votre répertoire source sans affecter le fichier.pmdoc). 'Restart Action' doit être sur 'None' et la case 'Require admin authentification' doit être cochée.Dans l'onglet Components, décochez la case 'Allow Relocation'. Dans l'onglet Scripts, allez sur la ligne Postflight,cliquez sur le petit menu déroulant à droite de la ligne pour cocher l'option 'Relative to project' et tapez ensuite


'post_script.sh' dans la ligne.Vous pouvez maintenant cliquer sur Build pour créer votre package. Il aura normalement le même nom que votre Title(<strong>OCS</strong><strong>NG</strong> <strong>Mac</strong> <strong>OS</strong> X <strong>Agent</strong>.mpkg dans mon exemple).Si aucune erreur ne survient pendant la création, votre package est disponible pour un déploiement manuel. Ce packageest utilisable n'importe où : en fin d'installation, une petite fenêtre s'ouvre pour vous demander le nom du serveur puisune autre vous demande de spécifier le chemin du certificat à utiliser.6. Désinstallation propre de l'agent <strong>OCS</strong><strong>NG</strong> pour <strong>Mac</strong> <strong>OS</strong> X :Voici un script shell qui permet la désinstallation propre de l'agent :#!/bin/bash<strong>OS</strong>VER=`uname ­r`echo "<strong>OS</strong>Ver is $<strong>OS</strong>VER"TPID=`ps ax | grep /Applications/<strong>OCS</strong><strong>NG</strong>.app/Contents | grep ­v grep | awk '{print$1}'`if [ "$TPID" != "" ]; thenecho "killing process: $TPID"sudo kill $TPIDfiFILES="/Library/Receipts/<strong>OCS</strong><strong>NG</strong>.pkg/ /etc/ocsinventory­agent//var/lib/ocsinventory­agent/ /Applications/<strong>OCS</strong><strong>NG</strong>.app /var/log/ocsng.log"if [ "$<strong>OS</strong>VER" == "7.9.0" ]; thenFILES="$FILES /Library/StartupItems/<strong>OCS</strong><strong>Inventory</strong>"elseFILES="$FILES /Library/LaunchDaemons/org.ocsng.agent.plist"fiecho 'Stopping and unloading service'launchctl stop org.ocsng.agentlaunchctl unload /Library/LaunchDaemons/org.ocsng.agent.plistfor FILE in $FILES; doecho 'removing '.$FILErm ­Rf $FILEdone

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!