Page 1 sur 1
[R] Problème d'écriture dans cmd
Posté : jeu. 09 avr. 2015 13:51
par caropost
Bonjour à tous,
Je souhaite automatiser la configuration d'un switch et pour cela j'ai d'abord besoin de me connecter en série avec Putty ou Plink, envoyer quelques commandes, lancer l'invité de commande puis me connecter en FTP depuis un dossier placé sur le pc et transférer des fichier du pc au switch.
Pour cela, je souhaite vérifier ce que me retourne Plink/putty et l'invité de commande afin de ne pas envoyer trop tôt des commandes pour ne pas faire n'importe quoi.
La première partie de mon automatisation fonctionne : je peux me connecter en série via Plink, attendre que le port série renvoie "login" pour envoyer mon login etc. Je suis un peu en aveugle car rien ne s'affiche. Pour savoir où le programme en est, je dois ouvrir le fichier de log mais bon, ça va quand même.
Là où ça se complique c'est lorsque je souhaite faire la même chose mais avec l'invité de commande : je lis bien ce qu'il y a dedans mais impossible d'envoyer la commande souhaitée...
J'utilise des fonctions décrites dans ce lien :
http://www.autoitscript.com/forum/topic ... k-wrapper/
Je les ai adapté à mes besoins. J'utilise ces fonctions (en commentaires les lignes qui me servent pour plink) :
► Afficher le texte
Code : Tout sélectionner
;start the plink session
;func _Start_plink($_plink_loc,$_plinkserver)
func _Start_plink($_plink_loc)
_Plink_close(); close any stray plink sessions before starting
if $_plink_loc = "" then
MsgBox(0, "Error", "Unable to open plink.exe",10)
return false
Exit
endif
#cs
if $_plinkserver = "" then
MsgBox(0, "Error", "Unable to open server",10)
Exit
return false
endif
#ce
$_plinkhandle = Run($_plink_loc,"",@SW_MAXIMIZE, $STDIN_CHILD + $STDOUT_CHILD) ; $STDIN_CHILD + $STDOUT_CHILD + $STDERR_CHILD)
;$_plinkhandle = Run($_plink_loc & " -serial " & $_plinkserver,"",@SW_MAXIMIZE, $STDIN_CHILD+$STDOUT_CHILD)
return $_plinkhandle
endFunc
;Initialize plink session log file === je n'ai pas touché à cette fonction ===
func _Init_plink_log($_plink_logfile)
$_plink_logfile_handle = FileOpen($_plink_logfile, 2)
; Check if file opened for writing OK
If $_plink_logfile_handle = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
return true
endfunc
func _Expect($match_text)
local $text
local $sBuffertext
local $found
local $iBegin = TimerInit()
While 1
if TimerDiff($iBegin) > $_plink_timeout then return false
$text = StdoutRead($_plinkhandle)
MsgBox(0, "Test", $text)
$sBuffertext = $sBuffertext & $text
if $_plink_logging Then
FileWriteLine($_plink_logfile_handle,"**********************NEW SECTION************************")
FileWriteLine($_plink_logfile_handle, $match_text)
FileWriteLine($_plink_logfile_handle, $text)
FileWriteLine($_plink_logfile_handle,"**********************END SECTION************************")
endif
$found = StringRegExp($text,$match_text)
If $found = 1 Then
If $_plink_display_messages Then MsgBox(4096, $match_text, $text, $_plink_display_message_time)
ExitLoop
Endif
sleep(300)
Wend
return $sBuffertext
EndFunc
func _SayPlus($output)
StdinWrite($_plinkhandle, $output & @CR)
endfunc
Voici comment je l'utilise :
► Afficher le texte
Code : Tout sélectionner
#include <PlinkWrapper_Test_cmd.au3>
;Initialize Variables------------------------------------------------------------------------------------------------------------
;$username="admin " ; It seems necessary to put an extra space after the login name. The last character is being cut off.
;$password="admin1 "; It seems necessary to put an extra space after the password. The last characters is being cut off.
$_plink_logging=true ; Turn Logging ON (default is off)
$_plink_display_messages=true ; Turn Screen Messages ON (default is on)
$_plink_display_message_time=300 ; Display message for 5 mins (default 1 sec)
;--------------------------------------------------------------------------------------------------------------------------------
; Initizations-------------------------------------------------------------------------------------------------------------------
;$_plinkhandle=_Start_plink("C:\Program Files\PuTTY\plink.exe","192.168.5.15")
$_plinkhandle=_Start_plink("cmd.exe")
_Init_plink_log("C:\Documents and Settings\Administrator\Desktop\putty2.log")
_Expect("Microsoft Windows XP")
MsgBox(0, "OK", "OK")
_SayPlus("dir")
MsgBox(0, "OK bis", "OK bis")
_Expect("Le volume dans le lecteur C")
Je reçois bien "Microsoft Windows XP", mes 2 fenêtres "OK" et "OK bis" s'ouvrent bien mais après, je ne lis plus rien... Dans ma fonction _Expect, la fenêtre "Test" s'ouvre vide...
Sauriez-vous m'aider ? Je pense que l'invité de commande n'a pas pris en compte le _SayPlus("dir")...
Re: [..] Problème d'écriture dans cmd
Posté : jeu. 09 avr. 2015 20:03
par orax
J'ai fait des tests mais je ne sais pas d'où vient le problème. Il y a quand même le @CR dans la fonction _SayPlus qui me semble bizarre. Je l'ai remplacé par un @CRLF. À ma connaissance le retour à la ligne communément utilisé sous Windows est CR LF.
Les modifications sont commentées de cette manière :
; ### ... Avec ces modifs il n'y aura plus besoin d'ouvrir le fichier de log pour voir ce que plink renvoie.
► Afficher le texte
Code : Tout sélectionner
#include <PlinkWrapper_Test_cmd.au3>
;Initialize Variables------------------------------------------------------------------------------------------------------------
;$username="admin " ; It seems necessary to put an extra space after the login name. The last character is being cut off.
;$password="admin1 "; It seems necessary to put an extra space after the password. The last characters is being cut off.
$_plink_logging = True ; Turn Logging ON (default is off)
$_plink_display_messages = True ; Turn Screen Messages ON (default is on)
$_plink_display_message_time = 300 ; Display message for 5 mins (default 1 sec)
;--------------------------------------------------------------------------------------------------------------------------------
; Initizations-------------------------------------------------------------------------------------------------------------------
;$_plinkhandle=_Start_plink("C:\Program Files\PuTTY\plink.exe","192.168.5.15")
;~ $_plinkhandle = _Start_plink("cmd")
;~ _Init_plink_log("C:\Documents and Settings\Administrator\Desktop\putty2.log")
; BONS
$_plinkhandle = _Start_plink("cmd")
_Expect("(?im)^[a-z]:\\")
StdinWrite($_plinkhandle,"ping localhost" & @CRLF)
_Expect("(?im)^[a-z]:\\")
StdinWrite($_plinkhandle,"dir" & @CRLF)
_Expect("(?im)^[a-z]:\\")
;~ $_plinkhandle = _Start_plink("plink.exe -ssh localhost -l root") ; et éventuellement -pw pour spécifier directement de mot de passe
;~ _Expect("password: ")
;~ _SayPlus("SECRET") ; pas besoin d'ajouter un espace à la fin
;~ _Expect("(?m)^root@")
;~ _SayPlus("pwd")
;~ _stdOutRead()
► Afficher le texte#include <PlinkWrapper_Test_cmd.au3>
Code : Tout sélectionner
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
#include <Array.au3>
; #VARIABLES# ====================================================================================================================
Global $_plinkhandle = "" ; used to handle starting of plink
Global $_plinkserver = "" ; name of server you wish to connect to
Global $_plink_loc = "" ; location of plink.exe executable on workstation
Global $_plink_display_messages = False ; display interim messages to screen (default false)
Global $_plink_display_message_time = 1 ; time in seconds messages are displayed
Global $_plink_logging = False ; record plink log file (default false)
Global $_plink_logfile = "" ; location of plink log file
Global $_plink_logfile_handle = "" ; plink log file handle
; ===============================================================================================================================
;start the plink session
;func _Start_plink($_plink_loc,$_plinkserver)
Func _Start_plink($_plink_loc)
_Plink_close(); close any stray plink sessions before starting
If $_plink_loc = "" Then
MsgBox(0, "Error", "Unable to open plink.exe", 10)
Return False
Exit
EndIf
#cs
if $_plinkserver = "" then
MsgBox(0, "Error", "Unable to open server",10)
Exit
return false
endif
#ce
; ### @SW_HIDE car, de toute façon, la fenêtre ne pourra pas être visible
; ### $STDERR_MERGED pour avoir aussi le flux des erreurs via StdoutRead()
$_plinkhandle = Run($_plink_loc, @ScriptDir, @SW_HIDE, $STDIN_CHILD + $STDERR_MERGED) ; $STDIN_CHILD + $STDOUT_CHILD + $STDERR_CHILD)
;$_plinkhandle = Run($_plink_loc & " -serial " & $_plinkserver,"",@SW_MAXIMIZE, $STDIN_CHILD+$STDOUT_CHILD)
Return $_plinkhandle
EndFunc ;==>_Start_plink
;Initialize plink session log file === je n'ai pas touché à cette fonction ===
Func _Init_plink_log($_plink_logfile)
$_plink_logfile_handle = FileOpen($_plink_logfile, 2)
; Check if file opened for writing OK
If $_plink_logfile_handle = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
Return True
EndFunc ;==>_Init_plink_log
Func _Expect($match_text)
Local $text
Local $sBuffertext
Local $found
Local $iBegin = TimerInit()
While 1
;~ If TimerDiff($iBegin) > $_plink_timeout Then Return False
$text = StdoutRead($_plinkhandle)
$sBuffertext = $sBuffertext & $text
If $_plink_logging Then
FileWriteLine($_plink_logfile_handle, "**********************NEW SECTION************************")
FileWriteLine($_plink_logfile_handle, $match_text)
FileWriteLine($_plink_logfile_handle, $text)
FileWriteLine($_plink_logfile_handle, "**********************END SECTION************************")
EndIf
$found = StringRegExp($text, $match_text)
If $found = 1 Then
;~ If $_plink_display_messages Then MsgBox(4096, $match_text, $text, $_plink_display_message_time)
; ### affiche dans la console le texte recherché (en bleu) et le texte trouvé
If $_plink_display_messages Then ConsoleWrite(StringFormat("\r\n>""%s""\r\n""%s""\r\n", $match_text, $text))
ExitLoop
Else
; ### sinon si le texte recherché n'est pas trouvé, il sera quand même affiché dans la console
ConsoleWrite($text)
EndIf
Sleep(300)
WEnd
Return $sBuffertext
EndFunc ;==>_Expect
; ### affiche le flux STDOUT dans la console
; ### attention : la boucle peut être infinie !
Func _stdOutRead()
Local $text
While 1
$text = StdoutRead($_plinkhandle)
If @error Then
ExitLoop
EndIf
ConsoleWrite($text)
WEnd
EndFunc ;==>_stdOutRead
Func _SayPlus($output)
StdinWrite($_plinkhandle, $output & @CRLF) ; ### il faudrait essayer avec @CRLF ou @LF
EndFunc ;==>_SayPlus
; #FUNCTION# ====================================================================================================================
; Name...........: _Plink_close
; Description ...: closes plink.exe process
; Author ........: Joel Susser (susserj)
; Syntax.........: $_Plink_close()
; Parameters ....: none required
; example .......: _Plink_close()
;
; Remarks .......: plink.exe should only be running once
; ===============================================================================================================================
Func _Plink_close()
;If there are any stray plink sessions kill them
If ProcessExists("plink.exe") Then
ProcessClose("plink.exe")
Else
Return False
EndIf
EndFunc ;==>_Plink_close
Re: [..] Problème d'écriture dans cmd
Posté : ven. 10 avr. 2015 09:57
par caropost
Je te remercie pour ta réponse
Pour la partie sur cmd, je lance le script, je ne vois rien se passer puis je vois qu'il se termine mais je n'ai pas vu où est-ce que je pouvais vérifier ce qu'il s'est passé...
Re: [..] Problème d'écriture dans cmd
Posté : ven. 10 avr. 2015 11:29
par caropost
J'ai mis des MsgBox et activé le log donc je vois bien qu'il se passe bien quelque chose, merci

