Salut à tous,
J'ai aussi posté dans la rubrique Perl et je m'en excuse d'avance.
J'ai besoin pour le taf de comptabiliser les logiciels Adobe en cours d'utilisation sur l'ensemble du parc Mac & Windaube. Nous avons un nombre de licences flottantes à ne pas dépasser. Les licences flottantes permettent d'installer une appli sur toutes les machines et de n'acheter que quelques licences seulement.
Il ne faut pas que le nb max d'utilisateurs simultanés d'une appli dépace le nb de licences acquises.
Voilà il me faut donc juste le pic maximum d'utilisations simultanées pour Photoshop, Illustrator, Acrobat ... pour pouvoir réévaluer le nombre de licences flottantes à acheter.
Le script sur les clients doit donc, remonter un signal sur une machine du réseau à chaque fois que l'utilisateur lance une des application Adobe sous licence flottante.
On incrémente un compteur (à chaque appli son compteur) et on le décrémente lorsque le logiciel a été quitté.
On peut aussi mettre un timeout qui retire 1 si le poste client n'a pas envoyé de signal "appli ouverte" depuis 5 min par exemple, ou que le logiciel a été fermé.
ou faire l'inverse (ce qui est mieux à mon avis): aller re-interroger les postes qui ont envoyé un signal 'Appli AdobeTruc ouverte' pour vérifier que l'appli est toujours ouverte. (vérif. toutes les 5 mins par ex)
Qu'est ce que sera le mieux selon vous ?
RAPPEL:
Il me faudra faire 2 fonctions séparées (une pour Windows et une pour Unix (enfin MacOS).
J'ai vu que sous Unix (MacOS) on peut utiliser la commande `ps -x | grep Adobe` qui me liste tous les process en cours dont le titre contient Adobe. Je peux donc me servir de cette commande pour extraire l'Heure et le nom de l'appli.
[postemac:~] user% ps -x | grep Adobe
415 ?? S 0:14.41 /Volumes/Applications/dossier Appli OS X /Adobe Photoshop 7/Adobe Photoshop 7.0/Contents/MacOS/Adobe Photos
474 std R+ 0:00.00 grep Adobe
et pour les Windows, j'ai appris que sous python on peux utiliser çà pour récupérer les process:
import win32api, win32con, win32process
processes = win32process.EnumProcesses() # get PID list
Je reformule mon besoin :
- Si une appli démarre sur un poste > un signal rajoute 1 au nb de licences actuellement utilisées
- Si une appli est fermée > un signal décrémente de 1 le nb de licences utilisée
- Si un client interrogé ne répond plus ou que la liste de ses process ne contient plus l'appli > on décrémente de 1 aussi.
Pourriez-vous m'aider à commencer à coder tout çà.
Merci d'avance.
Pierrero.
Message édité par pierrero le 08-03-2005 à 10:59:48