none
Сравнение и проверка целостности файлов, закаченных с FTP сервера

    Вопрос

  • Добрый день

    Есть работающий скрипт закачки с FTP сервера 

    нужна помощь в доработки скрипта


    1) опросить доступность FTP  сервера и записать лог файл

    2) Опросить список файлов на FTP  сервере и записать лог файл со списком обнаруженных файлов 

    3) сделать проверку целостности закаченных с FTP сервера файлов (хэш суммы и размера файлов в сравнении локальной папки с FTP сервером)

    4) если файл закачен не полностью при возобновлении связи запустить до качку файлов   

    5) писать лог в файл  "успешно загруженные и проверенные файлы" 

    6) дописать фильтр -  при поиске новых файлов на FTP сервере  = исключать список уже загруженных файлов из лога "успешно загруженные и проверенные файлы " 

    7) Дописать модуль отправки E-mail уведомлений  

    и слать Allert на заданную почту  об успехе и отказе каждого этапа

    Заранее спасибо всем кто подключиться к общему обсуждению

    буду рад любой помощи!

    #FTP Server Information - SET VARIABLES
        $ftp = "ftp://FTP_SERVER:2100/" 
        $user = 'UserFTP' 
        $pass = 'PassFTP'
        $folder = 'e_client'
        $target = "C:\ConsDown\"
    
        #SET CREDENTIALS
        $credentials = new-object System.Net.NetworkCredential($user, $pass)
    
        function Get-FtpDir ($url,$credentials) {
            $request = [Net.WebRequest]::Create($url)
            $request.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory
            if ($credentials) { $request.Credentials = $credentials }
            $response = $request.GetResponse()
            $reader = New-Object IO.StreamReader $response.GetResponseStream() 
            while(-not $reader.EndOfStream) {
                $reader.ReadLine()
            }
            #$reader.ReadToEnd()
            $reader.Close()
            $response.Close()
        }
    
        #SET FOLDER PATH
        $folderPath= $ftp + "/" + $folder + "/"
    
        $files = Get-FTPDir -url $folderPath -credentials $credentials
    
        $files 
    
        $webclient = New-Object System.Net.WebClient 
        $webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass) 
        $counter = 0
        foreach ($file in ($files | where {$_ -like "*.rar"})){
            $source=$folderPath + $file  
            $destination = $target + $file 
            $webclient.DownloadFile($source, $target+$file)
    
           #PRINT FILE NAME AND COUNTER
            $counter++ 
            $counter
            $source
      
        }






    • Изменено Viktor2008ru 21 ноября 2018 г. 6:01
    21 ноября 2018 г. 5:32