[R] Popup (TrayTip) sur le réseau.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
ViviVang
Niveau 1
Niveau 1
Messages : 10
Enregistré le : ven. 11 oct. 2013 09:02
Status : Hors ligne

[R] Popup (TrayTip) sur le réseau.

#1

Message par ViviVang »

Bonjour à tous !

Voilà, je vais essayer d'être assez clair dans ma demande qui est un peu complexe (ou pas :D ).

J'aimerai développer une application qui permet d'envoyer des messages via le réseau mais pas des "msg ou net send' mais plutôt une sorte de popup près de l'heure qui affichera le message.

En gros, j'ai un chef qui possédera l'application avec un input "Sujet" et un input "Message" et une liste de PC ou Groupe de PC qui sélectionnera pour envoyer le message. Les agents eux recevront un popup de ce style :

Image
contenant le message.

Et je me demandai si la fonction AITray (http://www.autoitscript.com/forum/topic ... edirector/) ne pouvait pas faire le boulot à condition que l'on déploie la DLL sur tous les postes et comment l'adapter si c'est possible ?

C'est assez ambigu comme demande et avant de me lancer, j'aimerai savoir surtout si c'est possible. Où s'il existe pas déjà quelque chose car j'ai beau chercher, je ne trouve rien d'où le faite de mon poste et de l'envie de développer cet outil.

Merci d'avance à tous ceux qui vont me réponde et m'aider.
Modifié en dernier par ViviVang le jeu. 11 déc. 2014 19:09, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Popup (TrayTip) sur le réseau.

#2

Message par jguinch »

Un truc simple pourrait être de créer un exécutable qui s'exécuterait sur les postes clients, et qui attendrait les ordres (ou irait les chercher).
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
ViviVang
Niveau 1
Niveau 1
Messages : 10
Enregistré le : ven. 11 oct. 2013 09:02
Status : Hors ligne

Re: [..] Popup (TrayTip) sur le réseau.

#3

Message par ViviVang »

Merci de ta réponse rapide !

C'est vrai que j'ai pas pensé à ça ! Seul truc, c'est que je ne sais absolument pas comment faire l'écoute entre le logiciel maître et l’esclave. Aurais-tu un exemple stp ?

Après juste ça, c'est vrai que ça devient assez simple.

Merci encore !
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Popup (TrayTip) sur le réseau.

#4

Message par jguinch »

Il y a plusieurs solutions.
Par exemple, ça peut être la lecture d'un fichier (txt ou INI) sur un partage réseau ou sur un serveur web.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] Popup (TrayTip) sur le réseau.

#5

Message par Sea »

Je vois pas vraiment le problème. Tu possèdes d'un serveur (l'admin, celui qui enverra a chaque pc).
Chaque clients lui lors de l'ouverture de windows va ce connecter, en envoyant son statu (style employé rang 1, employé rang 2 ainsi le serveur(l'admin) possède la liste de tout les ordinateurs qui sont actuellement connectés avec leurs rang.)

Après il te suffit d'attendre (pour tes clients) un message de l'admin puis de l'afficher dans un trayTip.


PS: Es-tu sur qu'un trayTip est mieux qu'une msgbox car si l'employer est au toilette il ne verra pas le message... Alors qu'une msgbox il faut la confirmer, tu peux donc faire un systeme d'acussé reception puis de renvoi en cas de problème...

Tu peux regarder ceci : http://www.cheat-gam3.com/2-cours-pour- ... bot-23605/ ou sinon en googlisant tu trouvera un nombre incalculable de chat server/client en autoit ;)
ViviVang
Niveau 1
Niveau 1
Messages : 10
Enregistré le : ven. 11 oct. 2013 09:02
Status : Hors ligne

Re: Re : [..] Popup (TrayTip) sur le réseau.

#6

Message par ViviVang »

Merci de vos réponses, je vais regarder ça de plus près. Le seul truc, c'est que le client ne peut recevoir que les messages mais ne peut pas y répondre. Après, avec ce que vous m'avez donné, j'ai maintenant quelques pistes pour pouvoir développer un ou deux trucs de test.

