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

Просмотров: 578Комментарии: 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
#Удаляем временную папку
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" я выложу позже... они есть в интернете ;-)

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

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

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

smile biggrin LOL rofl2 wink rolleyes2 acute aggressive bad blume1 blush bomb boredom bye clapping congratulate cool cray dance2 diablo drinks empathy flag_of_truce fool fool3 good good2 greeting help hi hmm i_am_so_happy mad mocking morning1 music nea new_russian nyam2 ok pardon playboy pleasantry sad scare scratch_one-s_head secret shok sorry stop timeout yahoo shyesok crazy dash1.gif dash2.gif gamer.gif hang1.gif ireful.gif mail1.gif mamba.gif sarcastic.gif wacko1.gif wacko2.gif wacko3.gif


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

     

  

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

Внимание! На сайте есть мат! Продолжая просмотр вы подтверждаете, что Вам исполнилось 18 лет.