N'y aurait-il pas un moyen pour avoir quelque chose de visuel ? Je veux dire voir ce qu'il se passe en temps réel, un peu comme si on écrivait vraiment sur la console...
Parce que là, concrètement, si je n'active pas les log et que je n'ouvre pas ce fichier ou bien que je ne mets pas de MsgBox, je ne vois absolument rien passer...
EDIT : J'ai fais quelques tests, le ping et le dir fonctionnent. J'ai adapté le script pour tester les vrais lignes qui vont être intégrées au script final (la partie où je me connecte en FTP sur le switch) et ça bloque après la rentrée du user...
► Afficher le texte
Code : Tout sélectionner
_Init_plink_log("C:\Documents and Settings\Administrator\Desktop\putty2.log")
$_plinkhandle = _Start_plink("cmd")
;_Expect("(?im)^[a-z]:\\")
_Expect("Microsoft Windows XP")
StdinWrite($_plinkhandle,"cd C:\Documents and Settings\administrator\Desktop\Switch" & @CRLF)
; _Expect("C:\Documents and Settings\administrator\Desktop\Switch>") === la ligne est lue mais pas reconnue ===
_Expect("(?im)^[a-z]:\\")
StdinWrite($_plinkhandle,"ftp 192.168.5.15" & @CRLF)
_Expect("ftp 192.168.5.15")
StdinWrite($_plinkhandle,"user" & @CRLF) ; === jusque là ça fonctionne ===
Sleep(300)
;_Expect("Password") === ce n'est pas lu ===
StdinWrite($_plinkhandle,"password" & @CRLF)
_Expect("ftp>")
Re: [..] Problème d'écriture dans cmd
Posté : ven. 10 avr. 2015 14:35
par orax
caropost a écrit :Pour la partie sur cmd, je lance le script, je ne vois rien se passer puis je vois qu'il se termine mais je n'ai pas vu où est-ce que je pouvais vérifier ce qu'il s'est passé...
C'est affiché dans la console de SciTE. Il faudrait donc lancer le script depuis SciTE (touche F5).
caropost a écrit :_Expect("C:\Documents and Settings\administrator\Desktop\Switch>") === la ligne est lue mais pas reconnue ===
C'est normal, dans _Expect c'est StringRegExp qui est utilisé pour trouver la chaîne. L'antislash \ est un caractère spécial donc il faut le doubler ou utiliser \Q \E pour ne pas interpréter les caractères spéciaux.
Code : Tout sélectionner
_Expect("C:\\Documents and Settings\\administrator\\Desktop\\Switch>")
_Expect("\QC:\Documents and Settings\administrator\Desktop\Switch>\E")
Une alternative est de remplacer tous les StringRegExp par des
StringInStr pour faire une recherche de texte simple ; dans ce cas il n'y aura pas besoin de doubler les \.
Re: [..] Problème d'écriture dans cmd
Posté : ven. 10 avr. 2015 15:38
par caropost
Ah merci ! Effectivement, avec \Q et \E ça fonctionne mieux ^^
Et effectivement, il y a bien la console qui apparaît quand je tape F5