C'est vrai que le traytip n'est pas super. Je vais faire un msgbox qui se mettra près de l'heure que j'essaierai de faire un peu jolie ^^.

Merci et je vous tiens au courant de l'avancement.
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

Re: [..] Popup (TrayTip) sur le réseau.

#7

Message par GhostLine »

Yop !

Pour faire ce genre d'outils de mon coté, le plus simple est de mettre dans un répertoire partagé accessible à tous un fichier INI qui contient les messages à communiquer (par exemple). Si les postes clients ne peuvent modifier le fichier sur le serveur, il suffit de partager sur ces postes clients un petit fichier INI qui indiquera juste que l'ordre a été exécuté : le serveur, qui scrutera ces fichiers, pourra alors modifier son propre fichier.

J'explicite :
Serveur --> inscrit dans son fichier ordre_reseau.ini "PC01=Coucou c'est nous"
PC01 --> lecture du fichier INI sur le serveur
PC01 --> Une valeur pour moi ? Je récupère la valeur et l'affiche dans l'infobox
PC01 --> inscrit dans son fichier etat_PC01 "PC01=Lu"
Serveur --> lecture du fichier INI sur PC01
Serveur --> Valeur=Lu ? On efface l'ancienne demande
Serveur --> remplace l'ancienne ligne de son fichier ordre_reseau.ini par "PC01="
PC01--> lecture du fichier INI sur le serveur
PC01 --> pas de valeur --> on en fait rien

[etc.]

Perso, je trouve que ce genre de scripts est assez rigolo à faire : amuse-toi bien !
Faco
Niveau 4
Niveau 4
Messages : 80
Enregistré le : lun. 29 juil. 2013 18:09
Status : Hors ligne

Re: [..] Popup (TrayTip) sur le réseau.

#8

Message par Faco »

Bonjour,

personne ne le lance sur du TCP/IP ?
ViviVang
Niveau 1
Niveau 1
Messages : 10
Enregistré le : ven. 11 oct. 2013 09:02
Status : Hors ligne

Re: [..] Popup (TrayTip) sur le réseau.

#9

Message par ViviVang »

Merci @GhostLine de ta solution. Je la garde sous le coude. Là, je suis en train de faire un test avec TCP/IP comme dit @Faco.

Là, j'ai deux GUI. La première serveur auquel on lui assigne un port et un client qui lui on lui donne en paramètre le port et l'IP du serveur avec un Input pour le message. Lors de la connexion, le serveur repère bien qu'il y a une connexion et lors de l'envoie du message le serveur réceptionne correctement le message.

Maintenant, je dois un peu inverser quelques trucs. Car là, pour le test, c'est l'interface client qui envoie le message mais au final il ne fera que réceptionner.

Je posterai le(s) scripts quand j'aurais fini ou si je rencontre un souci mais pour le moment ça va.

Seul hic, dans ce que je suis en train de faire, c'est que le client se connecte à l'appli du chef grâce au port référencé. Ce qui est bien c'est que l'agent réceptionnera que les messages de son chef mais si le grand chef veut diffuser un message à tous le monde, il ne pourra pas car le client sera connecter sur le serveur de leur chef.

Je vous ferais un petit schéma de ce que je veux au final pour faciliter la compréhension de la demande. Mais vous m'avez déjà énormément aidé. Merci à vous.

@GhostLine, j'avais pensé à un truc du genre mais je me suis dit qu'avec 1200 ordinateurs, le fichier ini risque d'être un peu gros et surtout la gestion avec les nouveaux postes et les anciens à enlever, ça risque d'être un peu galère. Sauf si c'est le client qui rajoute sa ligne pour son message dans le fichier INI et que le serveur lui scrute le fichier pour savoir a qui il peut envoyer.

