opsi version 4.0.2 (Partie 2) Notes de version - Index of
Transcription
opsi version 4.0.2 (Partie 2) Notes de version - Index of
opsi version 4.0.2 (Partie 2) Notes de version Revision: 16.10.2012 OpenSides sprl Rue des Palais 44, bte 33 1030 Brussels Tel.:+32 2 880 97 40 www.opensides.be [email protected] opsi version 4.0.2 (Partie 2) Notes de version i Table des matières 1 Droit d’auteur 1 2 Vue d’ensemble des nouvelles fonctionnalités 2 3 Remarques sur l’installation 4 4 Outil: L’interface de gestion opsi-configed 5 4.1 Sélection des clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Les extensions à l’intégration des pilotes 5.1 5 7 Intégration simplifiée des pilotes lors de l’installation automatique de Windows . . . . . . . . . . . . . 7 5.1.1 Packages de pilotes génériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 5.1.2 Pilotes préférés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 5.1.3 Les pilotes qui seront attribuées manuellement aux ordinateurs . . . . . . . . . . . . . . . . . . 8 5.1.4 Les pilotes qui seront automatiquement attribués à des ordinateurs à l’aide des champs <vendeur> / <Modèle> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 5.1.5 Structure du répertoire des pilotes et des fichiers des pilotes: . . . . . . . . . . . . . . . . . . . 8 5.1.6 Traitement des différents niveaux d’intégration des pilotes . . . . . . . . . . . . . . . . . . . . . 9 5.1.7 Ajout d’un Pilote et Vérification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 6 Inventaire 13 6.1 Inventaire Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 6.2 Inventaire des logiciels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 7 Les modifications apportées au nouveau opsi-linux-bootimage 17 8 Les modifications apportées à opsiconfd 18 9 Authentification opsi PAM 19 10 /etc/opsi/opsi.conf 20 11 Trouver des Switches Silent ou Unattended 21 11.1 Script pour les installations dans le contexte d’un administrateur local . . . . . . . . . . . . . . . . . . 22 ii opsi version 4.0.2 (Partie 2) Notes de version 12 opsi-winst 4.11.3 23 12.1 Début et Options de ligne de commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 12.2 Constantes globales de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 12.2.1 opsi-winst Chemin et Répertoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 12.3 Sections primaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 12.3.1 Réaction aux erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 12.3.2 Afficher le mode fenêtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 12.3.3 Les commandes Include . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 12.3.3.1 Les commandes Include: Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 12.3.3.2 Les commandes Include: Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 12.3.4 Manipulation de chaîne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 12.3.5 Autres Fonctions sur les chaînes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 12.3.6 Les expressions booléennes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 12.3.7 Les listes de chaînes du Registre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 12.3.8 Les listes de chaînes provenant des Propriétés du produit . . . . . . . . . . . . . . . . . . . . . 33 12.3.9 Autres Listes de chaînes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 12.3.10 Garder une trace des installations qui ont échoué . . . . . . . . . . . . . . . . . . . . . . . . . . 34 12.3.11 Commandes pour contrôler la journalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 12.4 Sections Secondaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 12.4.1 Sections Patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 12.4.1.1 Paramètre d’Appel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 12.4.2 Sections ExecWith . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 12.4.3 Sections WinBatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 12.4.3.1 Paramètre d’Appel (Modificateur) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 12.5 Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 13 Miscellanées 39 13.1 Changelogs: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 13.1.1 Changelog opsi-configed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 13.1.2 Changelog opsi-winst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 13.1.3 Changelog hwaudit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 13.1.4 Changelog swaudit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 13.1.5 Changelog jedit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 13.1.6 Changelog opsi-adminutils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 13.1.7 Changelog opsi-template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 13.1.8 Changelog opsi-template-with-admin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 13.1.9 Changelog opsi-client-agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 13.1.10 Changelog windows Netboot Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 13.1.11 Changelog python-opsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 iii opsi version 4.0.2 (Partie 2) Notes de version 13.1.12 Changelog opsipxeconfd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 13.1.13 Changelog opsiconfd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 13.1.14 Changelog opsi-utils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 13.1.15 Changelog opsi-linux-bootimage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 13.1.16 Changelog opsi-depotserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 13.1.17 Changelog opsi4ucs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 13.1.18 Changelog opsi-atftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 opsi version 4.0.2 (Partie 2) Notes de version Chapitre 1 Droit d’auteur Le droit d’auteur de ce manuel est détenu par uib gmbh à Mainz, Allemagne. Le droit d’auteur de la traduction francaise est détenu par OpenSides à Bruxelles, Belgique. Ce manuel est publié sous licence creative commons Attribution - ShareAlike (by-sa). Vous trouverez ici la description allemande: http://creativecommons.org/licenses/by-sa/3.0/de/ La licence allemande: http://creativecommons.org/licenses/by-sa/3.0/de/legalcode La description anglaise: http://creativecommons.org/licenses/by-sa/3.0/ La licence anglaise: http://creativecommons.org/licenses/by-sa/3.0/legalcode La description française: http://creativecommons.org/licenses/by-sa/3.0/deed.fr Le logiciel OPSI est dans la plupart de ces pièces open source. Seulement les nouvelles pièces qui sont encore sous le cofinancement ne sont pas open source. voir: http://www.opsi.org/fr/projets-de-co-financement Tout le reste du code source est publié sous licence GPLv3: La licence GPLv3: http://www.gnu.org/licenses/gpl.html Le nom opsi est une marque déposée de uib gmbh. Le logo de opsi est détenue par uib gmbh et peut être utilisé uniquement avec l’autorisation explicite. 1 / 49 opsi version 4.0.2 (Partie 2) Notes de version 2 / 49 Chapitre 2 Vue d’ensemble des nouvelles fonctionnalités La deuxième partie de la release opsi 4.0.2 est riche en nouvelles fonctionnalités et améliorations. Voici un aperçu: – opsi 4.0.2 fonctionne avec les distributions Linux suivantes: – Ubuntu 12.04 – Redhat 6 – CentOS 6 – UCS 3.0 (avec digitec-opsi-listener) – OpenSuse 12.1 – OpenSuse 12.2 – Une nouvelle opsi-VM préconfiguré basée sur Ubuntu 12.04 avec le connecteur opsi-Nagios préconfiguré. Les instructions d’installation pour toutes les distributions Linux prises en charge et la VM peuvent être trouvées dans le guide opsi-getting-started. – opsi-configed – Une nouvelle fonctions de recherche sur le client avec des fonctionnalités très avancées Voir ci-dessous pour plus d’informations – Les recherches peuvent être stockés et exécutés plusieurs fois – Arborescence des répertoires dans TreeView Sous Directory, un arbre hiérarchique peut être créé pour la gestion des clients. Contrairement à groups, chaque client doit être exactement à un endroit dans Directory. – La description du groupe sera affiché comme une bulle d’aide. – Les différences entre les valeurs par défaut des clients et la valeur des propriétés spécifiques de l’hôte,pour un produit, sont affichés en gras. – Si la version d’un client diffère de celle sur le serveur, l’information de version est affiché en couleur. – Nom du produit est désormais une colonne supplémentaire dans les onglets Configuration produit et Produits Netboot, et il est configurable. – Appuyant sur Ré-initialiser les produits locaux dans le menu contextuel de l’onglet Client, vous supprimerez toutes les informations sur les produits installés sur ce client. – Les valeurs de la colonne Rapport peuvent être remis à zéro dans les onglets Configuration produit et Produits Netboot. Par exemple, la colonne Rapport peut être réinitialisé manuellement après que le statut de failed a été signalée. – Les demandes de connexion et les demandes des séances d’information sont décalés dans les discussions, de sorte que des connexions "suspendu" sont évités dans opsi-configed. – Il y a une case à cocher dans la fenêtre de connexion au service Web qui établit les communications avec le format compressé gzip. opsi version 4.0.2 (Partie 2) Notes de version 3 / 49 – Inventaire matériel – Dell Express Code est maintenant déterminée pour les ordinateurs Dell. – L’inventaire matériel peut être étendue en appelant des méthodes spéciales. Voir la description ci-dessous. – Intégration pilote Les packages de pilotes sont automatiquement assignés à des ordinateurs basés sur le modèle de données du vendeur et de l’inventaire du matériel. Voir les descriptions ci-dessous. – Il y a un fichier de configuration dans /etc/opsi/opsi.conf, qui contrôle l’accès Samba 4. – Produits Netboot Windows – Correctif de sécurité pour la version WinPE – Adapté pour l’intégration avancé des pilotes – Détecteur de configuration opsi – opsi-winst: Il existe une variété d’extensions, qui sont décrites ci-dessous. opsi version 4.0.2 (Partie 2) Notes de version 4 / 49 Chapitre 3 Remarques sur l’installation Les produits qui sont publiés dans le cadre du présent communiqué sont dépendants les uns des autres. Vous ne devriez pas essayer d’installer une seule pièce sans les autres parties. Aucune procédure spéciale n’est requise lors de l’installation. L’installation se déroule durant les mises à jour du serveur et des produits opsi. Le serveur doit être mis à jour avant les produits opsi. cd /home/opsiproducts mkdir opsi402-2 cd opsi402-2 wget -r -l1 -nc -nd -A "*.opsi" http://download.uib.de/opsi4.0/testing/opsi402-2/products/ opsi-package-manager -i *.opsi Si la commande wget échoue, http_proxy devrait probablement être mis à http_proxy=http://192.168.1.5:8080/ Si vous avez un dépôts multiples, vous devez mettre à niveau le serveur avant la mise à niveau des dépôts. opsi version 4.0.2 (Partie 2) Notes de version 5 / 49 Chapitre 4 Outil: L’interface de gestion opsi-configed 4.1 Sélection des clients La liste des clients peut avoir un ou plusieurs clients. Cela permet le traitement de plusieurs clients en même temps. La liste des clients qui sont affichés dans l’onglet Selection des clients peut être limitée en utilisant l’icône entonnoir ou le menu déroulant Sélection / Montrer seulement les clients sélectionnés. La fonction enregistrer les clients sélectionnés en tant que groupe a été abandonnée. Vous pouvez utiliser la souris et ajoutez les clients sélectionnés à un groupe existant en les faisant glisser dans un groupe existant qui est affiché dans l’arborescence. Dans la boîte de dialogue de sélection des clients (via le menu «Sélection / Préciser la recherche») les clients peuvent être sélectionnés en utilisant une variété de critères basés sur leurs configurations. Figure 4.1 – opsi-configed: dialogue de sélection Par exemple, il est possible de rechercher des produits opsi installés ainsi que des logiciels tels que trouvés par l’audit logiciel d’OPSI (swaudit). Vous pouvez ainsi rechercher les PC satisfaisant certaines conditions matérielles. Les critères opsi version 4.0.2 (Partie 2) Notes de version 6 / 49 peuvent être combinés par des opérateurs logiques and ou or et aussi être négatif. Les chaînes de recherche peuvent être donnés sous forme de chaînes fixes combinés avec des astérisques * en tant que symboles génériques. Les définitions de recherche peuvent être enregistrés, puis de nouveau utilisé par le menu Sélection / Utilisez définition de recherche sauvegardée. Figure 4.2 – opsi-configed: Recherches sauvegardées Il est également possible d’exécuter une recherche enregistrée à partir de la ligne de commande lorsque l’éditeur de opsi-configed est lancé. En incluant le drapeau "-qs" et le nom de la recherche enregistrée, l’éditeur de configuration démarre avec les résultats de la recherche sauvegardée. Si le nom est omis, une liste de recherches disponibles seront affichés. opsi version 4.0.2 (Partie 2) Notes de version 7 / 49 Chapitre 5 Les extensions à l’intégration des pilotes Le chapitre sur l’intégration des pilotes dans opsi-getting-started-manuel a été révisée. Plus spécifiquement, le chapitre décrit les nouvelles fonctions de Les pilotes qui seront automatiquement attribués aux ordinateurs étant donné les les champs d’inventaire <vendeur> / <modèle>. 5.1 Intégration simplifiée des pilotes lors de l’installation automatique de Windows Si un groupe d’ordinateurs ont des pilotes qui ne font pas partie de l’installation par défaut de Windows, il est préférable de mettre ces ordinateurs dans un pool et d’intégrer leurs pilotes au cours de l’installation. Opsi prend en charge l’intégration automatique des pilotes dans l’installation, et simplifie donc le déploiement des pilotes. Dans ce cas, les pilotes doivent simplement être placé dans le répertoire approprié. Lorsque le script d’installation est appelé il cherche à travers ces répertoires et crée un catalogue. L’image de démarrage utilise automatiquement ce catalogue pour intégrer les bons pilotes. Opsi prend en charge l’installation automatique des pilotes standard, USB, HD audio, et contrôleur de disque. Pour qu’un pilote soit immédiatement installé avec Windows, vous devez placer les pilotes sur le serveur dans un format spécifique. Les pilotes doivent être placés dans le répertoire des pilotes, avec le format *.inf , où le nom du fichier décrit le pilote pour le programme d’installation de Windows. Les pilotes dans le format setup.exe ou *.zip ne sont pas utilisés ici. Si vous avez un ordinateur qui a déjà installé les pilotes, alors vous pouvez extraire les pilotes appropriés à l’aide du programme double driver (http://www.boozet.org/dd.htm). Il y a plusieurs niveaux d’intégration des pilotes: – Packages de pilotes générales – Pilotes préférés qui appartiennent à votre matériel, mais ne sont pas affectés à des ordinateurs spécifiques – Les pilotes qui seront affectées manuellement à des ordinateurs – Les pilotes qui seront automatiquement attribués aux ordinateurs utilisant les champs <vendeur> / <Modèle> Ci-dessous, un exposé détaillé sur la façon d’inclure chacun de ces pilotes 5.1.1 Packages de pilotes génériques Lorsque la configuration matérielle est très hétérogène, alors il peut être judicieux de travailler avec les packages de pilotes génériques. Les pilotes génériques peuvent être placés sous ./drivers/drivers. Vous pouvez trouver par exemple les paquets de pilotes génériques ici http://driverpacks.net/ . Téléchargez le package du pilote approprié dans un répertoire temporaire, puis décompressez le package du pilote en utilisant le script opsi extract_driver_pack.py comme suit: opsi version 4.0.2 (Partie 2) Notes de version 8 / 49 ./extract_driver_pack.py <path to the temporary directory with the compressed driverpacks> Cela vas décompresser et enregistrer les pilotes dans le répertoire ./drivers/drivers/. Il peut arriver que les pilotes trouvés par opsi à cet endroit ne fonctionnent pas nécessairement avec votre matériel. Pour les pilotes qui se trouvent dans ./drivers/drivers/, le pilote sera identifié à l’aide du matériel correspondant PCI IDs (par exemple USB- ou HD_Audio-ID) dans le fichier de description, puis intégré dans l’installation de Windows en fonction des besoins. 5.1.2 Pilotes préférés Dans le cas que vous avez à supporter du matériel spécial, et vous pouvez trouver les pilotes supplémentaires auprès des fabricants, utilisez la procédure suivante pour les inclure dans l’installation. Placez les pilotes supplémentaires dans leur propre répertoire sous: ./drivers/drivers/preferred. (le nom et la profondeur de la structure du répertoire n’est pas important). Les pilotes qui se trouvent dans le répertoire ./drivers/drivers/preferred seront intégrés dans l’installation de Windows, en supposant que opsi trouve une correspondance convenable pour le matériel basé sur le PCI IDs (ex.. USB or HD_Audo-ID) dans le fichier de description. Des problèmes peuvent survenir lorsque le même PCI IDs des pilotes se trouve dans preferred. Dans ce cas, un mappage direct des pilotes des périphériques est nécessaire. 5.1.3 Les pilotes qui seront attribuées manuellement aux ordinateurs Lors de l’installation des pilotes supplémentaires sur la base du PCI-IDs ou USB-IDs, ils doivent être installés dans le répertoire ./drivers/drivers/additional (le nom et la profondeur de la structure du répertoire n’est pas important). Vous pouvez mapper un ou plusieurs pilotes pour le client à l’aide de la propriété du produit additional_drivers et d’une liste de répertoires du pilote sous ./drivers/drivers/additional. Les répertoires spécifiés par additional_drivers sont recherchés de façon récursive jusqu’à ce que tous les pilotes sont trouvés. Cette méthode peut être utilisée pour créer un répertoire spécifique basé sur le type de client (ex. dell-optiplex-815). Quand un pilote est trouvé dans le répertoire des pilotes qui est spécifié par additional_drivers et correspond également à l’identifiant PCI, d’autres pilotes dans drivers/preferred ou drivers/ ne seront pas utilisés. Par conséquent les pilotes dans additional_drivers ajoutent des fonctionnalités qui n’auraient pas été trouvé avec les pilotes normaux. En outre, les pilotes qui sont manuellement lié à un client à l’aide de additional_drivers ont priorité sur les autres pilotes (additional_drivers peut être considéré comme super-preferred). 5.1.4 Les pilotes qui seront automatiquement attribués à des ordinateurs à l’aide des champs <vendeur> / <Modèle> Les mécanismes décrits précédemment qui mappent directement les pilotes des périphériques est automatisé depuis la version 4.0.2 Release 2 de opsi. Opsi recherchera dans le répertoire ./drivers/drivers/additional/byAudit un nom de répertoire qui correspond au champ Vendor qui a été donnée dans l’inventaire du matériel. Ce répertoire Vendor recherchera un répertoire Model qui correspond à ce qu’on voit dans l’inventaire matériel. Si ce répertoire est trouvé, alors il sera attribué manuellement à la propriété du produit additional_drivers. Le nom du répertoire byAudit est sensible à la casse. Les noms de répertoires pour Vendor et Model ne sont pas sensibles à la casse (Dell et dELL sont traités de la même manière). 5.1.5 Structure du répertoire des pilotes et des fichiers des pilotes: /opt/ !-pcbin/ !-install/ !-winxppro/ !-drivers opsi version 4.0.2 (Partie 2) Notes de version |-classes/ |-hdaudioids/ |-pciids/ |-pci.ids |-usbids/ |-usb.ids |-vendors/ !-drivers |-additional/ |-byAudit/ |-<vendor> |-<model> |-buildin/ |-preferred/ |-exclude/ !-mydriverpacks/ 5.1.6 9 / 49 (Liens vers des classes de pilotes de périphériques) (Liens vers des pilotes HD-Audio) (Liens vers des pilotes PCI-ID) (base de données PCI) (Liens vers des pilotes USB-ID) (base de données USB) (Liens vers les pilotes du fabricant) (place pour les packages de pilotes génériques) (pilotes assignées manuellement) Pilotes spécifiques au modèle que seront affectés par l’inventaire du matériel (données pour la version i386) (pilotes certifiés) (pilotes exclus) (packages de pilotes d’exemple) Traitement des différents niveaux d’intégration des pilotes La priorité est donnée aux pilotes qui sont trouvés en utilisant la propriété additional_drivers ou à l’aide des données d’inventaire dans ./drivers/drivers/additional/byAudit. Les tests seront effectués lors de l’intégration du pilote pour déterminer quels pilotes sont déjà installés sur quelles périphériques matériels. Quand un pilote est introuvable pour un périphérique, la méthode suivante sera utilisée pour rechercher les pilotes. Pour les appareils qui ont des pilotes qui n’ont pas été énumérés dans additional_drivers, opsi va rechercher, et intégrer, un pilote approprié basé sur le PCI ID (ex. USB-, HD_Audio-ID). Intégration des pilotes signifie ce qui suit: – Le pilote sera copié sur le disque dur local dans c:\drv\<num>. – L’installation de Windows recherche le sous-répertoire du pilote dans c:\drv\ , où le nom du sous-répertoire sera lu à partir du fichier unattended à la racine du sous-répertoire unattend. 5.1.7 Ajout d’un Pilote et Vérification Après tout changement dans le répertoire ./drivers/drivers , appelez la commande suivante à partir du répertoire racine des produits Netboot afin de définir les permissions: opsi-setup --set-rights ./drivers Ensuite, appelez le script ./create_driver_links.py. Le script recherche à travers les sous-répertoires ./drivers/drivers et génère une liste de liens en utilisant le PCI-IDs, USB-IDs, HD-Audio-IDs qui permet au matériel de connaître les pilotes. Le script va utiliser les pilotes dans les répertoires préférés. Le script setup.py examine le matériel des ordinateurs installés et identifie les pilotes nécessaires. Ceux-ci seront copiés sur le disque et le fichier Unattended.txt sera corrigé. Le script create_driver_links.py examine les produits NT5 une à la fois dans l’arbre i386 et extrait les fichiers. inf des pilotes nécessaires dans windows_builtin. Si vous apportez une modification à l’arborescence du répertoire i386 (ex. après l’installation d’un Service Pack), supprimez ce répertoire et lancez à nouveau create_driver_links.py. Les pilotes reconnus pour les produits NT6, sont trouvés dans WinPE à windows_builtin. Avec la commande suivante, on peut voir l’inventaire matériel pour un client: ./show_drivers.py <clientname> Lorsque cette commande est appelée, il vous montrera une sélection des pilotes qui seront choisis pour l’installation Bootimage via PCI-IDs, USB-IDs, HD-Audio-IDs, et additional_drivers (ou byAudit), et le matériel qui n’a toujours pas de pilote. Utilisez le résultat de show_drivers.py pour vérifier et voir quels pilotes doivent être installés. opsi version 4.0.2 (Partie 2) Notes de version 10 / 49 Il se pourrait que les fabricants incluent des pilotes différents pour différents systèmes d’exploitation (ex. Vista ou Win7) ou différentes configurations (ex. SATA ou SATA RAID). Le script create_driver_links.py ne peut pas faire cette distinction. Si vous pensez que le mauvais pilote a été installé, déplacez le pilote dans le répertoire drivers/exclude et appelez à nouveau create_driver_links.py. Les pilotes dans le répertoire drivers/exclude ne sont pas utilisés au cours de l’intégration. Exemple de sortie d’un appel show_drivers.py: ./show_drivers.py pcdummy PCI-Devices [(Standardsystemgeräte), PCI Standard-PCI-zu-PCI-Brücke] No driver - device directory /opt/pcbin/install/winxppro/drivers/pciids/1022/9602 not found [ATI Technologies Inc., Rage Fury Pro (Microsoft Corporation)] Using build-in windows driver [(Standard-IDE-ATA/ATAPI-Controller), Standard-Zweikanal-PCI-IDE-Controller] /opt/pcbin/install/winxppro/drivers/drivers/D/M/N/123 [Realtek Semiconductor Corp., Realtek RTL8168C(P)/8111C(P) PCI-E Gigabit Ethernet NIC] /opt/pcbin/install/winxppro/drivers/drivers/preferred/realtek_gigabit_net_8111_8168b [IEEE 1394 OHCI-konformer Hostcontroller-Hersteller, OHCI-konformer IEEE 1394-Hostcontroller] No driver - device directory ’/opt/pcbin/install/winxppro/drivers/pciids/197B/2380’ not found [Advanced Micro Devices, Inc., AMD AHCI Compatible RAID Controller] /opt/pcbin/install/winxppro/drivers/drivers/preferred/ati_raid_sb7xx [(Standard-USB-Hostcontroller), Standard OpenHCD USB-Hostcontroller] No driver - device directory ’/opt/pcbin/install/winxppro/drivers/pciids/1002/4397’ not found [ATI Technologies Inc, ATI SMBus] /opt/pcbin/install/winxppro/drivers/drivers/preferred/ati_smbus USB-Devices [(Standard-USB-Hostcontroller), USB-Verbundgerät] /opt/pcbin/install/winxppro/drivers/drivers/preferred/brother_844x_pGerb [Microsoft, USB-Druckerunterstützung] /opt/pcbin/install/winxppro/drivers/drivers/preferred/brother_844x_pGerb Additional drivers [ati_hdaudio_azalia] /opt/pcbin/install/winxppro/drivers/drivers/additional/ati_hdaudio_azalia Exemple avec additional_drivers: ./show_drivers.py e5800 Manually selected drivers (additional) [hp_e5800] [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/hp_e5800/sp52852/Vista64/HDXHPAI3.inf] [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/hp_e5800/sp52852/Vista64/HDX861A.inf] [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/hp_e5800/sp52852/Vista64/HDXHPAI1.inf] [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/hp_e5800/sp52852/Vista64/HDXCPC.inf] [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/hp_e5800/sp52852/Vista64/HDXHPAI2.inf] [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/hp_e5800/sp50134/autorun.inf] [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/hp_e5800/sp50134/ibxHDMI/IntcDAud.inf] [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/hp_e5800/sp50134/HDMI/IntcHdmi.inf] [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/hp_e5800/sp50134/Graphics/kit24890.inf] [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/hp_e5800/sp50134/IIPS/Impcd.inf] [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/hp_e5800/sp54284/Realtek 64bit/hp64win7\ .inf] PCI-Devices [8086:27C8] Intel : Intel(R) N10/ICH7 Family USB Universal Host Controller - 27C8 /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/preferred/R293337/WIN7 [8086:27DA] Intel : Intel(R) N10/ICH7 Family SMBus Controller - 27DA /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/preferred/R293337/WIN7 [8086:27C9] Intel : Intel(R) N10/ICH7 Family USB Universal Host Controller - 27C9 /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/preferred/R293337/WIN7 [8086:27DF] Intel : Intel(R) ICH7 Family Ultra ATA Storage Controllers - 27DF /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/preferred/R293337/WIN7 [8086:27CA] Intel : Intel(R) N10/ICH7 Family USB Universal Host Controller - 27CA /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/preferred/R293337/WIN7 [8086:2E30] Intel : Intel(R) 4 Series Chipset Processor to I/O Controller - 2E30 11 / 49 opsi version 4.0.2 (Partie 2) Notes de version /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/not_preferred/x64/C/Intel/1 [8086:27CB] Intel : Intel(R) N10/ICH7 Family USB Universal Host Controller - 27CB /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/preferred/R293337/WIN7 [8086:2E32] Intel Corporation : Intel(R) G41 Express Chipset Manually selected [hp_e5800] /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/hp_e5800/\ sp50134/Graphics [8086:27CC] Intel : Intel(R) N10/ICH7 Family USB2 Enhanced Host Controller - 27CC /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/preferred/R293337/WIN7 [8086:244E] Intel : Intel(R) 82801 PCI-Brücke - 244E Using build-in windows driver This driver will not be integrated, because same device already integrated in: ’/opt/pcbin/install/win7-x64-\ professional-msdn/drivers/drivers/not_preferred/x64/C/Intel/1/dmi_pci.inf’ [8086:27D0] Intel : Intel(R) N10/ICH7 Family PCI Express Root Port - 27D0 /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/preferred/R293337/WIN7 [8086:27B8] Intel : Intel(R) ICH7 Family LPC Interface Controller - 27B8 /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/preferred/R293337/WIN7 [8086:27D2] Intel : Intel(R) N10/ICH7 Family PCI Express Root Port - 27D2 /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/preferred/R293337/WIN7 [8086:27C0] Intel : Intel(R) N10/ICH7 Family Serial ATA Storage Controller - 27C0 /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/preferred/R293337/WIN7 [8086:27D8] Microsoft : High Definition Audio-Controller No driver - device directory ’/opt/pcbin/install/win7-x64-professional-msdn/drivers/pciids/8086/27D8’ not found [10EC:8136] Realtek : Realtek RTL8102E/RTL8103E-Familie-PCI-E-Fast-Ethernet-NIC (NDIS 6.20) Manually selected [hp_e5800] /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/hp_e5800/\ sp54284/Realtek 64bit USB-Devices [0461:0010] No driver [0461:4D20] No driver [058F:6366] No driver [0461:0010] No driver (Standardsystemgeräte) : USB-Eingabegerät - vendor directory ’/opt/pcbin/install/win7-x64-professional-msdn/drivers/usbids/0461’ (Standardsystemgeräte) : USB-Eingabegerät - vendor directory ’/opt/pcbin/install/win7-x64-professional-msdn/drivers/usbids/0461’ Kompatibles USB-Speichergerät : USB-Massenspeichergerät - vendor directory ’/opt/pcbin/install/win7-x64-professional-msdn/drivers/usbids/058F’ (Standard-USB-Hostcontroller) : USB-Verbundgerät - vendor directory ’/opt/pcbin/install/win7-x64-professional-msdn/drivers/usbids/0461’ not found not found not found not found HD-Audio-Devices [10EC:0662] Realtek High Definition Audio Manually selected [hp_e5800] /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/hp_e5800/\ sp52852/Vista64 Exemple avec byAudit: ./show_drivers.py pctry5detlef Manually selected drivers (additional) [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/byAudit/nvidia/awrdacpi] [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/byAudit/nvidia/awrdacpi/pctry5detlef/\ Display/Radeon X300-X550-X1050 Series Secondary (Microsoft Corporation - WDDM)/atiilhag.inf] [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/byAudit/nvidia/awrdacpi/pctry5detlef/\ Display/Radeon X300-X550-X1050 Series (Microsoft Corporation - WDDM)/atiilhag.inf] [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/byAudit/nvidia/awrdacpi/pctry5detlef/\ MEDIA/Realtek AC’97 Audio/oem21.inf] PCI-Devices [1002:5B70] ATI Technologies Inc. : Radeon X300/X550/X1050 Series Secondary (Microsoft Corporation - WDDM) Manually selected [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/byAudit/nvidia/\ awrdacpi] /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/byAudit/nvidia/awrdacpi/\ pctry5detlef/Display/Radeon X300-X550-X1050 Series Secondary (Microsoft Corporation - WDDM) Multiple selected [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/byAudit/nvidia/\ awrdacpi] /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/byAudit/nvidia/awrdacpi/\ pctry5detlef/Display/Radeon X300-X550-X1050 Series (Microsoft Corporation - WDDM) [10DE:0053] (Standard-IDE-ATA/ATAPI-Controller) : Standard-Zweikanal-PCI-IDE-Controller No driver - device directory ’/opt/pcbin/install/win7-x64-professional-msdn/drivers/pciids/10DE/0053’ not found [10DE:005D] (Standardsystemgeräte) : PCI Standard-PCI-zu-PCI-Brücke No driver - device directory ’/opt/pcbin/install/win7-x64-professional-msdn/drivers/pciids/10DE/005D’ not found [1022:1100] AMD : AMD HyperTransport(tm)-Konfiguration Using build-in windows driver [10DE:0054] (Standard-IDE-ATA/ATAPI-Controller) : Standard-Zweikanal-PCI-IDE-Controller opsi version 4.0.2 (Partie 2) Notes de version 12 / 49 /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/preferred/evb_potsdam_fsc__esprimo_p625/\ FTS_NVIDIASATAAHCIDRIVERVISTA64V103042MCP78__1026963/NVIDIA_SATA_AHCI_DRIVER_Vista64_V10.3.0.42_MCP78 (textmode \ capable) [1022:1101] AMD : AMD-Adresszuordnungskonfiguration Using build-in windows driver [10DE:0055] (Standard-IDE-ATA/ATAPI-Controller) : Standard-Zweikanal-PCI-IDE-Controller /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/preferred/evb_potsdam_fsc__esprimo_p625/\ FTS_NVIDIASATAAHCIDRIVERVISTA64V103042MCP78__1026963/NVIDIA_SATA_AHCI_DRIVER_Vista64_V10.3.0.42_MCP78 (textmode \ capable) [1022:1102] AMD : AMD DRAM und HyperTransport(tm)-Nachverfolgungsmoduskonfiguration Using build-in windows driver [10DE:0057] NVIDIA : NVIDIA nForce-Netzwerkcontroller Using build-in windows driver [1022:1103] AMD : Sonstige AMD-Konfiguration Using build-in windows driver [10DE:0059] Realtek : Realtek AC’97 Audio Manually selected [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/byAudit/nvidia/\ awrdacpi] /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/byAudit/nvidia/awrdacpi/\ pctry5detlef/MEDIA/Realtek AC’97 Audio [10DE:005E] NVIDIA : NVIDIA nForce4 HyperTransport-Brücke /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/preferred/ga-ma78-pcbon4/chipset_win7-64/SMBUS [104C:8025] Texas Instruments : OHCI-konformer Texas Instruments 1394-Hostcontroller No driver - device directory ’/opt/pcbin/install/win7-x64-professional-msdn/drivers/pciids/104C/8025’ not found [10DE:005A] (Standard-USB-Hostcontroller) : Standard OpenHCD USB-Hostcontroller No driver - device directory ’/opt/pcbin/install/win7-x64-professional-msdn/drivers/pciids/10DE/005A’ not found [10DE:0050] (Standardsystemgeräte) : PCI Standard-ISA-Brücke No driver - device directory ’/opt/pcbin/install/win7-x64-professional-msdn/drivers/pciids/10DE/0050’ not found [10DE:005B] (Standard-USB-Hostcontroller) : Standard PCI-zu-USB erweiterter Hostcontroller No driver - device directory ’/opt/pcbin/install/win7-x64-professional-msdn/drivers/pciids/10DE/005B’ not found [1002:5B60] ATI Technologies Inc. : Radeon X300/X550/X1050 Series (Microsoft Corporation - WDDM) Manually selected [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/byAudit/nvidia/\ awrdacpi] /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/byAudit/nvidia/awrdacpi/\ pctry5detlef/Display/Radeon X300-X550-X1050 Series Secondary (Microsoft Corporation - WDDM) Multiple selected [/opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/byAudit/nvidia/\ awrdacpi] /opt/pcbin/install/win7-x64-professional-msdn/drivers/drivers/additional/byAudit/nvidia/awrdacpi/\ pctry5detlef/Display/Radeon X300-X550-X1050 Series (Microsoft Corporation - WDDM) [10DE:0052] NVIDIA : NVIDIA nForce PCI-Systemverwaltung Using build-in windows driver [10DE:005C] (Standardsystemgeräte) : PCI Standard-PCI-zu-PCI-Brücke No driver - device directory ’/opt/pcbin/install/win7-x64-professional-msdn/drivers/pciids/10DE/005C’ not found USB-Devices [1241:1111] (Standardsystemgeräte) : USB-Eingabegerät No driver - vendor directory ’/opt/pcbin/install/win7-x64-professional-msdn/drivers/usbids/1241’ not found HD-Audio-Devices No devices installed TIPS – Les noms de répertoires NDIS1 sont pilotes Vista ; NDIS2 sont pilotes Win7 – Certains pilote de puces contiennent des fichiers de description, sans pour autant fournir des pilotes. Un exemple serait cougar.inf de Intel. Si un tel Pseudo-Driver était placé dans additional_drivers (ou byAudit), les autres pilotes peuvent être exclus. Il est préférable de déplacer ces répertoires au sous répertoire preferred. – Les pilotes SATA et SATA-RAID se référer au même PCI ID. Le pilote SATA-RAID ne peut pas fonctionner avec un système à disque unique. – Vérifiez la sortie de ./show_drivers attentivement ! opsi version 4.0.2 (Partie 2) Notes de version 13 / 49 Chapitre 6 Inventaire L’inventaire peut être ordonnée avec les produits Localboot hwaudit et swaudit ou avec le produit Netboot hwinvent. 6.1 Inventaire Hardware L’inventaire matériel est contrôlé par un fichier de configuration opsi. Cela signifie que les informations sur lesquelles les données seront compilées ne sont pas enchâssé dans les produits correspondants hwaudit et hwinvent. En fait, les produits seront contrôlées par un fichier de configuration. Le fichier de configuration sera appelée et interprété avec chaque envoi du service Web. Simultanément, le fichier de configuration détermine la structure de la base de données, de sorte qu’un changement de ce fichier de configuration modifiera le schéma de base de données. Le fichier de configuration est /etc/opsi/hwaudit/opsihwaudit.conf. Tous le objets inventoriés sont définis et décrits dans ce fichier, comme la façon dont ces objets et leurs données sont instanciées (sous Linux et Windows). Ce fichier va également définir la structure de donnée associée. Pour être plus précis, ce fichier de configuration contient les définitions d’héritage orienté objet. La raison à cela est le fait que beaucoup d’objets contiennent des identiques champs de données (ex. comme Nom et Vendeur). Les informations générales seront définies dans des classes de base virtual du matériel. Le objets d’inventaire réels sont alors des classes structural du matériel, lorsque de nombreuses propriétés pourraient éventuellement être héritée de la substitution des classes de base virtual. L’exemple suivant peut être instructif: Dans un premier temps le fichier de configuration définit une virtual Class appelé "BASIC_INFO". Celle-ci définit les propriétés (Values): – "name" – "description" Vient ensuite la virtual Class appelé "HARDWARE_DEVICE", qui hérite de tous les paramètres supplémentaires de "BASIC_INFO", et inclut les éléments suivants: – "vendor" – "model" – "serialNumber" Suivant suit le premier objet qui se trouve dans l’inventaire, qui est la première structural Class appelé "COMPUTER_SYSTEM", qui hérite de l’ensemble des paramètres supplémentaires de "HARDWARE_DEVICE", elle est définie (et écrase les propriétés) comme: – "name" – "systemType" – "totalPhysicalMemory" La définition de la classe comprendra une description de différents paramètres et leur Values: opsi version 4.0.2 (Partie 2) Notes de version 14 / 49 – Définition de la classe: – "Type" est "STRUCTURAL" ou "VIRTUAL" – "Super" cette classe dont elle va être héritée. – "Opsi" donne la nom de la classe, qui sera utilisé par la suite dans opsi comme un nom d’affichage. De plus, la définition de classe permet de définir la manière dont les données seront compilées. Ces informations peuvent également être trouvés dans la définition de Values. – Pour l’inventaire sous Linux: – "Linux": "[<commande>]<paramètre>" Exécute la commande <commande> sur la ligne de commande, avec l’argument <paramètre>. – "Python": "<code python avec espace réservé>" Exécute le code Python dont la sortie sera placé dans l’espace réservé qui est comprise entre les signes "#" (voir l’exemple ci-dessous). – Pour l’inventaire sous Windows: – "WMI": "<wmi select statement>" WMI s’exécute lorsqu’il est appelé – "Cmd": "<Objet texte Python avec espace réservé>" Dans ce cas, c’est le chemin relatif au programme exécutable Python, dont la sortie sera placé dans l’espace réservé. – "Registry": "[<clé de registre>] <nom de la valeur>" La valeur de <nom de la valeur> sera lu à partir de la base de registre, et donne le nom de la clé <clé de registre>. Le registre doit être lu d’une manière spécifique à l’architecture. Cela signifie que le secteur 64 bits seront lus sur un système 64 bits. – Définition de la valeur: – "Type": "<MySQL Database type>" <MySQL Database type> donne le type de base de données MySQL qui sera appliqué à cette valeur (ex. une chaîne Python sera "<MySQL Datenbase type>"="varchar(200)"). – "Scope": "<portée>" Le champ <portée> sera utilisé de la manière suivante: "g" signifie: Cet attribut est le même dans tous les liens de ces types. "i" signifie: Cet attribut peut avoir différents types de valeurs avec ces liens. – "Opsi": "<id>" "<id>" est le nom interne des champs. Cela peut être trouvé dans le fichier situé dans /etc/opsi/hwaudit/ locales . – "WMI": "<id ou commande>" <id ou commande> est soit le nom d’une commande WMI qui affiche la valeur ou une seule commande WMI. Si la commande WMI est donnée dans la définition de classe (ex. "select * from Win32_ComputerSystem") , les résultats sont attribués aux variables "WMI" dans la définition de la classe "Values" . S’il n’y a pas de commande WMI, les variables "WMI" dans la section "Values" sont des commandes WMI (voir l’exemple ci-dessous). – "Linux": "<id>" Cela fait partie de la définition de classe, <id> est le nom de la valeur affichée lorsque la commande Linux est donnée. – "Condition": "<condition>" <condition> est une condition qui doit être remplie, avec laquelle les Value seront déterminés. Ainsi, par exemple si la <condition> est définie comme "vendor=[dD]ell*", ensuite les valeurs de "vendor" doivent contenir Dell ou dell. Voici un exemple de la classe "COMPUTER_SYSTEM": opsi version 4.0.2 (Partie 2) Notes de version 15 / 49 { "Class": { "Type": "STRUCTURAL", "Super": [ "HARDWARE_DEVICE" ], "Opsi": "COMPUTER_SYSTEM", "WMI": "select * from Win32_ComputerSystem", "Linux": "[lshw]system" }, "Values": [ { "Type": "varchar(100)", "Scope": "i", "Opsi": "name", "WMI": "Name", "Linux": "id" }, { "Type": "varchar(50)", "Scope": "i", "Opsi": "systemType", "WMI": "SystemType", "Linux": "configuration/chassis" }, { "Type": "bigint", "Scope": "i", "Opsi": "totalPhysicalMemory", "WMI": "TotalPhysicalMemory", "Linux": "core/memory/size", "Unit": "Byte" }, { "Type": "varchar(50)", "Scope": "i", "Opsi": "dellexpresscode", "Condition": "vendor=[dD]ell*", "Cmd": "#dellexpresscode\dellexpresscode.exe#.split(’=’)[1]", "Python": "str(int(#{’COMPUTER_SYSTEM’:’serialNumber’,’CHASSIS’:’serialNumber’}#,36))" } ] }, En ce qui concerne les commandes "WMI", la définition de classe contient "select * from Win32_ComputerSystem". Cette commande est exécutée par WMI, qui comporte des colonnes de sortie "Name", "SystemType", et "TotalPhysicalMemory". Ces valeurs sont ensuite affectés aux valeurs de opsi "name", "systemType", et "totalPhysicalMemory". Particulièrement intéressant est ici la dernière valeur "dellexpresscode": Ceci est vraiment utile quand l’IT s’interroge sur un ordinateur Dell, sur son état. Le programme en ligne de commande dellexpresscode.exe a été conçu pour Windows, et indique à hwaudit.exe que les dellexpresscode est fourni dans le répertoire dellexpresscode\. Les éléments entre # sont des espaces réservés pour la sortie. Ainsi, la déclaration "dellexpresscode\dellexpresscode.exe" exécute dellexpresscode.exe, et produit une sortie sous la forme : dellexpresscode=123456789. La valeur qui sera utilisé est l’une après la séparation sur l’espace réservé =, ce qui est fait en Python en utilisant la méthode split () comme tel .split(’=’)[1] . Sous Linux, on trouvera une valeur pour serialNumber pour les éléments (COMPUTER_SYSTEM ou CHASSIS), qui est ensuite utilisé pour attribuer les codes Dell Express. L’appel int(,36) convertit la sortie nombre entier en base-36. Les noms opsi des valeurs seront convertis en utilisant les fichiers trouvés dans /etc/opsi/hwaudit/locales/*. Le fichier /etc/opsi/hwaudit/locales/en_US peut contenir des traductions telles que: COMPUTER_SYSTEM = Computer COMPUTER_SYSTEM. systemType = Type Le nom de la classe COMPUTER_SYSTEM sera traduit en "Computer". L’attribut Opsi "systemType" de la classe COMPUTER_SYSTEM sera traduit en "Type" pour l’anglais. Si l’on regarde dans le fichier /etc/opsi/hwaudit/loc opsi version 4.0.2 (Partie 2) Notes de version 16 / 49 ales/de_DE, on verrait que l’attribut "COMPUTER_SYSTEM.systemType" sera traduit en "Typ" pour l’allemand. Enfin, une autre suggestion: Lorsqu’un nouveau champ est créé, il doit être placé dans ces fichiers, même si ne traduit pas explicitement le terme. Ceci évite tous les messages de "Warning". 6.2 Inventaire des logiciels L’inventaire logiciel se fait avec le produit Localboot swaudit. Dans ce cas, les informations seront hérités de la désinstallation du Registre, et des informations supplémentaires seront obtenues à partir des correctifs et des clés de licence. Le code source de ces paquets peut être trouvé ici: https://svn.opsi.org/listing.php?repname=swaudit https://svn.opsi.org/listing.php?repname=hwaudit opsi version 4.0.2 (Partie 2) Notes de version 17 / 49 Chapitre 7 Les modifications apportées au nouveau opsilinux-bootimage opsi-linux-bootimage (version 20120728-1) fonctionne en interne avec dhclient au lieu de pump pour la demande initiale dhcp. Le programme pump a été utilisé dans la version précédente parce que dhclient ne traite pas le drapeau next-server. Ce drapeau a été utilisé par opsi pour définir l’adresse du opsiserver. Il n’est pas possible de configurer le programme pump, et il donne un "hardreset" sur la carte réseau pour actualiser l’adresse ip du client. Cela provoque de nombreux problèmes dans différentes infrastructures de réseau. Pour cette raison, nous avons décidé d’utiliser dhclient au lieu de pump. Cette modification provoque le problème que opsi-clientbootcd demande le opsi-server même si vous choisissez "avec DHCP" sur le menu démarrer. opsi version 4.0.2 (Partie 2) Notes de version 18 / 49 Chapitre 8 Les modifications apportées à opsiconfd Le service web opsi sera construit comme "noarch". Pour certaines distributions basées rpm il a été construit pour une architecture spécifque. Mais ce n’est plus nécessaire, parce qu’il n’y a pas de binaires dans ce package. Cela pourrait produire des problèmes pour certaines distributions lorsque vous essayez de mettre à jour ces paquets. Si vous obtenez une erreur comme: "opsiconfd-4.0.2.3-1.1.i386.rpm couldn’t be found" , alors vous devez réinstaller le paquet opsiconfd manuellement à partir du repository. Les scripts d’initialisation ont été modifiés ainsi. Le niveaux d’exécution 4 ne sera pas utilisé sur des distributions basées rpm. opsi version 4.0.2 (Partie 2) Notes de version 19 / 49 Chapitre 9 Authentification opsi PAM opsi utilise certains modules PAM pour authentifier l’utilisateur. Avec cette nouvelle version, opsi utilise différents modules pour certaines distributions. La liste suivante vous donnera un bref aperçu sur les modules qui sont utilisés: Par défaut common-auth SLES sshd CentOS et RedHat system-auth RedHat 6 password-auth Vous pouvez voir dans la liste ci-dessus, lequel différentes modules PAM sont utilisés. Cependant, il pourrait être le cas que un autre module PAM est nécessaire, en fonction de la configuration locale. Le code source peut être modifié pour tenir compte de ces modifications. Pour plus de souplesse, sans changer le code source, il est possible avec cette version de créer un fichier nommé: opsi-auth dans le répertoire /etc/pam.d/. Si ce fichier existe, opsi va utiliser cette configuration automatiquement au lieu de les modules listés ci-dessus. L’exemple suivant vous montrera la nouvelle fonctionnalité: Si vous exécutez un système debian/ubuntu et vous obtenez un erreur d’authentification PAM, même si vous pouvez vous connecter avec les mêmes informations d’identification via ssh sur le serveur, alors vous pouvez créer le fichier: /etc/pam.d/opsi-auth avec le contenu suivant: @include sshd Après le redémarrage de opsiconfd, opsi utilisera automatiquement le module sshd-PAM pour l’authentification des utilisateurs. opsi version 4.0.2 (Partie 2) Notes de version 20 / 49 Chapitre 10 /etc/opsi/opsi.conf depuis la version 4.0.2-2 Configurations générales opsi. Exemple: [groups] fileadmingroup = pcpatch Contexte: L’installation classique avec l’utilisateur: pcpatch avec le groupe principal: pcpatch ne fonctionne pas avec Samba 4. Samba 4 a des restrictions fondamentales sur Active-Directory, de sorte que les groupes avec le même nom que l’utilisateur (comme c’est courant dans Unix/Linux) ne sont plus autorisés. Pour cette raison, un nouveau fichier de configuration a été mis en place: /etc/opsi/opsi.conf, qui permettra de contrôler la façon dont les groupes auront accès à Samba-Access. Par exemple, UCS 3 va utiliser ce fichier pour renommer le groupe pcpatch vers opsifileadmins. Cela signifie que l’utilisateur qui appartient au groupe pcpatch sous UCS 3, doit maintenant appartenir au groupe opsifileadmins. Cette particularité est seulement pour UCS 3 et n’est pas le même pour d’autres distributions (pour autant qu’ils utilisent Samba 4, ou ont installé Samba 4). opsi version 4.0.2 (Partie 2) Notes de version 21 / 49 Chapitre 11 Trouver des Switches Silent ou Unattended Dans le mode „Unattended" ou „silent", les arguments de ligne de commande sont appelées pendant l’installation noninteractive, et ces arguments de ligne de commande peuvent être trouvés dans le programme d’installation d’origine. Le problème est alors de trouver les arguments appropriés de ligne de commande du programme d’installation d’origine. Identifier le fabricant du programme d’installation: La plupart des programmes d’installation sont construits en utilisant Inno, NSIS, Installshield ou Wise. Chacun de ces frameworks possède son propre interrupteur. Les méthode suivante peut être utilisée pour déterminer le framework et les autres informations nécessaires: Les chaînes d’entrée peut être déterminée en utilisant le programme de ligne de commande strings étant donné le programme d’installation setup.exe, et le nom du framework peut être trouvé en utilisant grep ou findstr. La même méthode est utilisée dans opsi-setup-detector. Voir l’exemple ci-dessous: Figure 11.1 – opsi setup detector Ce programme GUI peut être appelé depuis le menu contextuel de Windows Explorer. opsi version 4.0.2 (Partie 2) Notes de version 22 / 49 Figure 11.2 – opsi setup detector in Windows Explore context menu opsi setup detector fait partie du paquet opsi-adminutils. Le programme peut être téléchargé comme une application autonome à partir de: http://download.uib.de/opsi4.0/helper/opsisetupdetector.exe 11.1 Script pour les installations dans le contexte d’un administrateur local Le produit opsi-template-with-admin a été complètement révisé: – Le programme externe psgetsid.exe est désormais plus nécessaire. – Dans le script maître, il y a seulement trois variables à modifier qui sont indiquées avec Please edit the following values. – Le script local dispose désormais d’un accès complet au serveur opsi. Cela signifie que des fonctions telles que GetProductProperty ou OpsiServiceCall ou l’accès à la gestion des licences fonctionnent comme d’habitude. – Également la fonction isFatalError fonctionne désormais comment vous vous y attendez. – Le verrouillage du clavier et de la souris et du LogLevel sont désormais contrôlé par une propriété du produit. – Le produit nécessite opsi-winst >= 4.11.3.3 opsi version 4.0.2 (Partie 2) Notes de version 23 / 49 Chapitre 12 opsi-winst 4.11.3 12.1 Début et Options de ligne de commande Depuis la version 4.11.3, le programme opsi-winst contient un manifeste avec la déclaration: <requestedExecutionLevel level="highestAvailable" />. Cela signifie que si opsi-winst est appelée sur un OS NT6 par un administrateur, il fonctionnera comme un processus élevé. Si opsi-winst est appelée avec des privilèges d’utilisateur normaux, il sera exécuté avec les privilèges de cet utilisateur. 12.2 Constantes globales de texte 12.2.1 opsi-winst Chemin et Répertoire %opsiScriptHelperPath% Correspond à: %ProgramFiles32Dir%\opsi.org\opsiScriptHelper Chemin dans lequel le programme d’aide, les bibliothèques, et les éléments nécessaires à l’exécution du script peuvent être installés. Depuis 4.11.3.2 12.3 Sections primaires 12.3.1 Réaction aux erreurs – FatalOnSyntaxError = <valeur booléenne> – true = (par défaut) Si une erreur de syntaxe se produit, l’exécution du script sera interrompu et le résultat du script sera mis à failed. En outre, le message Syntax Error sera transmis au serveur opsi. – false = Si une erreur de syntaxe se produit, l’exécution du script ne sera pas interrompu et le résultat du script sera mis à success. Dans les deux cas ci-dessus, l’erreur de syntaxe sera enregistré comme Critical. Dans les deux cas ci-dessus, le compteur d’erreurs sera augmenté de 1. Depuis 4.11.3.2 Dans les anciennes versions il n’y avait pas la journalisation des erreurs de syntaxe, aucune augmentation de compteur d’erreur, et le résultat était toujours mis à success. opsi version 4.0.2 (Partie 2) Notes de version 12.3.2 24 / 49 Afficher le mode fenêtre Pour changer les modes de la façon dont la fenêtre de opsi-winst est affiché, utilisez ces commandes: – NormalizeWinst configure la fenêtre de opsi-winst au mode normal – IconizeWinst configure la fenêtre de opsi-winst au mode minimisés – RestoreWinst configure la fenêtre de opsi-winst au mode maximisée 12.3.3 Les commandes Include Attention L’utilisation des commandes include peut conduire à la confusion du code. Utilisez avec prudence si vous êtes un débutant. 12.3.3.1 Les commandes Include: Syntaxe Les commandes include_* peuvent être utilisés pour ajouter des fichiers de script externes au script en cours d’exécution pendant l’exécution. La commande include_* peut inclure des fichiers de script externes, soit en insert (après la ligne en cours) ou comme un ajout (après la dernière ligne). Les commandes include peuvent être utilisés n’importe où dans une section primaire. Les fichiers de script externes peuvent contenir leurs propres commandes include. Les commandes include sont disponibles depuis la version 4.11.3 – include_insert <nom du fichier> insère <nom du fichier> après la ligne courante dans le script en cours d’exécution. Ainsi, la première ligne du fichier inclus est la ligne suivante qui sera exécutée par opsi-winst. – include_append <nom du fichier> ajoute le contenu de <nom du fichier> à l’exécution du script. Ce type d’insertion est normalement utilisée pour inclure des sections d’une bibliothèque. Dans les deux cas <nom du fichier> est: – Un chemin d’accès complet à un fichier existant. – Un fichier existant dans %ScriptPath% – Un fichier dans %opsiScriptHelperPath%\lib Est équivalent à: %ProgramFiles32Dir%\opsi.org\opsiScriptHelper\lib – Un fichier existant dans %WinstDir%\lib Les tests pour l’emplacement de <nom du fichier> sont effectuées dans l’ordre ci-dessus. opsi-winst utilise le premier fichier qu’il trouve qui a un nom correspondant. Exemple: Quand nous exécutons un script qui contient les commandes suivantes: [Actions] include_append "section_Files_del_tmp_dummy.opsiinc" include_insert "include-test1.opsiinc" Le fichier include-test1.opsiinc est exécuté en premier. Le contenu du fichier inclus include-test1.opsiinc est: opsi version 4.0.2 (Partie 2) Notes de version 25 / 49 DefVar $inctestvar$ set $inctestvar$ = "inctest" Files_del_tmp_dummy include_append "section_Files_copy_inctest.opsiinc" Files_copy_inctest if fileExists("c:\opsi.org\tmp\dummy.txt") comment "passed" else comment "failed" set $TestResult$ = "not o.k." LogWarning "include test failed" endif if fileExists("%scriptpath%\test-files\dummy.txt") comment "passed" else comment "failed" set $TestResult$ = "not o.k." LogWarning "include test failed" endif Files_del_tmp_dummy Le contenu du fichier inclus section_Files_copy_inctest.opsiinc est: [Files_copy_inctest] copy "%scriptpath%\test-files\dummy.txt" "c:\opsi.org\tmp" Depuis, l’appel à Files_del_tmp_dummy se passe dans include-test1.opsiinc sans que section_Files_del_ tmp_dummy.opsiinc soit référencé à l’intérieur de include-test1.opsiinc, nous devons appeler include_append "section_Files_del_tmp_dummy.opsiinc" au tout début de notre script. Autrement, opsi-winst relèvera que Files_del_tmp_dummy n’est pas définie. Le contenu du fichier inclus section_Files_del_tmp_dummy.opsiinc est: [Files_del_tmp_dummy] del -f "c:\opsi.org\tmp\dummyt.txt" 12.3.3.2 Les commandes Include: Library Les suivants fichiers include sont livrés avec la version 4.11.3, et sont situés dans %WinstDir%\lib: insert_check_exit_code.opsiinc: ; opsi include file DefVar $ExitCode$ include_append "section_sub_check_exitcode.opsiinc" insert_get_licensekey.opsiinc: ; opsi include file DefVar $LicenseRequired$ DefVar $LicenseKey$ DefVar $LicensePool$ opsi version 4.0.2 (Partie 2) Notes de version 26 / 49 include_append "section_sub_get_licensekey.opsiinc" section_sub_check_exit_code.opsiinc: ;opsi include file [Sub_check_exitcode] comment "Test for installation success via exit code" set $ExitCode$ = getLastExitCode ; informations to exit codes see ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx ; http://msdn.microsoft.com/en-us/library/aa368542.aspx if ($ExitCode$ = "0") comment "Looks good: setup program gives exitcode zero" else comment "Setup program gives a exitcode unequal zero: " + $ExitCode$ if ($ExitCode$ = "1605") comment "ERROR_UNKNOWN_PRODUCT 1605 This action is only valid for products that are currently installed." comment "Uninstall of a not installed product failed - no problem" else if ($ExitCode$ = "1641") comment "looks good: setup program gives exitcode 1641" comment "ERROR_SUCCESS_REBOOT_INITIATED 1641 The installer has initiated a restart. This message is indicative of a success." ExitWindows /Reboot else if ($ExitCode$ = "3010") comment "looks good: setup program gives exitcode 3010" comment "ERROR_SUCCESS_REBOOT_REQUIRED 3010 A restart is required to complete the install. This message is indicative of a success." ExitWindows /Reboot else logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$ isFatalError "Exit Code: "+ $ExitCode$ endif endif endif endif section_sub_get_licensekey.opsiinc: ; opsi include file [Sub_get_licensekey] if opsiLicenseManagementEnabled comment "License management is enabled and will be used" comment "Trying to get a license key" Set $LicenseKey$ = demandLicenseKey ($LicensePool$) ; If there is an assignment of exactly one license pool to the product the following call is possible: ; Set $LicenseKey$ = demandLicenseKey ("", $ProductId$) ; ; If there is an assignment of a license pool to a windows software id, it is possible to use: opsi version 4.0.2 (Partie 2) Notes de version 27 / 49 ; DefVar $WindowsSoftwareId$ ; $WindowsSoftwareId$ = "..." ; Set $LicenseKey$ = demandLicenseKey ("", "", $WindowsSoftwareId$) DefVar $ServiceErrorClass$ set $ServiceErrorClass$ = getLastServiceErrorClass comment "Error class: " + $ServiceErrorClass$ if $ServiceErrorClass$ = "None" comment "Everything fine, we got the license key ’" + $LicenseKey$ + "’" else if $ServiceErrorClass$ = "LicenseConfigurationError" LogError "Fatal: license configuration must be corrected" LogError getLastServiceErrorMessage isFatalError $ServiceErrorClass$ else if $ServiceErrorClass$ = "LicenseMissingError" LogError "Fatal: required license is not supplied" isFatalError $ServiceErrorClass$ endif endif endif else LogError "Fatal: license required, but license management not enabled" isFatalError "No Licensemanagement" endif 12.3.4 Manipulation de chaîne – contains(<chaîne>, <sous-chaîne>) Une fonction booléenne qui retourne true si <chaîne> contient <sous-chaîne>. Cette fonction est sensible à la casse. Disponible depuis 4.11.3 Exemple: set $ConstTest$ = "1xy451Xy451XY45" set $CompValue$ ="xy" if contains($ConstTest$, $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $CompValue$ ="xY" if not(contains($ConstTest$, $CompValue$)) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif – stringReplace(<chaîne>, <ancien motif>, <nouveau motif>) retourne une chaîne, qui présente toutes les occurrences de <ancien motif> remplacées par <nouveau motif> de la chaîne d’entrée <chaîne>. Disponible depuis 4.11.3 Exemple: opsi version 4.0.2 (Partie 2) Notes de version 28 / 49 set $ConstTest$ = "123451234512345" set $CompValue$ = stringReplace("1xy451Xy451XY45","xy","23") if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif – strLength(<chaîne>) Retourne le nombre de caractères dans <chaîne> Disponible depuis 4.11.3 Exemple: set $tmp$ = "123456789" set $ConstTest$ = "9" set $CompValue$ = strLength($tmp$) if $ConstTest$ = $CompValue$ comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $tmp$ = "" set $ConstTest$ = "0" set $CompValue$ = strLength($tmp$) if $ConstTest$ = $CompValue$ comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif – strPos(<chaîne>, <sous-chaîne>) retourne la position de la première <sous-chaîne> dans <chaîne>. Si <sous-chaîne> n’est pas trouvé, alors "0" est la valeur de retour. La fonction est sensible à la casse. Disponible depuis 4.11.3 Exemple: set $tmp$ = "1xY451Xy451xy45" set $ConstTest$ = "7" set $CompValue$ = strPos($tmp$,"Xy") if $ConstTest$ = $CompValue$ comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $tmp$ = lower("1xY451Xy451xy45") set $ConstTest$ = "2" set $CompValue$ = strPos($tmp$,lower("xy")) if $ConstTest$ = $CompValue$ comment "passed" else set $TestResult$ = "not o.k." opsi version 4.0.2 (Partie 2) Notes de version 29 / 49 LogWarning "failed" endif – strPart(<chaîne>, <la position de départ>, <nombre de caractères>) retourne la partie de <chaîne> commençant par <la position de départ> et inclue les suivants <nombre de caractères>. Si il y a moins de <nombre de caractères> après <la position de départ>, la chaîne retournée sera le reste des caractères après <la position de départ>. Le comptage des caractères commence par 1. Disponible depuis 4.11.3 Exemple: set $tmp$ = "123456789" set $ConstTest$ = "34" set $CompValue$ = strPart($tmp$,"3","2") if $ConstTest$ = $CompValue$ comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $tmp$ = "123456789" set $ConstTest$ = "56789" set $CompValue$ = strPart($tmp$, strPos($tmp$,"56"),strLength($tmp$)) if $ConstTest$ = $CompValue$ comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif – unquote(<chaîne>,<chaîne quote>) retourne la version sans guillemets de la <chaîne>, si <chaîne> est cité avec <chaîne quote> Un seul caractère (le premier caractère) de <chaîne quote> est acceptée comme un délimiteur. Les espaces en début sont ignorés. Disponible depuis 4.11.2.1 set $ConstTest$ = "b" set $CompValue$ = unquote("’b’", "’") comment "compare values" if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif comment "double quote" set $ConstTest$ = "b" set $CompValue$ = unquote(’"b"’, ’"’) comment "compare values" if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif comment "quote string will be trimmed and then only the first char is used" opsi version 4.0.2 (Partie 2) Notes de version 30 / 49 comment "note: brackets are different chars" set $ConstTest$ = "b]" set $CompValue$ = unquote("[b]", " [{ ") comment "compare values" if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif comment "not usable to remove brackets" set $ConstTest$ = "b]" set $CompValue$ = unquote("[b]", "[") set $CompValue$ = unquote($CompValue$,"]") set $CompValue$ = unquote("[b]", "]") set $CompValue$ = unquote($CompValue$,"[") set $CompValue$ = unquote(unquote("[b]", "["),"]") comment "compare values" if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif comment "if string not quoted it will be come back without changes" set $ConstTest$ = "b" set $CompValue$ = unquote("b", "’") comment "compare values" if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif 12.3.5 Autres Fonctions sur les chaînes – getDiffTimeSec retourne une chaîne avec le nombre entier de secondes écoulées depuis le dernier appel de marktime. Disponible depuis 4.11.3.1 – SidToName(<sid connu>) retourne une chaîne avec le nom localisé du groupe avec le <sid connu>. Par exemple, si <sid connu> est égal à S-1-5-32-544 alors SidToName retourne Administrators. Disponible depuis 4.11.3.1 – GetMyIpByTarget(<adresse ip cible>) retourne une liste des adresses IP, qui tentent de rejoindre le système d’exploitation à <adresse ip cible>. Cette fonction retourne une valeur qui est plus sûr que la constante %IPAddress%. Disponible depuis 4.11.3.1 Example: set $CompValue$ = getMyIpByTarget("%opsiServer%") – GetIpByName(<ip addr / ip name>) renvoie les adresses IP des ordinateurs avec le <ip addr / ip name> Disponible depuis 4.11.3.2 opsi version 4.0.2 (Partie 2) Notes de version 31 / 49 set $ConstTest$ = "%IPAddress%" set $string1$ = "%IPAddress%" set $CompValue$ = getIpByName($string1$) if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $CompValue$ = getIpByName("%HostID%") if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $CompValue$ = getIpByName("%PCName%") if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif – getLastExitCode renvoie une chaîne qui contient les valeur du code de sortie du dernier processus appelé par une section WinBatch / DosBatch / ExecWith. Lorsque vous utilisez une section DosBatch ou ExecWith, vous obtiendrez normalement le code de sortie de l’interprète qui a été appelé. Pour obtenir le code de sortie du script, vous devez le définir explicitement. Exemple: DosInAnIcon_exit1 set $ConstTest$ = "1" set $CompValue$ = getLastExitCode if ($ConstTest$ = $CompValue$) comment "DosBatch / DosInAnIcon exitcode passed" else set $TestResult$ = "not o.k." LogWarning "DosBatch / DosInAnIcon exitcode failed" endif [DosInAnIcon_exit1] rem create an errolevel= 1 VERIFY OTHER 2> NUL echo %ERRORLEVEL% exit %ERRORLEVEL% 12.3.6 Les expressions booléennes – runningAsAdmin retourne true si le script en cours d’exécution a été exécuté avec des privilèges d’administrateur. Disponible depuis 4.11.1.1 opsi version 4.0.2 (Partie 2) Notes de version 32 / 49 – isLoginScript retourne true si le script en cours d’exécution a été appelé comme userLoginScript utilisant l’extension opsi User Profile Management. Disponible depuis 4.11.2.1 – contains(<chaîne>, <sous-chaîne>) Fonction booléenne qui retourne true si <chaîne> contient <sous-chaîne>. Cette fonction est sensible à la casse. Disponible depuis 4.11.3 – isNumber(<chaîne>) Fonction booléenne qui retourne true si <chaîne> représente un nombre entier. Disponible depuis 4.11.3 12.3.7 Les listes de chaînes du Registre – getRegistryKeyList32(<clé de registre>) Retourne une liste de chaînes avec les noms de toutes les clés à l’intérieur de <clé de registre>. 32 Bit mode (avec redirection). Disponible depuis 4.11.3 – getRegistryKeyList64(<clé de registre>) Retourne une liste de chaînes avec les noms de toutes les clés à l’intérieur de <clé de registre>. 64 Bit mode (sans redirection). Disponible depuis 4.11.3 – getRegistryKeyListSysnative(<clé de registre>) Retourne une liste de chaînes avec les noms de toutes les clés à l’intérieur de <clé de registre>. Mode (redirection) dépend de l’architecture du système d’exploitation. Disponible depuis 4.11.3 – getRegistryVarList32(<clé de registre>) Retourne une liste de chaînes avec le noms de toutes les entrées de valeur associée à la clé <clé de registre>. 32 Bit mode (avec redirection). Disponible depuis 4.11.3 – getRegistryVarList64(<clé de registre>) Retourne une liste de chaînes avec le noms de toutes les entrées de valeur associée à la clé <clé de registre>. 64 Bit mode (sans redirection). Disponible depuis 4.11.3 – getRegistryVarListSysnative(<clé de registre>) Retourne une liste de chaînes avec le noms de toutes les entrées de valeur associée à la clé <clé de registre>. Mode (redirection) dépend de l’architecture du système d’exploitation. Disponible depuis 4.11.3 – getRegistryVarMap32(<clé de registre>) Fournit une carte de toutes les paires nom=valeur dans la clé de registre donnée <clé de registre>. 32 Bit Mode (avec redirection). Disponible depuis 4.11.3 – getRegistryVarMap64(<clé de registre>) Fournit une carte de toutes les paires nom=valeur dans la clé de registre donnée <clé de registre>. 64 Bit Mode (avec redirection). Disponible depuis 4.11.3 – getRegistryVarMapSysnative(<clé de registre>) Fournit une carte de toutes les paires nom=valeur dans la clé de registre donnée <clé de registre>. Mode (redirection) dépend de l’architecture du système d’exploitation. Disponible depuis 4.11.3 Exemple: Dans un premier temps, nous avons créer des entrées dans la base de registre avec l’exemple de code suivant: Registry_createkeys /32Bit [Registry_createkeys] openkey [HKEY_LOCAL_MACHINE\SOFTWARE\opsi.org\opsi-winst-test] set "var1" = "value1" set "var2" = REG_SZ:"value2" set "var3" = REG_EXPAND_SZ:"value3" set "var4" = REG_DWORD:444 set "var5" = REG_BINARY:05 05 05 0F 10 opsi version 4.0.2 (Partie 2) Notes de version 33 / 49 set "var6" = REG_MULTI_SZ:"value6|value7|de" openkey [HKEY_LOCAL_MACHINE\SOFTWARE\opsi.org\opsi-winst-test\key1] openkey [HKEY_LOCAL_MACHINE\SOFTWARE\opsi.org\opsi-winst-test\key2] openkey [HKEY_LOCAL_MACHINE\SOFTWARE\opsi.org\opsi-winst-test\key3] openkey [HKEY_LOCAL_MACHINE\SOFTWARE\opsi.org\opsi-winst-test\key4] Compte tenu des entrées de registre dans l’exemple ci-dessus, et le code ci-dessous: set $list$ = getRegistryVarList32("hklm\software\opsi.org\opsi-winst-test") nous verrons les valeurs suivantes dans le journal: S e t $ l i s t $ = G e t R e g i s t r y V a r L i s t 3 2 ( " hklm\ s o f t w a r e \ o p s i . o r g \ o p s i −winst−t e s t " ) R e g i s t r y s t a r t e d with r e d i r e c t i o n ( 3 2 B i t ) r e t r i e v i n g s t r i n g s from G e t R e g i s t r y V a r L i s t 3 2 [ s w i t c h t o l o g l e v e l 7 f o r debugging ] ( string 0 ) var1 ( string 1 ) var2 ( string 2 ) var3 ( string 3 ) var4 ( string 4 ) var5 ( string 5 ) var6 Ensuite, nous appelons: set $list$ = getRegistryVarMap32("hklm\software\opsi.org\opsi-winst-test") Le journal suivant: S e t $ l i s t $ = GetRegistryVarMap32 ( " hklm\ s o f t w a r e \ o p s i . o r g \ o p s i −winst−t e s t " ) r e t r i e v i n g s t r i n g s from GetRegistryVarMap32 [ s w i t c h t o l o g l e v e l 7 f o r debugging ] ( string 0 ) var1=v a l u e 1 ( string 1 ) var2=v a l u e 2 ( string 2 ) var3=v a l u e 3 ( string 3 ) var4 =444 ( string 4 ) var5 =05 05 05 0F 10 ( string 5 ) var6=v a l u e 6 Compte tenu des entrées de registre dans l’exemple ci-dessus, et le code ci-dessous: set $list$ = getRegistryKeyList32("hklm\software\opsi.org\opsi-winst-test") nous aurons les clés suivantes dans le journal: S e t $ l i s t $ = G e t R e g i s t r y K e y L i s t 3 2 ( " hklm\ s o f t w a r e \ o p s i . o r g \ o p s i −winst−t e s t " ) R e g i s t r y s t a r t e d with r e d i r e c t i o n ( 3 2 B i t ) r e t r i e v i n g s t r i n g s from G e t R e g i s t r y K e y L i s t 3 2 [ s w i t c h t o l o g l e v e l 7 f o r debugging ] ( string 1 ) key1 ( string 2 ) key2 ( string 3 ) key3 ( string 4 ) key4 12.3.8 Les listes de chaînes provenant des Propriétés du produit – getProductPropertyList(<nom de la propriété>,<valeur par défaut>) retourne une liste de chaînes de valeurs qui sont désignés par la propriété des produits à valeurs multiples <nom de la propriété>. S’il n’y a pas de connexion au serveur opsi, la liste de chaînes qui en résulte contient uniquement opsi version 4.0.2 (Partie 2) Notes de version 34 / 49 <valeur par défaut>. Si vous appelez la fonction GetProductProperty avec une propriété à valeurs multiples, vous obtiendrez les valeurs sélectionnées dans un format de chaîne séparée par des virgules. Cela conduira à des problèmes si les valeurs retournées contiennent des caractères séparés par des virgules qui ne sont pas destinés à être analysés. Disponible depuis 4.11.3 Example: ;Property "dummymulti" has the values: ("ab", "cd", "ef", "g,h") set $list$ = GetProductPropertyList ("dummymulti","True") if not ("" = takeFirstStringContaining($list$,"g,h")) comment "GetProductPropertyList passed" else set $TestResult$ = "not o.k." LogWarning "GetProductPropertyList failed" endif set $ConstTest$ = "ab,cd,ef,g,h" set $CompValue$ = GetProductProperty ("dummymulti","True") if ($ConstTest$ = $CompValue$) comment "GetProductProperty passed" else set $TestResult$ = "not o.k." LogWarning "GetProductProperty failed" endif 12.3.9 Autres Listes de chaînes – getProfilesDirList Fournit une liste de chemins d’accès aux profils locaux. Les profils qui contiennent les mots suivants ne seront pas considérés: – localservice – networkservice – systemprofile Le profil de l’utilisateurs par défaut est inclus dans le liste. All User ou Public ne sont pas inclus dans le liste. Exemple: set $list1$ = getProfilesDirList en résulte le journal suivant: Set $ l i s t 1 $ = g e t P r o f i l e s D i r L i s t R e g i s t r y s t a r t e d with r e d i r e c t i o n ( 3 2 B i t ) r e t r i e v i n g s t r i n g s from g e t P r o f i l e s D i r L i s t [ s w i t c h t o l o g l e v e l 7 f o r debugging ] ( string 0 )C: \ U s e r s \ A d m i n i s t r a t o r ( string 1 )C: \ U s e r s \ D e f a u l t 12.3.10 Garder une trace des installations qui ont échoué Si une installation de produit échoue, cela devrait être signalé au serveur. opsi version 4.0.2 (Partie 2) Notes de version 35 / 49 En raison du fait qu’il n’existe pas de méthode automatique qui détecte un échec de l’installation, le test pour une installation qui a échoué doit être fait à l’aide des commandes de script. Pour indiquer dans un script opsi-winst que l’installation a échoué, nous devons appeler la déclaration: isFatalError Si cette déclaration est appelé, opsi-winst arrête l’exécution normale du script et définit le résultat du produit à failed (sinon il est success). Disponible depuis 4.11.3.2 il y a une nouvelle variante de cette commande: – isFatalError <chaîne> dans ce cas, une chaîne avec un court message d’erreur est transmise en tant que actionProgress au serveur opsi et est affiché dans opsi-configed. 12.3.11 Commandes pour contrôler la journalisation – includelog <nom du fichier> <taille de la queue> //since 4.11.2.1 Inclut le fichier <nom du fichier> en tant que fichier journal, où les dernières lignes <taille de la queue> du journal complet sont écrites dans ce fichier log. Si vous lancez un autre programme qui produit un fichier journal, vous pourriez voir que d’autres fichiers journal du programme dans le script opsi-winst journalisent à l’aide de cette commande. Disponible depuis 4.11.3.2, une <taille de la queue> négative peut être proposée, qui va alors inclure les premières lignes <taille de la queue> à partir de la partie supérieure du fichier journal (dit mode Head). Exemple: includelog "%Scriptpath%\test-files\10lines.txt" "5" 12.4 Sections Secondaires 12.4.1 Sections Patch 12.4.1.1 Paramètre d’Appel Les nom du fichier à patcher est passé en paramètre. Il y a des modificateurs facultatifs: – /AllNTUserProfiles Si une section patch est appelé avec ce modificateur, tous les sous-répertoires de %UserProfileDir% seront patchés, ce qui signifie que ce patch est effectué pour tous les profils d’utilisateurs. Lorsqu’un Patches est appelée dans une section [ProfileActions], le modificateur /AllNTUserProfiles est implicite. En mode logscript, %UserProfileDir% sera interprété comme %CurrentProfileDir%. (Disponible depuis 4.11.3.2) 12.4.2 Sections ExecWith Si vous appelez une section ExecWith avec l’interprète powershell, le contenu de la section est stocké dans un fichier temporaire avec l’extension .ps1. opsi version 4.0.2 (Partie 2) Notes de version 12.4.3 Sections WinBatch 12.4.3.1 Paramètre d’Appel (Modificateur) 36 / 49 – /WaitSeconds [nombre de secondes] Si un appel inclut le paramètre /WaitSeconds [nombre de secondes], alors opsi-winst attend [nombre de secondes] avant de procéder. Dans la configuration par défaut, nous attendons que tous les programmes en cours d’exécution vont finir. Si nous combinons le paramètre /WaitSeconds avec l’option /LetThemGo, opsi-winst continue le traitement après que le temps d’attente est terminé. – /WaitForProcessEnding <nom du programme> Attend que le processus appelé <nom du programme> se termine. Doit être combinée avec /TimeOutSeconds. Explication: Lors du démarrage d’un processus externe à partir d’un appel WinBatch, opsi-winst attend que le processus actuel soit fini avant d’exécuter la commande suivante dans le script. Figure 12.1 – Traitement séquentiel d’un script qui attend la fin d’un programme Il y a quelques programmes externes qui commencent un autre processus puis se terminent sans attendre la fin de leur processus enfant. Du point de vue de opsi-winst, le processus est terminé et la commande suivante peut être démarré. opsi version 4.0.2 (Partie 2) Notes de version 37 / 49 Figure 12.2 – Fin du processus, tandis que le processus enfant est toujours en cours Si vous exécutez un programme de désinstallation et un programme d’installation successivement et le programme de désinstallation fonctionne avec un tel processus enfant, vous pouvez avoir des processus en cours d’exécution en conflit parce que la désinstallation et l’installation sont en cours d’exécution au même moment. Figure 12.3 – Chevauchement d’un processus enfant et d’un processus parent L’utilisation du modificateur /WaitForProcessEnding permet d’éviter une telle situation. – /TimeOutSeconds <secondes> Un paramètre de temporisation. Après avoir attendu le nombre de <secondes>, opsi-winst mettra fin au processus. Depuis la version 4.11.3, /TimeOutSeconds peut être utilisé sans une condition d’attente (ex. / opsi version 4.0.2 (Partie 2) Notes de version 38 / 49 WaitForProcessEnding) mais pas en combinaison avec /WaitSeconds. Exemple: Winbatch_uninstall /WaitForProcessEnding "uninstall.exe" /TimeOutSeconds 20 [Winbatch_uninstall] "%ScriptPath%\uninstall_starter.exe" – /RunElevated Commence un processus qui a un jeton de sécurité avec des privilèges élevés. Ce modificateur est soumis aux restrictions suivantes: – Pour NT5 cela ne change rien. – Un processus commencé avec ce modificateur n’a pas accès au réseau. Donc, vous devriez copier un programme dans un répertoire temporaire local, mais ne pas le démarrer à partir d’un partage réseau. – Vous pouvez voir des problèmes lors de l’utilisation de l’interface graphique. Par conséquent des véritables installations silencieuses sont le meilleur choix dans ce cas. – Fonctionne uniquement dans le cadre de opsi-winst. – getLastExitCode Retourne une chaîne qui contient la valeur du code de sortie du processus qui a été le dernier appelé par une section WinBatch / DosBatch / ExecWith. Lorsque vous utilisez une section DosBatch ou ExecWith, vous obtiendrez normalement le code de sortie de l’interpréteur qui a été appelé. Pour obtenir le code de sortie de votre script, vous devez le définir explicitement. 12.5 Miscellaneous – wisynth: TuibInstScript.doInfo: remplissage optimal pour LabelInfo – nom du produit installé représenté dans le bloc d’informations initiale. correction du bug #367 – wisynth: executeWith: utilise l’extension .ps1 si l’interpréteur = powershell, correction du bug #382 – les fichiers de journalisation ne sont pas verrouillées pour la lecture (revenir à l’ancienne méthode) alors que opsiwinst est en cours fixes: https://forum.opsi.org/viewtopic.php?f=7&t=3655 – winbatch: tests pour déterminer si une extension de fichier est exécutable ou com, et n’est pas sensible à la casse. fixes: https://forum.opsi.org/viewtopic.php?f=7&t=3592#p18127 – Winbatch: Le paramètre de /timeoutseconds peut-être maintenant une variable. correction du bug #352 39 / 49 opsi version 4.0.2 (Partie 2) Notes de version Chapitre 13 Miscellanées 13.1 Changelogs: 13.1.1 Changelog opsi-configed opsi-configed (4.0.2.5.8-1) stable; urgency=low – fixed: host groups were not reloaded on reload request -- Rupert Roeder <r . roeder@uib . de > Mon , 15 Oct 2012 12:00:00 +0200 opsi-configed (4.0.2.5.6-1) stable; urgency=low – fixed: problem when server property is missing – fixed: a new client must not have the name of the opsi server (or depots) -- Rupert Roeder <r . roeder@uib . de > Wed , 26 Sep 2012 12:00:00 +0200 opsi-configed (4.0.2.5.5-1) stable; urgency=low – fixed: some problem when changing between not synchronized depots -- Rupert Roeder <r . roeder@uib . de > Fri , 07 Sep 2012 18:00:00 +0200 opsi-configed (4.0.2.4-1) stable urgency=low – updated FR language file – eliminated NPEs for not authenticated users — Rupert Roeder <[email protected]> Thu, 16 Aug 2012 11:38:32 +0200 opsi-configed (4.0.2.2-1) testing; urgency=low – new button indication of existing product property entries – new client action resetLocalProducts — Rupert Roeder <[email protected]> Thu, 16 Jul 2012 11:38:32 +0200 opsi-configed (4.0.2.1-1) testing; urgency=low – calls to hostControl_reachable and hostControl_getActiveSessions are made threaded to avoid blocking of the configed if there are problems – improvements in gui of client search dialogs – added support of description field for a saved search – added support of description field for tree groups – new button indication of existing product property entries opsi version 4.0.2 (Partie 2) Notes de version 40 / 49 – new client action resetLocalProducts — Rupert Roeder <[email protected]> Thu, 20 Jun 2012 14:38:32 +0200 opsi-configed (4.0.2.0-1) testing; urgency=low – implementation of DIRECTORY extension of treeview – coloring of product versioninfo which are not equal to the server version – report column can now be edited (by transforming the values to values of ActionResult, ActionProgress, LastState – product properties and host configs are marked by bold font when not being identical with the default values – an additional product column showing the (full) product names can be used – if a opsi client is created there now is a check for existing host names which will not be reused without confirmation – new sorting of depots, tooltip added for depots — Rupert Roeder <[email protected]> Thu, 14 Jun 2012 14:38:32 +0200 opsi-configed (4.0.1.27-1) testing; urgency=low – improved window handling of client selection dialog — Rupert Roeder <[email protected]> Thu, 03 May 2012 14:38:32 +0200 opsi-configed (4.0.1.26-1) testing; urgency=low – bugfix: product properties are reloaded for each selected client if a product was selected — Rupert Roeder <[email protected]> Thu, 26 Apr 2012 14:38:32 +0200 opsi-configed (4.0.1.25-1) testing; urgency=low – improvement: Added a new client selection dialog — Felix Rohrbach <[email protected]> Wed, 21 Mar 2012 14:38:32 +0200 13.1.2 Changelog opsi-winst opsi-winst (4.11.3.3) stable; urgency=low * new command setActionProgress <string> * commandline parameter /productid <string> This parameter forces the winst to try to start a service connection using the local opsiclientd.conf. This will be used in the opsi-template-with-admin to run the local script in opsi context * Versioninfo: try to find informations also on other than the stored codepage * wisynth: doRegistryAllNTUserDats: use getProfilesDirList * widatamodul: retrieveJSONObject: JSON Bench Log entry for every service call * wimain: saveVersionToProfile/readVersionFromProfile : if there is no access to Appdata, we use the profile directory for the .opsi.org\userLoginScripts.ini * wilog: PartOpenForReading: fix for timing problem Floatingpoint Underflow — Detlef Oertel <[email protected]> Thu, 13 Sep 2012:15:00:00 +0200 opsi-winst (4.11.3.2) stable; urgency=low – new command FatalOnSyntaxError (default= true) – every script syntax error is logged – every script syntax error increases the errorcounter – if FatalOnSyntaxError then every script syntax error is a fatal error and Syntax Error is set as actionProgress – now isFatalError accepts a string which is stored to the server as actionprogress and showed in the opsi-configed – includeLogFile now works in head mode if you give a negative number as line count – changed in TLogInfo.includelogtail – new stringlist function: getProfilesDirList: All existing Profiles dirs except: localservice,networkservice,systemprofile – Patches sections may now called with %userprofiledir% as part of the file name and /AllNTuserProfiles so it will run on all profiles. If running in Machine mode, the /AllNTuserProfiles is implizit in the [ProfileActions]. If running in LoginScript mode, the %userprofiledir% is the %CurrentProfileDir%. – new stringfunction: GetIpByName(<ip addr / ip name>) : string – Files sections changed: wisynth: doFileActions: Modifier /AllNtUserProfiles and /AllNtUserSendto now based on getProfilesDirList opsi version 4.0.2 (Partie 2) Notes de version 41 / 49 – new stringlist commands to retrieve maps from the registry: – getRegistryVarMap32(<regkey>) – getRegistryVarMap64(<regkey>) – getRegistryVarMapSysnative(<regkey>) – winbatch: (Startprocess*) catching exceptions if execute bit is missing on samba4 shares — Detlef Oertel <[email protected]> Mon, 30 Jul 2012:15:00:00 +0200 opsi-winst (4.11.3.1) stable; urgency=low – winbatch: /timeoutseconds now allowed without /waitforprocessending (not with /waitsec) – Winbatch: The parameter to /timeoutseconds may now be a variable fixes #352 – winbatch /RunElevated – patchhosts sections: 64 bit compatibility, fixes #327 – manifest added: <requestedExecutionLevel level="highestAvailable" />: http://www.lazarus.freepascal.org/index.php?topic=14976.0 http://lazarus.freepascal.org/index.php/topic,11659.msg69861.html http://msdn.microsoft.com/en-us/library/bb756929.aspx – new stringfunction: getDiffTimeSec (Time in seconds since last marktime) – name of installing product shown in inital info block. fixes #367 – Exitcode of DosBatch, Execwith is now logged and can be retrieved by getLastExitcode – be aware: this is the exitcode of the called program so use something like: exit %ERRORLEVEL% , fixes #161 – on userLoginScript: retry if there no user could be detected – wisynth: TuibInstScript.doInfo: optimal fill for LabelInfo – wisynth: executeWith: use extension .ps1 if interpreter = powershell, fixes #382 – new function: NormalizeWinst (set normal window state), fixes #346 – old function IconizeWinst (set minimized window state), fixes #346 – old function RestoreWinst (set maximized window state), fixes #346 – new stringfunction: stringReplace(string, oldPattern,newPattern) : string ; this function replaces all occurrences of one substring with another in a string it works not case sensitive , fixes #328 – new stringfunction: GetMyIpByTarget(<target ip addr>) : string – new boolean function: contains(<str>, <substr>) : boolean ; case sensitive, fixes #365 – old boolean function: isNumber(<str>) : boolean – new stringlist function: getProductPropertyList(<propname>,<default value>) – wispecfolder: fix using winapi call GetDefaultUserProfileDirectory for %DefaultUserProfileDir% – wispecfolder: fix using winapi call GetAllUsersProfileDirectory for %CommonProfileDir% – new stringfunction SidToName(<well known sid>) : gives localized name of the sid – wisynt: try-except in doRegistryHackRegeditFormat – logfiles now again not locked against reading while opsi-winst is running fixes: https://forum.opsi.org/viewtopic.php?f=7&t=3655 – new commands: include_insert "<file name>" : Replaces the command with a empty line and then inserts the content of "<file name>" after this line include_append "<file name>" : Replaces the command with a empty line and then appends the the content of "<file name>" to the end of the script – <file name> is either: – a complete valid Path – The name of a file in %WinstDir%\lib – The name of a file in %ScriptPath% opsi version 4.0.2 (Partie 2) Notes de version 42 / 49 – should be placed after requiredWinstVersion – new stringlist commands to retrieve lists from the registry: – getRegistryKeyList32(<regkey>) – getRegistryKeyList64(<regkey>) – getRegistryKeyListSysnative(<regkey>) – getRegistryVarList32(<regkey>) – getRegistryVarList64(<regkey>) – getRegistryVarListSysnative(<regkey>) – new stringfunction strLength(<string>) – new stringfunction strPos(<string>, <substr>) – new stringfunction strPart(<string>, <start pos>, <number of chars>) – winbatch: test if extension of exitsting file is exe or com now not case sensitive. fixes: https://forum.opsi.org/viewtopic.php?f=7&t=3592#p18127 — Detlef Oertel <[email protected]> Tue, 11 Jan 2012:15:00:00 +0200 opsi-winst (4.11.2.12) stable; urgency=low – fix for getproductmap widatamodul: TOpsi4Data.initProduct: reset FProductOnClient_aktobject with nil — Detlef Oertel <[email protected]> Tue, 31 Jul 2012:15:00:00 +0200 opsi-winst (4.11.2.11) stable; urgency=low – wispecfolder: fix for the fix using winapi call GetProfilesDirectory for %profiledir% — Detlef Oertel <[email protected]> Tue, 3 Jun 2012:15:00:00 +0200 opsi-winst (4.11.2.10) stable; urgency=low – wispecfolder: fix using winapi call GetProfilesDirectory for %profiledir% — Detlef Oertel <[email protected]> Tue, 2 Jun 2012:15:00:00 +0200 13.1.3 Changelog hwaudit hwaudit (4.0.5-1) stable; urgency=low – added dell-expresscode to computer_system – added productProperty loglevel log-file – changeDirectory added (package requires now winst: 4.11.2.6) – new temp-Directory C:\opsi.org\tmp instead of old C:\tmp — Erol Ueluekmen <[email protected]> 31 Jul 2012 hwaudit (4.0.4-3) stable; urgency=low – get timeout from property – Ticketid 2012021510000025 — Bardo Wolf <[email protected]> 23 Feb 2012 hwaudit (4.0.4-3) stable; urgency=low – get timeout from property – Ticketid 2012021510000025 — Bardo Wolf <[email protected]> 23 Feb 2012 hwaudit (4.0.4-2) stable; urgency=low – get timeout from property – Ticketid 2012021510000025 — Bardo Wolf <[email protected]> 23 Feb 2012 opsi version 4.0.2 (Partie 2) Notes de version 13.1.4 43 / 49 Changelog swaudit swaudit (4.0.2-1) stable; urgency=low – code cleanup – remove all opsi 3 stuff – use opsi-winst 4.11.3 methods – extended search off by default (no data at NT6) – replace delete by del – replace c:\tmp by c:\opsi.org\tmp — detlef oertel <[email protected]> Fri, 10 Aug 2012 15:00:00 +0100 swaudit (4.0-15) testing; urgency=low – new property: readfromfile to switch off audit and use the filebuffer files instead ONLY DEBUG - do not use if you are not sure what you doing! (Do not make a audit but read values from c:\tmp and send them) — detlef oertel <[email protected]> Fri, 11 May 2012 15:00:00 +0100 swaudit (4.0-14) testing; urgency=low – workaround for bug#354 (set version to ” if zero) deleted because it is fixed — detlef oertel <[email protected]> Tue, 26 Apr 2012 16:00:00 +0100 swaudit (4.0-13) testing; urgency=low – set version to ” if zero - workaround for bug#354 — detlef oertel <[email protected]> Tue, 15 Mar 2012 16:00:00 +0100 swaudit (4.0-12) testing; urgency=low – new property: usekeyfinder to switch off keyfinder call — detlef oertel <[email protected]> Tue, 29 Nov 2011 16:00:00 +0100 13.1.5 Changelog jedit jedit_4.5.2-2 stable; urgency=low – opsi-winst.xml for version 4.11.3.2 — detlef oertel <[email protected]> Tue, 31 Jul 2012 16:01:53 +0200 jedit_4.5.2-1 stable; urgency=low – update to version 4.5.2 – opsi-winst.xml for version 4.11.3.1 – opsi-winst.xml for ins,.opsiscript,*opsiinc — detlef oertel <[email protected]> Thu, 12 Jul 2012 16:01:53 +0200 jedit_4.5.1-1 stable; urgency=low – update to version 4.5.1 – property gui_language description: jedit localization values: ["auto", "de", "en", "fr"] default: ["en"] — bardo wolf <[email protected]> 12 Jun 2012 opsi version 4.0.2 (Partie 2) Notes de version 13.1.6 Changelog opsi-adminutils opsi-adminutils (4.0.2.1-1) stable; urgency=low – replace ussf by opsi-setup-detector – update auf InstEd-1.5.15.26.msi – winscp 4.3.9 — detlef oertel <[email protected]> 06 Aug 2012 opsi-adminutils (4.0.1.24-1) stable; urgency=low – try to fix [ 2012031610000012 ] opsi-adminutils webstart funktioniert nicht. – postinst check if newer configed.jar swingx.jar on server – winscp 4.3.7 – property javaweb installer or local configed – swingx.jar – configed.jar 4.0.1.24 – language selection – replace %ProgramfilesDir% by %Programfiles32Dir% — Bardo Wolf <[email protected]> 16 Mar 2012 opsi-adminutils (4.0.1.12-4) stable; urgency=low – corrected linkfolder for opsi-configed — Rupert Röder <[email protected]> 07 Mar 2012 opsi-adminutils (4.0.1.12-3) stable; urgency=low – putty 0.62 – winscp 4.3.5 — Susanne Ehlers <[email protected]> 13 Dec 2011 opsi-adminutils (4.0.1.12-2) stable; urgency=low – JXv3.1 replaced by jxplorer-3.2.2-windows-installer.exe — Bardo Wolf <[email protected]> 17 Oct 2011 13.1.7 Changelog opsi-template opsi-template (4.0.2-2) stable; urgency=low – requiredWinstVersion >= "4.11.3.2" – Set $LogDir$ = "%SystemDrive%\opsi.org\tmp" – new: *_short32.opsiscript scripts with includes – winbatch_install: changed inno-setup example: default without answer file – winbatch_uninstall: changed NSIS example: /WaitForProcessEnding "Au_.exe" — detlef oertel <[email protected]> Fri, 03 Aug 2012 16:01:53 +0200 opsi-template (4.0.2-1) stable; urgency=low – requiredWinstVersion >= "4.11.2.6" – added ChangeDirectory "%SCRIPTPATH%" – changed delete to del (in delsub) – changed at msi to ALLUSERS=1 — detlef oertel <[email protected]> Mon, 02 Jun 2012 16:01:53 +0200 44 / 49 opsi version 4.0.2 (Partie 2) Notes de version 13.1.8 45 / 49 Changelog opsi-template-with-admin opsi-template-with-admin (4.0.2-2) stable; urgency=low – requires opsi-winst >= 4.11.3.3 – uses /productid switch at opsi-winst call – code cleanup (use of synative instead of 64bit) – property debug: switches loglevel and lock keyboard – code cleanup — detlef oertel <[email protected]> Thu, 19 Sep 2012 15:01:53 +0200 opsi-template-with-admin (4.0.2-1) stable; urgency=low – requires opsi-winst >= 4.11.3 – using SidToName instead of psgetsid.exe – priority set to -20 – first reboot is commented (;ExitWindows /ImmediateReboot). Uncomment it if you have problems with the autologon — detlef oertel <[email protected]> Wed, 04 Jul 2012 15:01:53 +0200 13.1.9 Changelog opsi-client-agent opsi-client-agent (4.0.2.1-2) stable; urgency=low – no interactive message on copy error if $INST_SubModus$="CREATE_CLIENT" – opsi-winst 4.11.3.2 – use of GetMyIpByTarget() – use of GetIpByName() – devided Files_redist_cleanup to Files_redist_cleanup_c and Files_redist_cleanup_d — Detlef Oertel <[email protected]> Mon, 4 Jun 2012 15:00:00 +0100 13.1.10 Changelog windows Netboot Products windows (4.0.2-1) stable; urgency=low – Security fix in net mount while winpe works (NT6) – set alignment for partitions (NT5) – show_drivers.py modified to show automated including additional driver over inventory – create_driver_links for handling with fileadmingroup from opsi.conf-file — uib GmbH <[email protected]> Fr, 29 Jun 2012 15:19:15 +0000 windows (4.0.1-11) stable; urgency=low – fix in multilanguage control file (time zone) – fix image names windows server — uib GmbH <[email protected]> Mon, 2 Apr 2012 15:19:15 +0000 windows (4.0.1-10) stable; urgency=low – multilanguage control file – additional locales and keyboard layouts — uib GmbH <[email protected]> Tue, 24 Jan 2012 14:19:15 +0000 windows (4.0.1-9) stable; urgency=low – blockAlignment added. opsi version 4.0.2 (Partie 2) Notes de version 46 / 49 — uib GmbH <[email protected]> Wed, 16 Nov 2011 11:06:24 +0000 windows (4.0.1-8) stable; urgency=low – descriptions now english – Added new properties for patching unattend.xml Component Microsoft-Windows-International-Core-WinPE winpe_uilanguage winpe_uilanguage_fallback winpe_inputlocale – added new properties to unattend.xml.template – show_drivers.py — bardo wolf <[email protected]> Mon, 31 Oct 2011 09:09:50 +0000 windows (4.0.1-7) stable; urgency=low – unattend.xml patched for postinst-routines like 2008-r2 – show_drivers.py modified to show right list of drivers; now with messages for duplicate drivers. — uib GmbH <[email protected]> Thu, 22 Sep 2011 14:19:15 +0000 windows (4.0.1-6) stable; urgency=low – Remove Display settings from unattend.xml.template — uib GmbH <[email protected]> Thu, 25 Aug 2011 12:25:50 +0000 windows (4.0.1-5) stable; urgency=low – Call auditHardwareOnHost_setObsolete — uib GmbH <[email protected]> Tue, 19 Jul 2011 13:17:02 +0000 windows (4.0.1-4) stable; urgency=low – Modify driver integration — uib GmbH <[email protected]> Mon, 18 Jul 2011 15:05:10 +0000 13.1.11 Changelog python-opsi python-opsi (4.0.2.4-1) stable; urgency=low – fixes method setProductActionRequestWithDependencies after host_createOpsiClient – added default dhcp string and text options that the values will be set in double-quotes (fixes#403) – added method userIsReadOnlyUser() – WindowsDriverIntegration: do not break when no devices found in txtsetup.oem (corrupted txtsetup.oem) — Erol Ueluekmen <[email protected]> Thu, 27 Sep 2012 10:35:17 +0200 python-opsi (4.0.2.3-1) testing; urgency=low – Workaround for bootimage: wait if blockfile to partition does not exist. – Automated additional-driver integration support. – hostControl-Fix for host_reachable method. – added opsiFileAdminhandling, added new opsi.conf File. – dellexpresscode for hwinvent implemented – licensekey length increased to 1024 — Erol Ueluekmen <[email protected]> Tue, 17 Jul 2012 13:33:13 +0200 python-opsi (4.0.2.2-1) testing; urgency=low – Workaround for python 2.7 in jsonrpc-backend: compressed data will send as bytearray – fix for isc-dhcp-server for oneiric and precise — Erol Ueluekmen <[email protected]> Mon, 11 Jun 2012 13:42:58 +0200 opsi version 4.0.2 (Partie 2) Notes de version 13.1.12 Changelog opsipxeconfd opsipxeconfd (4.0.2.6-1) stable; urgency=low – Fix: if always switched to none, don’t create new pipe for client. — [email protected] <[email protected]> Mon, 08 Oct 2012 14:42:45 +0200 opsipxeconfd (4.0.2.5-1) experimental; urgency=low – Fix: dont lose append entry from template, if no productProperty set — Erol Ueluekmen <[email protected]> Tue, 25 Sep 2012 14:48:08 +0200 opsipxeconfd (4.0.2.4-1) experimental; urgency=low – write pipe again, if product has set always actionRequest for client. — Erol Ueluekmen <[email protected]> Tue, 18 Sep 2012 18:27:36 +0200 opsipxeconfd (4.0.2.3-1) experimental; urgency=low – when spaces are in append, does not shuffle productPropertyStates — Jim Pizagno <[email protected]> Wed, 05 Sep 2012 17:03:22 +0200 opsipxeconfd (4.0.2.2-1) testing; urgency=low – fixing init.d lsb-header for SUSE based servers. Removing runlevel 4 – fileadmingroup added in /etc/opsi/backends/file.conf — Erol Ueluekmen <[email protected]> Fri, 22 Jun 2012 16:26:42 +0200 13.1.13 Changelog opsiconfd opsiconfd (4.0.2.4-1) stable; urgency=low – added readOnly-State in session and worker — Erol Ueluekmen <[email protected]> Thu, 04 Oct 2012 11:18:36 +0200 opsiconfd (4.0.2.3-1) testing; urgency=low – fixing floatdivision in statistics-class — Erol Ueluekmen <[email protected]> Wed, 18 Jul 2012 17:05:54 +0200 opsiconfd (4.0.2.2-1) testing; urgency=low – omb: python 2.4 fixing import hashlib – fixing init.d lsb-header for SUSE based servers. Removing runlevel 4 — Erol Ueluekmen <[email protected]> Fri, 22 Jun 2012 15:06:59 +0200 13.1.14 Changelog opsi-utils opsi-utils (4.0.2.3-1) stable; urgency=low – opsi-product-updater: Fix for using more then one repositories with different onlyDownload options. — Erol Ueluekmen <[email protected]> Thu, 11 Oct 2012 14:13:35 +0200 opsi-utils (4.0.2.2-1) testing; urgency=low – Added opsiFileAdminGroup handling. – opsi-product-updater: Timestamps in Mail — Erol Ueluekmen <[email protected]> Thu, 19 Jul 2012 11:44:37 +0200 47 / 49 opsi version 4.0.2 (Partie 2) Notes de version 13.1.15 Changelog opsi-linux-bootimage opsi-linux-bootimage (20120728-1) experimental; urgency=low – kernel 3.5 – python-opsi 4.0.2.3-1 — Erol Ueluekmen <[email protected]> Mon, 16 Jul 2012 16:42:42 +0200 opsi-linux-bootimage (20120119-1) stable; urgency=low – kernel 3.2.1 – fix french-localisation – added gptfdisk toolset – python-opsi 4.0.1.37-1 — Erol Ueluekmen <[email protected]> Thu, 19 Jan 2012 15:01:04 +0100 13.1.16 Changelog opsi-depotserver opsi-depotserver (4.0.2.3-1) stable; urgency=low – Config-default-creation by first running --init-current-config fixed — Erol Ueluekmen <[email protected]> Tue, 18 Sep 2012 17:42:23 +0200 opsi-depotserver (4.0.2.2-1) quantal; urgency=low – Added opsiFileAdmins handling. — Erol Ueluekmen <[email protected]> Thu, 19 Jul 2012 11:46:20 +0200 13.1.17 Changelog opsi4ucs opsi4ucs (4.0.2.3-1) stable; urgency=low – Join script modified: – only patch dhcp if it’s installed – restart and patch samba4 only, if samba4 is installed – don’t build opsi4ucs-ldap-schema. — Erol Ueluekmen <[email protected]> Tue, 02 Oct 2012 15:14:44 +0200 opsi4ucs (4.0.2.2-1) experimental; urgency=low – For handling with new pcpatch-group added opsi.conf. – UCSOverview-page changed from applet to java-webstart. – Added new opsi-auth pam module for UCS 3 — Erol Ueluekmen <[email protected]> Thu, 24 Aug 2012 10:17:21 +0200 opsi4ucs (4.0.2.1-1) testing; urgency=low – Featurepack-Release 4.0.2 for ucs. – First Release for UCS 3 Support: – uninvetion-ldap-backend have reached his EOL since ucs3 (default backend: file) – Fixes 99opsi4ucs.inst-Joinscript — Erol Ueluekmen <[email protected]> Fri, 29 Jun 2012 10:13:10 +0200 48 / 49 49 / 49 opsi version 4.0.2 (Partie 2) Notes de version 13.1.18 Changelog opsi-atftp opsi-atftp (0.7.dfsg-2) stable; urgency=low – fix uncommented entries for tftp-service in inetd.conf -- Erol Ueluekmen <e . ueluekmen@uib . de > Fri , 12 Oct 2012 13:25:16 +0200 opsi-atftp (0.7.dfsg-1.9) testing; urgency=low – Replaces univention-tftp package -- Erol Ueluekmen <e . ueluekmen@uib . de > Fri , 10 Aug 2012 11:21:13 +0200 opsi-atftp (0.7.dfsg-1.8) stable; urgency=low – LSB Header added in init-script -- Erol Ueluekmen <e . ueluekmen@uib . de > Tue , 24 Jan 2012 18:01:39 +0100