[..] Connaître si mon script s'exécute ailleurs
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
Utilisateur 4989 supprimé
- Status : Hors ligne
[..] Connaître si mon script s'exécute ailleurs
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.
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.
Re: [..] Connaître si mon script s'exécute ailleurs
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.
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 !
- jchd
- 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
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
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.
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.
Re: [..] Connaître si mon script s'exécute ailleurs
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 :
Pour vérifier si le programme est lancé sur une autre machine :
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
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
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 :
Script qui vérifie si l'autre script est en cours exécution :
Ce qui ressort : "Erreur TCPListen".
J'ai fait une erreur ?
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
WEndCode : 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)J'ai fait une erreur ?
Re: [..] Connaître si mon script s'exécute ailleurs
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 !
Re: [..] Connaître si mon script s'exécute ailleurs
Peut etre voir la valeur d'@error sur MSDN.
Et ajouter un TCPShutdown.
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
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 ?jguinch a écrit :euuuh, rassure-moi, tu as bien remplacé $IP = "adresse IPv4" par une vraie adresse IP ???
@error me donne 10048. Sur MSDN (http://msdn.microsoft.com/en-us/library/ms740668.aspx), l'erreur 10048 correspond à ceci :DimVar a écrit :Peut etre voir la valeur d'@error sur MSDN.
Et ajouter un TCPShutdown.
Donc je dois changer le "10000" ?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.
Où dois-je mettre "TCPShutdown" ? Dans le 1er ou le 2nd code ?
Re: [..] Connaître si mon script s'exécute ailleurs
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...
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
J'ai fais ceci pour le script qui vérifie si l'autre script est en cours exécution :
Erreur 10093 :
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)Pourquoi tu trouve cette solution limite ? Elle n'est pas bonne ?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.
Re: [..] Connaître si mon script s'exécute ailleurs
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.
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
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.
Re: [..] Connaître si mon script s'exécute ailleurs
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
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 :
Tu peux quand même te lever de ta chaise et aller voir si le script est lancé sur l'autre PC
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 !
Re: [..] Connaître si mon script s'exécute ailleurs
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....
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
@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.
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.
Re: [..] Connaître si mon script s'exécute ailleurs
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
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.
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.
Re: [..] Connaître si mon script s'exécute ailleurs
Ca aurait pu être bien de préciser que le deuxième PC ne se trouve pas sur le même réseau local... !l'ordi distant est éteint et il est à plusieurs kilomètres
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
Ah, mince ! Je ne savais pas que ça avais de l'importance.