Je pense à truc du genre (si ma première solution ne fonctionne pas) par rapport à ce que tu me conseils :
Client --> Dès qu'il se connecte, il rajoute sa ligne dans le fichier "PC01="
Serveur --> Vérifie les PCs connectés dans le fichier ordre_reseau.ini.
Serveur --> Envoie le message en inscrivant dans le fichier "PC01=Coucou c'est nous"
PC01 --> lecture du fichier INI sur le serveur
PC01 --> Une valeur pour moi ? Je récupère la valeur et l'affiche dans l'infobox
PC01 --> Modifie la valeur "PC01=Coucou c'est nous" en "PC01=Lu"
Serveur --> lecture du fichier INI sur PC01
Serveur --> Valeur=Lu ? On efface l'ancienne demande
Serveur --> remplace la ligne de son fichier ordre_reseau.ini par "PC01="
PC01--> lecture du fichier INI sur le serveur
PC01 --> pas de valeur --> on en fait rien
PC01 --> Se déconnecte --> Efface sa ligne "PC01=" par ""

Ça peut le faire un truc du genre ? Seul problème que je vois c'est la dernière ligne, la déconnexion car tout devra être automatique, cela signifie que quand l'agent fait "Fermer la session ou arrêter", le logiciel lui devra vite faire remplacer sa valeur avant la fermeture et ça, ça risque d'être foireux.
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] Popup (TrayTip) sur le réseau.

#10

Message par Sea »

Sinon tu fais l'inverse de ce que j'ai dis auparavant (BTW c'étais du TCP/IP dont je parlais hein...)
L'admin est un client (il ce connecte)
Les utilisateurs sont des serveurs (en attente de connexion de client).

En utilisant cette sublime UDF http://www.autoitscript.fr/forum/viewto ... =21&t=8354 (POO) ou sinon
celle-ci plus traditionnelle... http://www.autoitscript.fr/forum/viewto ... hilit=+tcp
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Popup (TrayTip) sur le réseau.

#11

Message par jguinch »

Pour le boulot, j'ai créé un système dans le même genre (pas pour envoyer des messages, mais pour déployer des applications à distance).
Je ne rentre pas dans le détail de mon usine, mais pour répondre à ta question de départ, voilà comment je verrais ça (j'écris au présent, mais ce ne sont que des idées) :

Le fonctionnement :
- un programme sur les postes client (un agent)
- un serveur PHP + petite base MySQL, pourvu d'une interface web

Le script agent sur les postes clients
Il tourne en boucle infinie et va télécharger/consulter toutes les X minutes (délai défini par le serveur) une page sur le serveur :
InetGet("http://serveur/app/request.php?COMPUTER ... ME=jguinch", @TempDir & "\request.ini", 1)
Le fichier résultant est de type .ini est ressemble à ça :

Code : Tout sélectionner

[AGENT]
VERSION=2.0.0.3
URL=http://serveur/app/agent.exe

[MISE A JOUR APPLIMETIER]
ID=1
MESSAGE=Une mise à jour de l'application APPLIMETIER est prévu le jeudi 25 décembre 2014. Pensez à éteindre l'ordinateur.
CONDITION=FileExists(@ProgramFilesDir & "\APPLIMETIER\APPLIMETIER.exe")

[AU BOULOT]
ID=2
MESSAGE=Allez, au boulot !
CONDITION=NOT ProcessExists("APPLIMETIER.exe")
 
Une fois qu'il a récupéré le fichier, le script agent va lire les sections une à une et exécuter chaque condition (avec Execute). Si Execute retourne 1, le script affiche le message, sinon, il passe son chemin.
Une fois que tout a été traité, l'agent appel de nouveau la page request.php, en lui passant les paramètres qui indiqueront ce qui a été traité :
InetGet("http://serveur/app/request.php?COMPUTERNAME=MONPC&OK=1", @TempDir & "\request.ini", 1) (OK=1 correspond à "j'ai traité le message ID=1" - le premier ici)
Le serveur ajoute dans sa base de données le nom de la machine, afin de ne plus proposer le message (ID=1) à celle-ci.
La section AGENT permet de comparer la version de l'agent (client) avec la dernière version disponible. Si la version définie dans le fichier .INI est supérieure à celle de l'agent, il se met à jour lui-même.


Le serveur
1) L'interface permet de définir :
a/ pour chaque message :
- le titre du message
- le contenu du message
- la date et/ou l'heure planifiée si besoin
- la liste des noms de machines ou adresse IP concernés par le message
- les noms d'utilisateurs concernés
- une ou plusieurs conditions AutoIt qui s'exécuteront en local par l'agent (Execute)
b/ le délai de connexion des agents (les agents se connectent au serveur tous les X minutes)
c/ la version de l'agent (permet de mettre à jour l'agent automatiquement)

