[..] Connaître si mon script s'exécute ailleurs

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Utilisateur 4989 supprimé
Status : Hors ligne

[..] Connaître si mon script s'exécute ailleurs

#1

Message par Utilisateur 4989 supprimé »

Bonjour,
J'ai conçu un script pour 2 ordis. Je souhaiterais savoir si mon script s'exécute bien sur ces 2 ordis.
Comment faire ? Je n'en ai aucune idée.
Merci d'avance pour votre aide.
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#2

Message par DimVar »

Bonjour,



Moult possibilités...
L'une d'entre elle serait par exemple d’écrire un fichier horodaté sur un share toutes les x secondes, minutes, heures.
Une autre pourrait être l’écriture d'un log puis remplissage de celui-ci à heure fixe.


Cdlt.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#3

Message par jchd »

La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Utilisateur 4989 supprimé
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#4

Message par Utilisateur 4989 supprimé »

Mailslots correspond bien à ce que je souhaite. Mais je ne comprends pas comment l'utiliser. J'ai téléchargé un zip avec 3 scripts dont un qui permet d'envoyer (mais ça ne marche pas) et un autre qui permet de recevoir (mais ça ne marche pas non plus). Ce que je souhaite c'est que mon script envoie des infos de lui même, sans que ce soit moi à le faire.
Quelqu'un pourrait m'aider ? Merci d'avance.

J'ai aussi trouvé ce lien : http://msdn.microsoft.com/en-us/library ... 85%29.aspx qui peut peut-être aussi répondre à ma demande mais je ne comprends pas non plus comment l'utiliser.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#5

Message par jguinch »

L'idée de Mailslot est plutôt bonne...
On peut également utiliser les fonctions TCP : le programme écoute sur un port, il nous restera alors à vérifier si ce port est en écoute sur les postes distants.

Dans ton script :

Code : Tout sélectionner

TCPStartup()
Local $MainSocket = TCPListen(@IPAddress1, 10000, 100)
If $MainSocket = -1 Then Exit
 
Pour vérifier si le programme est lancé sur une autre machine :

Code : Tout sélectionner

$IP = "192.168.1.10"
TCPStartup()
$socket = TCPConnect($IP, 10000)
If $socket = -1 Then Exit
MsgBox(0, "OK", "Le programme est en cours d'exécution sur " & $IP)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Utilisateur 4989 supprimé
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#6

Message par Utilisateur 4989 supprimé »

J'ai un peu changer le code pour voir où est le problème car ils ne fonctionnent pas :
Script qui sera vérifié s'il est en cours exécution :

Code : Tout sélectionner

...........
While 1
         TCPStartup()
         Global $MainSocket = TCPListen(@IPAddress1, 10000, 100)
         If $MainSocket = -1 Then
             MsgBox(0, "Erreur", "Erreur TCPListen")
             Exit
         EndIf
WEnd
Script qui vérifie si l'autre script est en cours exécution :

Code : Tout sélectionner

     $IP = "adresse IPv4"
     TCPStartup()
     $socket = TCPConnect($IP, 10000)
     If $socket = -1 Then
         MsgBox(0, "Erreur", "Erreur TCPConnect")
     EndIf
     MsgBox(0, "OK", "Le programme est en cours d'exécution sur " & $IP)
Ce qui ressort : "Erreur TCPListen".
J'ai fait une erreur ?
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#7

Message par jguinch »

euuuh, rassure-moi, tu as bien remplacé $IP = "adresse IPv4" par une vraie adresse IP ???
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#8

Message par DimVar »

Peut etre voir la valeur d'@error sur MSDN.
Et ajouter un TCPShutdown.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Utilisateur 4989 supprimé
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#9

Message par Utilisateur 4989 supprimé »

