#include<FTPEx.au3>
#include<File.au3>
#include<Array.au3>
#include<Misc.au3>
#include<GUIConstantsEx.au3>
#include<ProgressConstants.au3>
Dim $avArray[3]
Dim $avDirloc[3]
Dim $avFTP[3]
Local $serverAVZ = '*******' ;адрес сервера AVZ
Local $usernameAVZ = '******' ;логин
Local $passAVZ = '*********';пароль
$avArray[0] = "***********"; каталог, где будем вести поиск обновлений для Касперского 6
$avArray[1] = "*******"; каталог, где будем вести поиск обновлений для Касперского 10
$avArray[2] = "********"; каталог, где будем вести поиск обновлений для Касперского 8
$avDirloc[0] = "D:\updates\_downloads\Базы KAV 6.0.4\" ;каталог с базами на локальном компе
$avDirloc[1] = "D:\updates\_downloads\Базы KES10\" ;каталог с базами на на локальном
$avDirloc[2] = "D:\updates\_downloads\Базы KES9\" ;каталог с базами на локальном
Local $hFile=FileOpen(@ScriptDir&"\Logscript.log",1)
Local $OpenAVZ = _FTP_Open('ftp://')
Local $ConnAVZ = _FTP_Connect($OpenAVZ, $serverAVZ, $usernameAVZ, $passAVZ)
_FileWriteLog($hFile,"- - - - - - - - - - - - - - - - - - - - ")
_FileWriteLog($hFile,"ПОДКЛЮЧЕНИЕ К СЕРВЕРУ ОБНОВЛЕНИЙ") ;запись информации об ошибке в log файл.
_FileWriteLog($hFile,"Код ошибки:" & @error & @CRLF)
If @error<>0 Then ;Проверка подключения к серверу с обновлениями
If MsgBox(4096+4,"Ошибка скрипта", "Сервер недоступен.Попробывать запустить скрипт позже?")=6 Then ;отработка условия нажатия клавиш "Да" или "Нет"
For $i=1 to 4;цикл по проверки подключения к серверу
$OpenAVZ = _FTP_Open('ftp://')
$ConnAVZ = _FTP_Connect($OpenAVZ, $serverAVZ, $usernameAVZ, $passAVZ)
_FileWriteLog($hFile,"ПОДКЛЮЧЕНИЕ К СЕРВЕРУ ОБНОВЛЕНИЙ") ;запись информации об ошибке в log файл.
_FileWriteLog($hFile,"Код ошибки:" & @error & @CRLF)
If @error==0 Then ExitLoop
MsgBox(16, "Стоп", "Сервер с обновлениями не отвечает", 15)
Sleep(300000)
Next
$OpenAVZ = _FTP_Open('ftp://')
$ConnAVZ = _FTP_Connect($OpenAVZ, $serverAVZ, $usernameAVZ, $passAVZ)
_FileWriteLog($hFile,"ПОДКЛЮЧЕНИЕ К СЕРВЕРУ ОБНОВЛЕНИЙ" & @error & @CRLF) ;запись информации об ошибке в log файл.
_FileWriteLog($hFile,"Код ошибки:" & @error & @CRLF)
If @error<>0 Then Exit
Else
Exit
EndIf
EndIf
For $k=0 to 2 ; цикл в котором будет происходить замена папок по поиску обвновлений
Local $dirset0 = _FTP_DirSetCurrent($ConnAVZ, $avArray[$k])
_FileWriteLog($hFile,"ПОИСК ОБНОВЛЕНИЙ ПО ПУТИ:" &$avArray[$k]) ;запись информации об ошибке в log файл.
_FileWriteLog($hFile,"Код ошибки:" & @error & @CRLF)
If $dirset0==0 Then;отработка ощибки _FTP_DirSetCurrent
MsgBox(16,"Ошибка","Скрипту не удаётся найти папку с обновлениями на FTP сервере AVZ")
Exit;!!!!!
EndIf
Local $aDirAVZ = _FTP_ListToArray($ConnAVZ,1);получение списка папок с AVZ
_FileWriteLog($hFile,"ПОИСК ОБНОВЛЕНИЙ НА СЕРВЕРЕ AVZ В ПАПКЕ:" &$avArray[$k]) ;запись информации об ошибке в log файл.
_FileWriteLog($hFile,"Код ошибки:" & @error & @CRLF)
If $aDirAVZ[0]==0 Then;отработка ошибки FTP_ListToArray
MsgBox(16,"Ошибка","На FTP сервере AVZ нет папок с обновлениями")
Exit;!!!!!
EndIf
Local $aDirloc = _FileListToArray($avDirloc[$k],"*",2); получение списка папок с АП
Local $error = @error
_FileWriteLog($hFile,"СПИСОК ПАПОК ПО АДРЕСУ:" &$avDirloc[$k]) ;запись информации об ошибке в log файл.
_FileWriteLog($hFile,"Код ошибки:"& $error & @CRLF)
If $error<>4 Then ;проверка условия на отсутствие папок с обновлениями на АП.
Global $g=$aDirAVZ[$aDirAVZ[0]]
Local $folder0 = $avArray[$k]&$g ;каталог, откуда будем получать список файлов с нужного каталога на AVZ
DirCreate($avDirloc[$k]&$g)
$m=$aDirloc[$aDirloc[0]] ;присваиваем значение параметра $aDirloc[0] переменной m
If $g > $m Then
Local $dirset = _FTP_DirSetCurrent($ConnAVZ, $folder0) ;устанавливаем тут папку, в которой будем искать файл нужный для скачивания
Local $aFile = _FTP_ListToArray($ConnAVZ, 2) ;получение массива с именами файлов в папке $folder
;---------------------------
ElseIf $g==$m Then
Local $dirset = _FTP_DirSetCurrent($ConnAVZ, $folder0) ;устанавливаем тут папку, в которой будем искать файл нужный для скачивания
Local $aFile = _FTP_ListToArray($ConnAVZ, 2) ;получение массива с именами файлов в папке $folder на сервере
Local $sizeS=_FTP_FileGetSize($ConnAVZ,$aFile[1])
Local $sizeL= FileGetSize($avDirloc[$k]&$g&"\*.zip")
If $sizeL<>$sizeS Then
DirRemove($avDirloc[$k]&$g,1);удаляем папку с недокачанными обновлениями.
DirCreate($avDirloc[$k]&$g); тут же создаём пустую директорию
Else
ContinueLoop
EndIf
EndIf
;---------------------------
For $i = 1 to 2 ;цикл
Example()
Local $fuFunctionToCall = _UpdateGUIProgressBar
_FTP_ProgressDownload($ConnAVZ, $avDirloc[$k]&$aFile[$i], $avArray[$k]&$g&"/"&$aFile[$i],$fuFunctionToCall) ;скачивание файла на локальный ПК
_FileWriteLog($hFile,"СКАЧИВАНИЕ ОБНОВЛЕНИЙ С:" &$avArray[$k]&$g&"/"&$aFile[$i]) ;запись информации об ошибке в log файл.
_FileWriteLog($hFile,"Код ошибки:" & @error & @CRLF)
FileMove($avDirloc[$k]&$aFile[$i], $avDirloc[$k]&$g)
GUISetState(@SW_HIDE)
Next
Else
Local $fuFunctionToCall = _UpdateGUIProgressBar
Global $g=$aDirAVZ[$aDirAVZ[0]]
Local $folder0 = $avArray[$k]&$g ;каталог, откуда будем получать список файлов с нужного каталога на ФТП
DirCreate($avDirloc[$k]&$g)
Local $dirset = _FTP_DirSetCurrent($ConnAVZ, $folder0) ;устанавливаем тут папку, в которой будем искать файл нужный для скачивания
Local $aFile = _FTP_ListToArray($ConnAVZ, 2) ;получение массива с именами файлов в папке $folder
For $i = 1 to 2 ;цикл
Example()
_FTP_ProgressDownload($ConnAVZ, $avDirloc[$k]&$aFile[$i], $avArray[$k]&$g&"/"&$aFile[$i],$fuFunctionToCall) ;скачивание файла на локальный ПК
_FileWriteLog($hFile,"СКАЧИВАНИЕ ОБНОВЛЕНИЙ С" &$avArray[$k]&$g&"/"&$aFile[$i]) ;запись информации об ошибке в log файл.
_FileWriteLog($hFile,"Код ошибки:" & @error & @CRLF)
FileMove($avDirloc[$k]&$aFile[$i], $avDirloc[$k]&$g)
GUISetState(@SW_HIDE)
Next
;Local $Ftpc = _FTP_Close($Open)
;FileClose($hFile)
; Exit
EndIf
Next
Local $FtpcAVZ = _FTP_Close($OpenAVZ)
FileClose($hFile)
Exit
Func Example()
; create GUI
GUICreate("Загрузка обновлений на АП", 300, 100, 100, 200)
GUICtrlCreateLabel($avDirloc[$k]&$aFile[$i], 10, 10)
Global $g_idProgressBarCtrl = GUICtrlCreateProgress(10, 40, 280, 20, $PBS_SMOOTH)
GUICtrlSetColor(-1, 32250); not working with Windows XP Style
Global $g_idBtn_Cancel = GUICtrlCreateButton("Cancel", 110, 70, 70, 20)
GUISetState(@SW_SHOW)
;_FTP_ProgressDownload($ConnAVZ, $avDirloc[$k]&$aFile[$i], $avArray[$k]&$g&"/"&$aFile[$i], $fuFunctionToCall)
;Exit @error
EndFunc ;==>Example
Func _UpdateGUIProgressBar($iPercent)
GUICtrlSetData($g_idProgressBarCtrl, $iPercent)
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Return -1 ; _FTP_UploadProgress Aborts with -1, so you can exit your app afterwards
Case $g_idBtn_Cancel
Return -2 ; Just Cancel, without special Return value
EndSwitch
Return 1 ; Otherwise continue Upload
EndFunc ;==>_UpdateGUIProgressBar