Seul point bloquant qui reste : la connexion FTP... J'ai réécrit tout ça un peu au propre histoire d'y voir un peu plus clair et de n'avoir que ce qui est utile pour la partie cmd et j'ai mis ça dans un même "fichier" :
► Afficher le texte
Code : Tout sélectionner
#include <Constants.au3>
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
#include <Array.au3>
; # VARIABLES # ====================================================================================================================
Global $_cmdhandle = "" ; used to handle starting of cmd
Global $_cmdserver = "" ; name of server you wish to connect to
Global $_cmd_loc = "" ; location of cmd.exe executable on workstation
Global $_cmd_display_messages = False ; display interim messages to screen (default false)
Global $_cmd_display_message_time = 1 ; time in seconds messages are displayed
Global $_cmd_logging = False ; record cmd log file (default false)
Global $_cmd_logfile = "" ; location of cmd log file
Global $_cmd_logfile_handle = "" ; cmd log file handle
$_cmd_logging = True ; Turn Logging ON (default is off)
$_cmd_display_messages = True ; Turn Screen Messages ON (default is on)
$_cmd_display_message_time = 300 ; Display message for 5 mins (default 1 sec)
; ===============================================================================================================================
$_cmdhandle = _Start_cmd("cmd")
_Init_cmd_log("C:\Documents and Settings\Administrator\Desktop\putty2.log")
_Expect("Microsoft Windows XP")
StdinWrite($_cmdhandle,"cd C:\Documents and Settings\administrator\Desktop\Switch" & @CRLF)
_Expect("\QC:\Documents and Settings\administrator\Desktop\Switch>\E")
StdinWrite($_cmdhandle,"ftp 192.168.5.15" & @CRLF)
_Expect("ftp 192.168.5.15")
StdinWrite($_cmdhandle,"user" & @CRLF) ; === j'ai essayé avec @CR, @LF et rien mais aucun résultat
_Expect("Password")
StdinWrite($_cmdhandle,"password" & @CRLF)
_Expect("\Qftp>\E")
; # FONCTION # =====================================
Func _Cmd_close()
If ProcessExists("cmd.exe") Then
ProcessClose("cmd.exe")
Else
Return False
EndIf
EndFunc
; # FONCTION # =====================================
Func _Start_cmd($_cmd_loc)
_Cmd_close(); close any stray cmd sessions before starting
If $_cmd_loc = "" Then
MsgBox(0, "Error", "Unable to open cmd.exe", 10)
Return False
Exit
EndIf
; ### @SW_HIDE car, de toute façon, la fenêtre ne pourra pas être visible
; ### $STDERR_MERGED pour avoir aussi le flux des erreurs via StdoutRead()
$_cmdhandle = Run($_cmd_loc, @ScriptDir, @SW_HIDE, $STDIN_CHILD + $STDERR_MERGED)
Return $_cmdhandle
EndFunc
; # FONCTION # =====================================
Func _Init_cmd_log($_cmd_logfile)
$_cmd_logfile_handle = FileOpen($_cmd_logfile, 2)
; Verifie que le fichier de log est ouvert pour pouvoir ecrire dedans
If $_cmd_logfile_handle = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
Return True
EndFunc
; # FONCTION # =====================================
Func _Expect($match_text)
Local $text
Local $sBuffertext
Local $found
Local $iBegin = TimerInit()
While 1
$text = StdoutRead($_cmdhandle)
MsgBox(0, "Test", $text)
$sBuffertext = $sBuffertext & $text
If $_cmd_logging Then
FileWriteLine($_cmd_logfile_handle, "**********************NEW SECTION************************")
FileWriteLine($_cmd_logfile_handle, "attendu : " & $match_text)
FileWriteLine($_cmd_logfile_handle, "lu : " & $text)
FileWriteLine($_cmd_logfile_handle, "**********************END SECTION************************")
EndIf
$found = StringRegExp($text, $match_text)
If $found = 1 Then
If $_cmd_display_messages Then
MsgBox(4096, $match_text, $text, $_cmd_display_message_time)
; ### affiche dans la console le texte recherché (en bleu) et le texte trouvé
ConsoleWrite(StringFormat("\r\n>""%s""\r\n""%s""\r\n", $match_text, $text))
ExitLoop
EndIf
Else
; ### sinon si le texte recherché n'est pas trouvé, il sera quand même affiché dans la console
ConsoleWrite($text)
EndIf
Sleep(300)
WEnd
Return $sBuffertext
EndFunc
Voici le fichier de log que j'obtiens :
► Afficher le texte
**********************NEW SECTION************************
attendu : Microsoft Windows XP
lu :
**********************END SECTION************************
**********************NEW SECTION************************
attendu : Microsoft Windows XP
lu : Microsoft Windows XP [version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator\Desktop>
**********************END SECTION************************
**********************NEW SECTION************************
attendu : \QSwitch>\E
lu :
**********************END SECTION************************
**********************NEW SECTION************************
attendu : \QSwitch>\E
lu : cd C:\Documents and Settings\administrator\Desktop\Switch
C:\Documents and Settings\Administrator\Desktop\Switch>
**********************END SECTION************************
**********************NEW SECTION************************
attendu : ftp 192.168.5.15
lu :
**********************END SECTION************************
**********************NEW SECTION************************
attendu : ftp 192.168.5.15
lu : ftp 192.168.5.15
Utilisateur (192.168.5.15:(none)) :
**********************END SECTION************************
**********************NEW SECTION************************
attendu : (?im)^[a-z]:\\
lu :
**********************END SECTION************************
**********************NEW SECTION************************
attendu : (?im)^[a-z]:\\
lu :
**********************END SECTION************************
**********************NEW SECTION************************
attendu : (?im)^[a-z]:\\
lu :
**********************END SECTION************************
Et ce jusqu'à ce que j'arrête le script ou le timeout...
Re: [..] Problème d'écriture dans cmd
Posté : ven. 10 avr. 2015 18:49
par orax
Avec les fonctions _FTP_* d'AutoIt ça n'irait pas ? Ça me semblerait plus pratique.
Re: [..] Problème d'écriture dans cmd
Posté : lun. 13 avr. 2015 11:20
par caropost
J'avais oublié ces fonctions ^^' Et je ne devais pas taper les bons mots clés sur internet parce qu'il ne me proposait pas ces fonctions...
J'ai donc commencé à tester avec ses fonctions et je n'arrive pas à me connecter... Lorsque je suis connecté en série avec PuTTY et que je lance mon script, il m'informe que l'authentification a échouée et que l'utilisateur est anonyme...
► Afficher le texte
Code : Tout sélectionner
#include <FTPEx.au3>
Local $sServer = '192.168.5.15'
Local $sUsername = 'user'
Local $sPass = 'password'
Local $hOpen = _FTP_Open('MyFTP Control')
Local $hConn = _FTP_Connect($hOpen, $sServer, $sUsername, $sPass)
;$Ftpp = _FtpPutFile($hConn, 'C:\Documents and Settings\administrator\Desktop\Switch\boot.img', '/flash')
Je dois également "activer" le binaire et le hash, je ne sais pas si c'est faisable avec ces fonctions ou si ça le fait "automatiquement"...
EDIT : c'est bon, j'ai réussi à me connecter, le switch devait être un peu capricieux, après un redémarrage il a accepté que je me connecte en FTP via mon script

Maintenant, je me lance dans la recherche de vérification que je suis bien connectée ou que j'envoie bien mes fichiers et si non afficher un message d'erreur

Re: [..] Problème d'écriture dans cmd
Posté : mer. 13 mai 2015 14:44
par caropost
Bonjour,
Je reviens vers vous après un moment sans être venue. J'ai dû faire un autre projet en laissant de côté celui-ci du coup je n'ai pas trop avancé mais j'ai un nouveau problème...
C'est toujours sur le problème de FTP. J'utilise le bout de code suivant :
► Afficher le texte
Code : Tout sélectionner
#include <FTPEx.au3>
Local $sServer = '192.168.5.15'
Local $sUsername = 'user'
Local $sPass = 'password'
Local $hOpen = _FTP_Open('MyFTP Control')
Local $hConn = _FTP_Connect($hOpen, $sServer, $sUsername, $sPass)
_FTP_Command($hConn, "bin")
J'ai un peu modifié le fichier FTPEx.au3 pour que s'il y a un problème, j'ai un message d'erreur qui apparaît :
► Afficher le texte
Code : Tout sélectionner
Func _FTP_Command($l_FTPSession, $s_FTPCommand, $l_Flags = $FTP_TRANSFER_TYPE_ASCII, $l_ExpectResponse = 0, $iContext = 0)
If $__g_hWinInet_FTP = -1 Then Return SetError(-2, 0, 0)
Local $ai_FTPCommand = DllCall($__g_hWinInet_FTP, 'bool', 'FtpCommandW', 'handle', $l_FTPSession, 'bool', $l_ExpectResponse, 'dword', $l_Flags, 'wstr', $s_FTPCommand, 'dword_ptr', $iContext, 'ptr*', 0)
If @error Or $ai_FTPCommand[0] = 0 Then
MsgBox(0, "Probleme de commande", "Impossible de lancer la commande")
Return SetError(-1, _WinAPI_GetLastError(), 0)
Exit
EndIf
Return SetError(0, $ai_FTPCommand[6], $ai_FTPCommand[0])
EndFunc ;==>_FTP_Command
Le problème c'est qu'il n'arrive pas à passer ma commande "bin"... Pour le reste, pas de soucis mais ça, ça ne fonctionne pas... J'ai pourtant testé pas mal de choses sans succès...
Sauriez-vous m'aider ?
Re: [..] Problème d'écriture dans cmd
Posté : mer. 13 mai 2015 17:23
par orax
Il faut éviter de modifier les UDFs dans le dossier d'installation d'AutoIt. En plus, dans le cas présent ce n'était pas nécessaire. Il suffisait de tester @error.
Ce code indiquera plus précisément quelle est l'erreur.
► Afficher le texte
Code : Tout sélectionner
#include <FTPEx.au3>
Local $sServer = '192.168.5.15'
Local $sUsername = 'user'
Local $sPass = 'password'
Local $sMessage, $iExt
Local $hOpen = _FTP_Open('MyFTP Control')
Local $hConn = _FTP_Connect($hOpen, $sServer, $sUsername, $sPass)
_FTP_Command($hConn, "bin")
If @error Then
$iExt = @extended
_FTP_GetLastResponseInfo($iExt, $sMessage)
ConsoleWrite($sMessage & @CRLF)
EndIf
Re: [..] Problème d'écriture dans cmd
Posté : ven. 29 mai 2015 10:40
par caropost
Désolée pour le retard, j'étais reparti sur ce sujet avant de me reconcentrer sur le 2ème mais là je repasse sur ce sujet
Merci pour l'info, je testerai
Je n'ai pas modifié l'UDF en lui-même mais j'ai copié son contenu dans un autre fichier comme ça j'ai les fichiers qui sont venus avec l'installation qui restent "propres"
Je n'ai plus besoin de ce sujet puisque j'utilise les fonction _FTP pour arriver à mes fins

Re: [..] Problème d'écriture dans cmd
Posté : mar. 16 juin 2015 10:48
par caropost
orax a écrit :Il faut éviter de modifier les UDFs dans le dossier d'installation d'AutoIt. En plus, dans le cas présent ce n'était pas nécessaire. Il suffisait de tester @error.
Ce code indiquera plus précisément quelle est l'erreur.
► Afficher le texte
Code : Tout sélectionner
#include <FTPEx.au3>
Local $sServer = '192.168.5.15'
Local $sUsername = 'user'
Local $sPass = 'password'
Local $sMessage, $iExt
Local $hOpen = _FTP_Open('MyFTP Control')
Local $hConn = _FTP_Connect($hOpen, $sServer, $sUsername, $sPass)
_FTP_Command($hConn, "bin")
If @error Then
$iExt = @extended
_FTP_GetLastResponseInfo($iExt, $sMessage)
ConsoleWrite($sMessage & @CRLF)
EndIf
J'ai suivi ton conseil (oui, après un certain temps, je l'avoue) et il me met cette erreur :
alors que c'est une commande qui fonctionne très bien en manuel...
Re: [R] Problème d'écriture dans cmd
Posté : mar. 16 juin 2015 11:46
par jbnh
A mon avis tu fais une mauvaise utilisation de l'UDF.
FTPCommand c'est pour envoyer des commandes FTP
cfr
https://fr.wikipedia.org/wiki/Liste_des_commandes_ftp
Aussi
Je n'ai plus besoin de ce sujet puisque j'utilise les fonction _FTP pour arriver à mes fins

Donc merci de ne plus répondre à ce sujet qui est en Résolu depuis un bout de temps