jguinch a écrit :euuuh, rassure-moi, tu as bien remplacé $IP = "adresse IPv4" par une vraie adresse IP ???
Bien sûr, j'ai mis la valeur correspond à l'adresse IPv4. J'ai mis "adresse IPv4" pour éviter de la dévoiler parce que je pense que ça doit être un peu confidentiel, non ?
DimVar a écrit :Peut etre voir la valeur d'@error sur MSDN.
Et ajouter un TCPShutdown.
@error me donne 10048. Sur MSDN (http://msdn.microsoft.com/en-us/library/ms740668.aspx), l'erreur 10048 correspond à ceci :
MSDN a écrit :Address already in use.

Typically, only one usage of each socket address (protocol/IP address/port) is permitted. This error occurs if an application attempts to bind a socket to an IP address/port that has already been used for an existing socket, or a socket that was not closed properly, or one that is still in the process of closing. For server applications that need to bind multiple sockets to the same port number, consider using setsockopt (SO_REUSEADDR). Client applications usually need not call bind at all—connect chooses an unused port automatically. When bind is called with a wildcard address (involving ADDR_ANY), a WSAEADDRINUSE error could be delayed until the specific address is committed. This could happen with a call to another function later, including connect, listen, WSAConnect, or WSAJoinLeaf.
Donc je dois changer le "10000" ?
Où dois-je mettre "TCPShutdown" ? Dans le 1er ou le 2nd code ?
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#10

Message par DimVar »

Re,

Testez avec l'IP 127.0.0.1.
L'ouverture de port est toujours délicate (pare-feu actif ?).
Tentez le port 21 (si vous n'avez pas de serveur FTP) et sortez TCPStartup() de la boucle.
Recontrôlez l'@error.

Cdlt.

[EDIT] Personnellement, je trouve limite d'ouvrir un port, de faire appel à la notion serveur/client pour connaitre le statut d'un script...
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Utilisateur 4989 supprimé
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#11

Message par Utilisateur 4989 supprimé »

J'ai fais ceci pour le script qui vérifie si l'autre script est en cours exécution :

Code : Tout sélectionner

$IP = "127.0.0.1"
$socket = TCPConnect($IP, 21)
If $socket = -1 Then
     MsgBox(0, "Erreur TCPConnect", @error)
EndIf
MsgBox(0, "OK", "Le programme est en cours d'exécution sur " & $IP)
Erreur 10093 :
MSDN a écrit :Successful WSAStartup not yet performed.

Either the application has not called WSAStartup or WSAStartup failed. The application may be accessing a socket that the current active task does not own (that is, trying to share a socket between tasks), or WSACleanup has been called too many times.
Pourquoi tu trouve cette solution limite ? Elle n'est pas bonne ?
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#12

Message par DimVar »

Je le répète, ce n'est que mon avis.
je trouve ça "limite" car c'est bien plus simple de créer un fichier et de tester sa présence, plutôt que de faire appel à des notions client/serveur avec toutes les contraintes que cela entraine. (sécurité, droits, ports, etc...)


Cdlt.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Utilisateur 4989 supprimé
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#13

Message par Utilisateur 4989 supprimé »

Sinon j'ai un compte FTP, mais le problème c'est que leur serveur est très régulièrement surchargé et il faut attendre plusieurs minutes pour qu'il remarche. Et ceci plusieurs fois par heure.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs  

#14

Message par jguinch »

Que ce soit MailSlot, TCP, FTP, partages, c'est monter une usine à gaz pour pas grand chose finalement...
Tu peux quand même te lever de ta chaise et aller voir si le script est lancé sur l'autre PC :P

Sérieusement, il existe plein d'outils qui permet de savoir si un process est lancé sur un poste distant.
Par contre, cela nécessitera également l'ajout d'une règle dans le Firewall, il faudra également connaître un nom d'utilisateur/mpt pour se connecter à la machine distante.

Si tu tiens absolument à utiliser AutoIt pour faire la vérif, tu as ces choix :
- MailSlot
- TCPConnect / TCPListen
- Création d'un fichier / accès à un partage
- Lister les processus distants
- Aller voir sur place ou téléphoner, envoyer un sms.

En ce qui te concerne, j'ai l'impression que tu n'es pas très à l'aise avec les commandes dos.
Donc pour progresser un peu, je te propose de regarder du côté de la commande tasklist, qui devrait être suffisante pour ce besoin.

Sinon, pour lister le processus distants avec AutoIt sans passer par un programme externe, on peut utiliser une requête WMI :
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#15

Message par DimVar »

Récapitulons :

Vous avez 2 PC (A & B) sur lesquels tournent le script.
Il vous suffit de dire au script de créer un fichier à heure fixe sur un share du réseau (PC C par exemple) et d'y contrôler la création du fichier. (heure de création)

Mais je laisse le soin aux autres de répondre sur l'erreur du serveur/client.

Cdlt.

[EDIT] PsList de la suite PSTOOLS (sysinternals), peut vous rendre service aussi....
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Utilisateur 4989 supprimé
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#16

Message par Utilisateur 4989 supprimé »

@jguinch : La méthode de lister les processus distants a l'air pas mal.
Si je comprends bien ton code, je dois mettre l'adresse IP de l'ordi distant dans $remoteIP ?

@DimVar : je vais prendre le code de jguinch qui est plus simple.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#17

Message par jguinch »

Oui, l'IP dans $remoteIP et le nom de l'exécutable dans $script.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Utilisateur 4989 supprimé
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#18

Message par Utilisateur 4989 supprimé »

OK. Pour l'instant, ça ne m'indique pas que le fichier est ouvert car l'ordi distant est éteint et il est à plusieurs kilomètres. Je vais demander à la personne de l'allumer.
En tout cas, en testant avec mon IP et en ouvrant le script sur mon ordi, ça fonctionne parfaitement, donc il n'y a pas de raison que ça ne marche pas avec l'ordi distant.

Je vous tient au courant.
Merci beaucoup à vous 2 pour votre aide.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#19

Message par jguinch »

l'ordi distant est éteint et il est à plusieurs kilomètres
Ca aurait pu être bien de préciser que le deuxième PC ne se trouve pas sur le même réseau local... !
Du coup, ça ne marchera pas avec mon script.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Utilisateur 4989 supprimé
Status : Hors ligne

Re: [..] Connaître si mon script s'exécute ailleurs

#20

Message par Utilisateur 4989 supprimé »

Ah, mince ! Je ne savais pas que ça avais de l'importance.
Répondre