Скачать файл с FTP без SMS и регистрации

Просмотров: 188Комментарии: 0
Автоматизация

Решил я автоматизировать процесс скачки архива с "FTP" и распаковки его в нужну папку.

Точно помню, что распаковывать архивы из "CMD" без дополнительных программ нельзя... и вроде как помню, что из "Powershell" тоже нельзя...

Но годы идут, в "Microsoft" программистов ебут, и вуаля, с версии "Powershell 5.0" появилась поддержка распаковки "из коробки".

Ну, что же, значит объединим две технологии и у-перёд!

В статье используются программы:

GreenShot v1.2.10.6 Программа для создания скриншотов оф. сайт
AkelPad v4.9.8 Текстовый редактор оф. сайт

Для начало нужно убедиться, что версия установленного "Powershell" больше 5.0, запускаем "Powershell" и пишем "Get-host" - будет указана версия.

2018-05-24-18_41_58-windows-powershell.jpg

Если мало, то можно качнуть обновление, с сайта "Microsoft". Так как ебут их всё же недостаточно, обновление "PowerShell" будет называться "Windows Management Framework" LOL

Теперь всё готово.

Нужно будет создать два файла, один ".TXT" (текстовик в кодировке OEM/DOS) второй ".PS1" (можно в кодировке ANSI (Windows)).

Текстовик-текстовик будет содержать команды для "FTP-клиента", а текстовый скрипт всё остальное.

Содержимое скрипта "Powershell":

<#
Скрипт для скачивания с FTP сервера ftp.moex.com
архивов с шаблонами для XML и распаковки их на диск
(C) (:Pro:) 14:55 24.05.2018
#>
#Создаём временный каталог для скачивания
New-Item -Path "c:\micex" -Name "temp" -ItemType "directory" -force
#Скачиваем файлы
ftp -s:c:\micex\moex_ftp.txt
#Распаковываем файлы
Get-ChildItem c:\micex\temp\Currency_xsd.zip | Expand-Archive -DestinationPath c:\MICEX\XSD\ -Force
#Удаляем временную папку smile
Remove-Item -Path C:\micex\temp -Recurse

Содержимое текстовика (moex_ftp.txt):

open ftp.moex.com
anonymous
admin@fafofu.ru
binary
prompt
lcd c:\MICEX\TEMP
cd "/pub/Reports/Currency/xsd"
get allfiles.zip Currency_xsd.zip
close
bye

Заметка

"FTP CMD" умеет работать только в АКТИВНОМ режиме! На локальном брандмауэре должны быть разрешены входящие подключения с порта "TCP 20" на любой локальный порт.

Так, что же происходит то:

Скрипт создаёт временную папку, по указанному пути, после чего вызывает программу ftp, с передачей ей чего надо делать,

в файле для ftp, написано, что нужно перейти в другой локальный каталог, так как при скачке всё качается в активный каталог, и скачать файл, переименовав его,

попрощаться и выйти из программы ftp, после чего скрипт работает дальше, распаковывает скачанный архив, и удаляет временную папке. Красота =)

Так можно скачать много разных файлов, из той же директории на FTP-сервере:

get allfiles1.zip Currency_xsd1.zip
get allfiles2.zip Currency_xsd2.zip
get allfiles3.zip Currency_xsd3.zip

или из разных директорий, не забывая переходить в них:

cd "/pub/Reports/Currency1/xsd1"
get allfiles1.zip Currency_xsd1.zip
cd "/pub/Reports/Currency2/xsd2"
get allfiles2.zip Currency_xsd2.zip
cd "/pub/Reports/Currency3/xsd3"
get allfiles3.zip Currency_xsd3.zip

Помни! Всё будет складываться по пути, указанном в текстовике, вот тут (lcd c:\MICEX\TEMP).

Если нужно раскладывать в разные папки не забывай менять локальный путь (lcd) перед скачиванием:

lcd c:\MICEX\TEMP1
get allfiles1.zip Currency_xsd1.zip
lcd c:\MICEX\TEMP2
get allfiles2.zip Currency_xsd2.zip
lcd c:\MICEX\TEMP3
get allfiles3.zip Currency_xsd3.zip

По файлам вроде всё понятно. Описание команд "FTP" я выложу позже... они есть в интернете wink

ЗЫ. Бывает скачка подвисает (плохая связь/тормозной сервер), и ничего не происходит (повисает на этапе: get: путь/имя файла, я просто крестиком закрываю окошко... оно само не закроется никогда :(.

2018-05-24-18_43_41-windows-powershell.jpg

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question


Комментарий будет опубликован после проверки

     

  

(обязательно)