Sujet du message: [..] Extinction et allumage de pc à distance
Posté: Ven 23 Juil 2010 18:24
Bonjour,
je suis débutant en script autoit je cherche à créer 2 scripts en fait
un pour gérer l'extinction d'un parc de pc et un autre pour l'allumage via wake on wan serait bien sinon wake on lan
j'ai déjà cherche sur le forum mais malheureusement aucun n'utilise de base mysql
ma base comporte 5 champs id_pc,ip,adresse_mac,extinction,allumage
le script d'allumage ne doit réveiller que les pc avec le champs allumage=1 le script d'extinction ne doit éteindre que les pc avec le champs extinction=1
et si possible ? une vérification après le lancement des commandes afin de vérifier que le ping repond ou pas et mettre à jour une table log avec l'id_pc afin de savoir si l'extinction a fonctionné ou si l'allumage a fonctionné
un grand grand merci à celui ou ceux qui veulent bien m'aider sinon pas grave
je devrais continuer à utiliser des méthodes oldschool avec des fichiers textes pas pratique à administrer
Merci
AutoIt Français
Jerome
Niveau 4
Inscription: Mar 07 Avr 2009 07:35 Messages: 77 Age: 20
Localisation: Picardie
Sujet du message: Re: [..]Extinction et allumage de pc à distance
Posté: Ven 23 Juil 2010 18:47
Je pense qu'il faudrait que vous cherchiez du coté de PsExec pour lancer des scripts sur un PC distant. (pour l'extinction)
Pour l'allumage, j'ai pas d'idée pour le moment :s
Aprés, c'est plutôt des commandes de base dans Auto It il me semble pour éteindre un PC.
Jérôme
AutoIt Français
GELDROC
Niveau 6
Inscription: Sam 10 Oct 2009 09:15 Messages: 202 Age: 22
Sujet du message: Re: [..]Extinction et allumage de pc à distance
Posté: Ven 23 Juil 2010 19:29
salut pour allumer mon serveur a distance la seul solution que jai trouver est de connecter mon pc au serveur a laid du port LPT (pour le control du port LPT et COM fait une recherche) brancher directement a sur les contact de la carte mere de mon serveur
Inscription: Mar 07 Avr 2009 07:35 Messages: 77 Age: 20
Localisation: Picardie
Sujet du message: Re: [..]Extinction et allumage de pc à distance
Posté: Ven 23 Juil 2010 20:00
J'avais entendu quelque chose il y a quelque temps comme un signal que l'on pouvait envoyer par le réseau à un poste éteint et qui l'allumait.
Présent sur Dell il me semble, mais j'en sait pas plus. J'essayerai d'en savoir plus à mon boulot lundi avec un collègue.
Jérôme
Edit : Haha, j'ai trouver ceci sur le forum anglais qui pourrait t'être utile (code en première page.).
AutoIt Français
Yogui
Modérateur
Inscription: Ven 18 Avr 2008 16:29 Messages: 478 Age: 32
Sujet du message: Re: [..]Extinction et allumage de pc à distance
Posté: Ven 23 Juil 2010 20:43
Première chose je n'ai pas tester mon code je n'ai pas le courage d'installer un mysql sur ma machine
donc premier jet totalement à l'aveugle mais je pense qu'il y a de l'idée je n'ai pas du tout gérer le changement de flag ni le ping mais c'est faisable
Inscription: Ven 20 Juil 2007 20:00 Messages: 5598 Age: 43
Localisation: Bordeaux
Sujet du message: Re: [..]Extinction et allumage de pc à distance
Posté: Ven 23 Juil 2010 21:07
@cyberhunter Je suis très étonné que vous n'ayez trouvé aucun sujet traitant de vos demandes, car si dans la recherche je tape +wake +lan je trouve un sujet bien complet sur le Wake On Lan.
En ce qui concerne la base de donnée MySql, c'est pareil, le sujet ayant été traité plusieurs fois, je doute qu'une recherche efficace reste vaine ...
Sans argument Affiche ce message (identique à -?) -i Affiche l'interface graphique, doit être la 1ère option -l Ferme la session (ne peut pas être utilisé avec l'option -m) -s Met l'ordinateur hors tension -r Met l'ordinateur hors tension et le redémarre -a Annule une mise hors tension système -m \\nom_ordinateur Ordinateur distant à mettre hors tension/redémarrer/annuler -t xx Définir le délai d'expiration pour la mise hors tension à xx secondes -c "commentaire" Commentaire de la mise hors tension (maximum de 127 caractères) -f Force des applications en cours d'exécution à se fermer sans avertissement -d [u][p]:xx:yy Le code de raison de la mise hors tension u est le code utilisateur p est un code de mise hors tension planifié xx est le code de raison majeur (valeur entière inférieure à 256) yy est le code de raison mineur (valeur entière positive inférieure à 65536)
Sujet du message: Re: [..]Extinction et allumage de pc à distance
Posté: Mer 28 Juil 2010 10:29
euhhh
comment tu testes un script autoit sans le compiler ?
AutoIt Français
SrBelial
Modérateur
Inscription: Jeu 22 Juil 2010 10:29 Messages: 164 Age: 24
Localisation: 81 et 31
Sujet du message: Re: [..]Extinction et allumage de pc à distance
Posté: Mer 28 Juil 2010 12:15
Deux méthodes d'exécution d'un script sans passer par la compilation : * ouvre ton script avec SciTE, puis appuie sur F5 * ou bien clic droit sur le fichier de ton script (extension .au3) et choisis "lance le script"
bien entendu si tu travaille sur des gros scripts tu te rendras très vite compte que la compilation n'intervient plus lors du développement mais uniquement lors du déploiement (en gros une fois que ton script marche et a été testé)
Si à chaque modif que tu fais au script il te faut recompiler, tu vas perdre pas mal de temps !
bon courage !
.-SrB-.The One
NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
OUI ! AutoIt est un langage à part entière !
Dans SciTE sélectionnez 1 mot puis F1
Don't want english doc ?? go to documentation française !! >>ICI<<
AutoIt Français
cyberhunter
Niveau 1
Inscription: Ven 23 Juil 2010 18:09 Messages: 7
Sujet du message: Re: [..]Extinction et allumage de pc à distance
Posté: Mer 28 Juil 2010 14:38
ok j'ai donc fait tester le script et j'ai exactement la même erreur que lors de la compilation Undertiminated string à la même ligne
AutoIt Français
SrBelial
Modérateur
Inscription: Jeu 22 Juil 2010 10:29 Messages: 164 Age: 24
Localisation: 81 et 31
Sujet du message: Re: [..]Extinction et allumage de pc à distance
Posté: Mer 28 Juil 2010 15:50
Il manque un guillemet à la fin de la chaine de caractères pour la terminer ... Si tu ne l'as pas vu c'est sans doute que la coloration syntaxique n'est pas activée dans ton éditeur !
pour rappel : Dans SciTE : menu "Langage > AutoIT 3"
avec cette coloration les chaines de caractères apparaissent en gris.
Dans le cas de chaines complexes comme celle ci par exemple, il peut être plus pratique d'utiliser une syntaxe plus lisible !
De cette façon tu sais que si une de tes lignes commence par un guillemet (double ou simple), alors cette même ligne doit forcément se terminer par un guillemet identique (placé juste avant le "& _")
.-SrB-.The One
NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
OUI ! AutoIt est un langage à part entière !
Dans SciTE sélectionnez 1 mot puis F1
Don't want english doc ?? go to documentation française !! >>ICI<<
AutoIt Français
cyberhunter
Niveau 1
Inscription: Ven 23 Juil 2010 18:09 Messages: 7
Sujet du message: Re: [..] Extinction et allumage de pc à distance
Posté: Jeu 29 Juil 2010 10:39
Oki Merci ça marche mieux avec le quote à la fin de la ligne
par contre maintenant j'ai une erreur sur la ligne 20
Code
_MySQL_InitLibrary()
Unknown function name
je ne l'ai pas trouvé dans le mysql.au3 elle se trouve ailleur ?
Merci
AutoIt Français
Yogui
Modérateur
Inscription: Ven 18 Avr 2008 16:29 Messages: 478 Age: 32
Sujet du message: Re: [..] Extinction et allumage de pc à distance
Sujet du message: Re: [..] Extinction et allumage de pc à distance
Posté: Ven 30 Juil 2010 13:35
Hello,
j'ai fait qqch sur un coin de table, mais c'est à toi de l'adapter. Chez moi, ça marche.
Je suis parti de deux fichiers, mais je ne sais plus ou je les ai trouvé, pas trouvé le topic, voici leurs nom : MultiTCPServer.au3 & BeispielClient.au3
Je les ai modifiés rapidement pour faire ce que tu veux, mais par contre, ça ne fait que l'éteindre.
Client :
Spoiler pour client :
Code
Global Const $IP = @IPAddress1 Global Const $PORT = 5393 TCPStartup()
$hCon = TCPConnect($IP,$PORT) If @error Then Exit MsgBox(16,"","Serveur pas démarré. Erreur: "&@error)
TCPSend($hCon,"Je suis "&@ComputerName&" avec utilisateur "& @UserName) While 1 $sRecv = TCPRecv($hCon,1024) If @error Then ExitLoop Select Case $sRecv = "shutdown -r" Run(@ComSpec & ' /k' & 'shutdown -r') Case $sRecv = "shutdown -a" Run(@ComSpec & ' /k' & 'shutdown -a') Case $sRecv <> "" MsgBox(0,"Client Incoming" & @IPAddress1,$sRecv) EndSelect Sleep(100) WEnd
TCPShutdown()
Serveur :
Spoiler pour serveur :
Code
#include <GUIConstantsEx.au3> Global Const $IP = @IPAddress1 Global Const $PORT = 5393 Global Const $MAXCON = 50;Maximal 50 Verbindungen
Global $aClients[$MAXCON + 1][3] $aClients[0][0] = $MAXCON
Opt("GuiOnEventMode", 1)
TCPStartup()
$hListen = TCPListen($IP, $PORT, $MAXCON)
AdlibRegister("TCPAcc", 100)
;Hat nicht zu interessieren, ist nur GUI GUICreate("Server", 400, 150) GUISetOnEvent(-3, "_Exit")
$hListV = GUICtrlCreateListView("ID|Client|IP", 0, 0, 200, 150) $hEdit = GUICtrlCreateEdit("Texte à envoyer", 200, 0, 200, 80,0) $hSendToAll = GUICtrlCreateRadio("Envoyer à tous",200,80,200,15) GUICtrlSetOnEvent(-1,"_gui_radio") GUICtrlSetState(-1,$GUI_CHECKED) GUICtrlCreateRadio("Que a cette IP:",200,95,200,15) GUICtrlSetOnEvent(-1,"_gui_radio") $hInput = GUICtrlCreateInput("",200,110,200,20) GUICtrlSetState(-1,$GUI_DISABLE) GUICtrlCreateButton("SEND", 200, 130, 200, 20) GUICtrlSetOnEvent(-1, "_gui_send") GUISetState()
;Main Schleife: Hier wird das, was in den Server reinkommt abgefangen While 1 For $i = 1 To $aClients[0][0] If $aClients[$i][0] Then $sRecv = TCPRecv($aClients[$i][0], 1024) If $sRecv Then TrayTip("Nouvelle connection " & $aClients[$i][1], $sRecv, 2) EndIf Next Sleep(100) WEnd
;GUI Krimskrams Func _gui_radio() ConsoleWrite(@GUI_CtrlId & @CRLF) If @GUI_CtrlId = $hSendToAll Then GUICtrlSetState($hInput,$GUI_DISABLE) Else GUICtrlSetState($hInput,$GUI_ENABLE) EndIf
EndFunc
;GUI Krimskrams Func _gui_send() Local $sText = GUICtrlRead($hEdit) If BitAND(GUICtrlRead($hSendToAll), $GUI_CHECKED) Then ConsoleWrite("--" & @CRLF) _TCP_ServerBroadcast($sText) Else Local $iID = GUICtrlRead($hInput) ConsoleWrite($iID & @CRLF) If $iID < 1 Or $iID > $MAXCON Then Return MsgBox(16,"","ID doit être entre 1 et "&$MAXCON&" !") TCPSend($aClients[$iID][0],$sText) If @error Then _DelClient($aClients[$iID][0]) EndIf EndFunc ;==>_gui_send
;Adlib funktion, hier wird alle 100ms nach einem neuen Client gesucht Func TCPAcc() $hAcc = TCPAccept($hListen) If $hAcc > 0 Then _AddClient($hAcc) EndFunc ;==>TCPAcc
;Hier wird der Client hinzugefügt Func _AddClient($hSocket) Local $i For $i = 1 To $aClients[0][0] If Not $aClients[$i][0] Then ExitLoop Next $aClients[$i][0] = $hSocket $aClients[$i][1] = SocketToIP($hSocket) $aClients[$i][2] = GUICtrlCreateListViewItem($i&"|"&$aClients[$i][0] & "|" & $aClients[$i][1],$hListV) Return TCPSend($hSocket, "welcome") EndFunc ;==>_AddClient
;Hier wird er ggf. wieder gelöscht Func _DelClient($hSocket) Local $i For $i = 1 To $aClients[0][0] If $aClients[$i][0] = $hSocket Then TCPCloseSocket($aClients[$i][0]) $aClients[$i][0] = '' ;Entferne Client GUICtrlDelete($aClients[$i - 1][2]) Return True EndIf Next Return False EndFunc ;==>_DelClient
;Sendet einen String an alle verbundenen Clients Func _TCP_ServerBroadcast($sText) Local $i For $i = 1 To $aClients[0][0] If $aClients[$i][0] Then TCPSend($aClients[$i][0], $sText) If @error Then _DelClient($aClients[$i][0]) EndIf Next EndFunc ;==>_TCP_ServerBroadcast
Func _Exit() Local $i For $i = 1 To $aClients[0][0] If $aClients[$i][0] Then TCPCloseSocket($aClients[$i][0]) GUICtrlDelete($aClients[$i - 1][2]) EndIf Next TCPShutdown() Exit EndFunc ;==>_Exit
; Function to return IP Address from a connected socket. ;---------------------------------------------------------------------- Func SocketToIP($SHOCKET) Local $sockaddr, $aRet
$aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _ "ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr)) If Not @error And $aRet[0] = 0 Then $aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3)) If Not @error Then $aRet = $aRet[0] Else $aRet = 0 EndIf
$sockaddr = 0
Return $aRet EndFunc ;==>SocketToIP
La partie serveur est le fichier original, j'ai juste traduit des champs.
Voilà, tu lances le serveur et ensuite sur ta machine client tu lances le client. Si tu écris du texte sur le serveur, dans le client il y aura une fenêtre avec ton texte, mais si tu écris shutdown -r le client va s'éteindre au bout de 30s. et si tu envoies shutdown -a, ça va arrêter cette commande d'extinction.
C'est qqch fait à la va vite, à toi de modifier ce que tu veux.
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
Vous ne pouvez pas poster de nouveaux sujets Vous ne pouvez pas répondre aux sujets Vous ne pouvez pas éditer vos messages Vous ne pouvez pas supprimer vos messages Vous ne pouvez pas joindre des fichiers