2) Le serveur dispose d'une page (request.php) qui génère du texte avec une mise en forme de type "fichier INI". Cette page est générée dynamiquement par le serveur en comparant les paramètres fournis par l'agent et la configuration de chaque message :
- la machine a déjà traité ce message ou non
- nom de machine ou IP est dans la liste ou non
- nom d'utilisateur dans la liste ou non
- date/heure dans le créneau ou non

Voilà, c'est beau dans la théorie... :D
On est bien d'accord : c'est loin d'être du temps réel, mais ça permet d'avoir un truc plutôt robuste côté serveur...
Je ne suis pas parti sur du TCP à cause de la complexité du multi-client (à l'époque, je ne connaissais pas trop ça et ça me paraissait bancal comme solution pour gérer autant de connexions).
Cela dit, on peut tout à fait ajouter un serveur TCP sur chaque agent, ce qui permettrait d'envoyer un signal depuis le serveur à qui bon nous semble (pour provoquer le rafraichissement de l'agent).
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] Popup (TrayTip) sur le réseau.

#12

Message par Sea »

Effectivement pour 0-100 postes le tcp multi client conviennent mais après effectivement pour un plus grand nombre de poste un serveur web est mieux qun .ini
ViviVang
Niveau 1
Niveau 1
Messages : 10
Enregistré le : ven. 11 oct. 2013 09:02
Status : Hors ligne

Re: [R] Popup (TrayTip) sur le réseau.

#13

Message par ViviVang »

Bonjour à tous !

Désolé pour ce long moment de silence ^^ J'ai eu pas mal de truc à faire m'empêchant de faire ce petit logiciel. Mais c'est bon. J'ai pu mis mettre. Je vais passer en résolu le sujet car j'ai fait quelque chose qui me convient. Et comme j'aime pas laisser un sujet sans son petit "R", je reviens :p

Donc, grâce à vos conseils, j'ai pu faire quelques chose de simple mais efficace.

En gros, il y a trois scripts :
- L'interface d'envoie des messages et admin en même temps.
-> Cette interface permet d'envoyer des messages aux personnes ou groupe sélectionnés dans la liste.
-> Cette liste s'alimente via l'interface Admin que l'on accède grâce à un bouton qui n’apparaît seulement si tu fais partie du groupe Admin dans l'AD.
-> Via l'interface Admin, on peut créer un groupe et l'ajouter à une personne et/ou attribuer un groupe de distribution à une personne
-> Lors de l'envoi d'un message, ça va écrit dans un dossier (qui est sur un partage réseau) un fichier txt au nom de la personne sélectionnée dans la liste.

- Le deuxième script est celui qui tourne en tâche de fond.
-> Il s'agit d'une simple boucle qui vérifiera toutes les x minutes s'il n'y a pas de fichier txt à son nom. Si c'est le cas, il l'affiche.

- Et le dernier permet juste la mise à jour automatique du logiciel.

Je vais mettre le script cependant, il y a des infos qu'il faudra modifier car il s'agit d'info que je ne peux pas mettre comme ça. Donc à sera remplacer par des ****** mais les commentaires pourront aidé à mettre ce qu'il faut.

Script interface message :
► Afficher le texte
Script lecture message tâche de fond :
► Afficher le texte
Script update :
► Afficher le texte
Le dossier partagé contient 4 sous-dossier :
- AFFECTER
- MESSAGES
- MISE_A_JOUR
_ REGROUPEMENTS

En PJ : Ce que ça donne et les deux fichiers ajout.jpg et suppr.jpg

En espérant que ça servent pour d'autre.
Fichiers joints
Popup.JPG
Popup.JPG (16.11 Kio) Vu 2896 fois
Interface 1.JPG
Suppr.jpg
Suppr.jpg (2.22 Kio) Vu 2896 fois
Ajout.jpg
Ajout.jpg (2.43 Kio) Vu 2896 fois
Répondre