Comptage du nombre d'applis ouvertes sur plusieurs postes

pierrero

Membre enregistré
14 Octobre 2004
2
0
42
Bonjour,

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 donc il faut que je puisse connaître le pic maximum d'utilisations simultanées pour Photoshop, Illustrator, Acrobat ... pour pouvoir réévaluer le nombre de licences à acheter.

Il faudrait faire un script qui remonterait un signal sur une machine du réseau à chaque fois que l'utilisateur lancerait une des application Adobe.

On pourrait par exemple incrémenter des compteurs (à chaque appli son compteur) et le décrémenter lorsque le logiciel a été quitté.

On pourrait aussi mettre un timeout qui retirerait 1 si le poste client n'a pas envoyé de signal depuis 5 min par exemple.

J'imagine que ce script doit être réalisable par perl ou autres ? ... :confused:

J'ai vu que sous mac on peut utiliser la commande ps -x | grep Adobe xxxxxxx

[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


Voilà je suis pas allé plus loin pour le moment parce qu'après je sêche quant-il s'agit de programmation :(
Pourtant c'est assez simple je pense.

Si vous pouviez me filer un coup d'mains :zen: des tuyaux ...

Merci.

Pierrero.
 
Salut,

Bon je me lance vu que personne n'ose.

Premièrement je te conseil de t'orienter vers Python pour faire ce que tu souhaites faire. C'est inclus en natif sous OS X et plus facilement installé sous Windows que Perl.

J'imagine un petit script qui viendrait, via le réseau, attaquer ton poste ou une base de données type MySQL ou PostGreSQL tournerait.

Le petit script en question viendrait checker la liste des process comme tu le fais via un ps les applics Adobe ouverte et en fonction du nombre d'applics ouverte et éventuellement des applics fermés il enverrait une requête MySQL au serveur MySQL sur ton poste.

Sur ton poste, une simple page PHP et hop, tu as tout en temps réel vite fait bien fait.

Pour MySQL et python : mysql-python.sf.net

Seul point noir, comment tu fais un ps -x sous Windows ?!?

Osaris
 
osaris a dit:
Seul point noir, comment tu fais un ps -x sous Windows ?!?
Osaris

Ah bah oui c'est vrai que le shell sous Windaube ils y ont pas trop pensé ! :siffle:

D'où notre idée de partir sur du perl.

Le but c'est:

1. de pouvoir m'appuyer sur un collègue qui gère pas mal en Perl si j'ai trop de mal. (faudrait éviter)
2. d'avoir un script transportable quelque soit l'architecture.

Python je connais pas trop... Tu m'expliques en gros :confused:

L'idée je le rappelle -si çà n'a pas été compris comme ça- c'est d'être sûr qu'on a acheté assez de licences flottantes Adobe pour tout le parc en se basant sur un log ou un compteur qui doivent recevoir des signaux de tous les postes clients du parc.

Typiquement :
  • Si une appli démarre sur un poste > signal "Je rajoute 1 au nb de licences actuellement utilisées"
  • Si une appli est fermée > signal "Je décrémente de 1 le nb de licences utilisée"
  • Si rien n'a été renvoyé depuis un long moment alors que l'appli était ouverte > "Je décrémente aussi de 1, ou mieux je force le client à fermer l'appli" (utopie :siffle: )

Bon tu vois çà comment ? J'arrive pas à me lancer en fait ! T'as une idée de départ ? :heu:
 
Salut,

Je m'explique pour Python. C'est un langage de plus en plus utilisé pour écrire des scripts qu'on aurait écrit auparavant en Perl ou en Bash. C'est portable donc pas de problème pour passer de windaube à Mac.

L'idée de la base de données te permettra de stocker plein d'infos qui te perrmettront de donner des infos très précises à ta direction en extrayant de façon adéquate les données.

Typiquement en notant simplement :

nom du poste, nom de l'application, heure, action (démarrage ou arrêt)

Tu pourras donner le nombre de fois en moyenne ou une applic est lancée par poste, le nombre d'heures d'utilisation de l'applic par poste ou pour toute la boite etc... (ça devient un peu Big Brother je te l'accorde).

Pour ton script tu peux faire simple. Tu fais un test pour savoir si tu es sous Mac ou PC puis pour chaque système tu écris une fonction différente.

Sous win32 tu peux récupérer les process en cours comme ça :

import win32api, win32con, win32process

processes = win32process.EnumProcesses() # get PID list

Après tu boucle pour chaque process et tu compares avec un texte défini qui te garanti que c'est la bonne applic.

N'hésites pas à demander pour la suite (par mail si tu considères que le sujet devient un fil de discussion PV).

@+

Osaris