Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Нужна программа,автоматически забирающа файлы с ftp сервера
цитата
10/12/13 в 17:39
 xslavik
Нужна утилитка, которая выполняет простенький алгоритм.

Периодические логинится к фтп серверу и перемещает содержимое в определенную папку на компьютере ОС- windowds.
Т.е. скачивает, и то, что скачано - удаляет.

Можно под этот функционал задействовать какую то уже существующую программу? Вроде функционал простой, может быть до меня уже кто то сталкивался с подобной задачей icon_smile.gif
цитата
10/12/13 в 17:51
 Elite Profit
nncron + ftp.exe
или nncron + уже написаный кем-то плагин, ищи на оффсайте или форуме.
цитата
10/12/13 в 18:20
 pipe
Или php + cron. Тоже вариант. Правда папка будет на сервере.
цитата
10/12/13 в 18:46
 xslavik


Ну да, папка на сервере windows 2000. Её содержимое в дальнейшем используют другие программы
цитата
10/12/13 в 18:48
 xslavik
Elite Profit писал:
nncron + ftp.exe
или nncron + уже написаный кем-то плагин, ищи на оффсайте или форуме.


Ну это проще наверное самому на C# написать утилитку и через планировщик задач виндовс её запускать. По трудоемкости одно и то же.
цитата
10/12/13 в 20:08
 Stek
http://www.ncftp.com/ поставь и батником по виндовскому шедулеру забирай.
цитата
11/12/13 в 10:27
 Alexs
самое простое что в голову приходит это Планировщик заданий + wget под windows

вот команда
wget ftp://login:password@ftp.example.org/some_file.iso

вот описалово к wget
http://ru.wikipedia.org/wiki/Wget



вот еще вариант более правильный найти rsync под винду

http://s.arboreus.com/2007/11/ssh-ftp.html
или
http://habrahabr.ru/post/139348/
цитата
11/12/13 в 10:36
 Yacc
В винде уже хэ сколько лет есть powershell, на котором такое пишется за пол-часа. А все кто предлагают что-то там скачать просто не в теме. icon_smile.gif
цитата
11/12/13 в 11:13
 Stek
Yacc писал:
В винде уже хэ сколько лет есть powershell

Ага, на нем ведь гораздо легче icon_mrgreen.gif
цитата
11/12/13 в 12:01
 dm
дааа, тоска под виндой с простейшими задачами icon_smile.gif
цитата
11/12/13 в 12:09
 Stek
Почему тоска ? Никто не мешает поставить на винду тот же php, python, perl - ну и соответственно ваять smail101.gif
цитата
11/12/13 в 13:03
 Alexs
dm писал:
дааа, тоска под виндой с простейшими задачами icon_smile.gif

+1

Я когда раньше плотно сидел на винде, под многие задачи сам писал утилиты на на Delphi 7

Сейчас дома, на работе и даже в телефоне Linux, поэтому сейчас не имею проблем с автоматизацией
цитата
11/12/13 в 13:15
 pipe
Короче, вот пример скрипта:


А вот - автоматизации (на самом деле, всё ещё проще - верхний батник нужно закинуть в scheduler):


Последний раз редактировалось: pipe (11/12/13 в 13:16), всего редактировалось 1 раз
цитата
11/12/13 в 13:16
 Yacc
Stek писал:
Ага, на нем ведь гораздо легче

php
Код:
$s = 'ftp://user:password@host/path/file';
$d = 'path/file';

file_put_contents($d, file_get_contents($s));


ps
Код:
$s = 'ftp://user:password@host/path/file'
$d = 'path/file'

(New-Object Net.WebClient).DownloadFile($s, $d)


Ламеры. smail101.gif
цитата
11/12/13 в 20:05
 Elite Profit
да я смотрю здесь мисье знают толк в извращениях!!! icon_biggrin.gif
цитата
11/12/13 в 22:02
 Stek
Yacc: ну это при условиях, что ты четко знаешь название файла, гарантируешь 100% связь без обрыва и т.п.
цитата
11/12/13 в 22:23
 Yacc
Конечно, поэтому я и написал выше, что нужно пол-часа подумать. Прелесть PS в том, что там по пайпам передаются реальные объекты, а не текст как в никсах. Такими объектами с одинаковым успехом могут быть как .NET, так и COM объекты, а если готовых классов мало, то можно на лету скомпилить любой C# и тут же задействовать. Поэтому конкурентов у PS в плане автоматизации просто нет. Попробуй например поставить пхп и добавить скрипт выше в планировщик задач. На PS это 10 строк:

Код:
$s = New-Object -ComObject Schedule.Service
$s.Connect()
$r = $s.GetFolder('\')
$d = $s.NewTask(0)
$t = $d.Triggers.Create(2)
$t.StartBoundary = "2013-12-10T01:00:00"
$a = $d.Actions.Create(0)
$a.Path = 'powershell.exe'
$a.Arguments = ' -c "' + "(New-Object Net.WebClient).DownloadFile('ftp://user:password@host/path/file', 'path/file')" + '"'
$r.RegisterTaskDefinition('FTP', $d, 2, 'System', $null, 5)>$null
цитата
11/12/13 в 22:33
 Stek
Ну пхп вобщем то не в качестве консольной утилиты для виндов предназначался.

У меня к примеру синхронизация бакапов в 1 строку выглядит:
s3cmd put /home/backup/*.gz s3://backup
Изобразишь на линуксе с повершелом ? smail101.gif
цитата
11/12/13 в 22:58
 Yacc
Stek писал:
Изобразишь на линуксе с повершелом

Я же не предлагал поставить PS на линукс, чтобы бэкапы синкать. icon_smile.gif
цитата
12/12/13 в 00:07
 S_Flash
Прелесть wget, что он уже написан и работает. Планировщик на винде заменит крон.
цитата
12/12/13 в 00:36
 Stek
S_Flash: а как с вгетом файл на фтп удалить ? icon_smile.gif
цитата
12/12/13 в 14:36
 Elite Profit
Stek писал:
S_Flash: а как с вгетом файл на фтп удалить ? icon_smile.gif


ну есть вариант, на сервере php скрипт положить с таким функционалом и дергать через wget))
цитата
17/12/13 в 03:49
 xslavik
Yacc писал:
В винде уже хэ сколько лет есть powershell, на котором такое пишется за пол-часа. А все кто предлагают что-то там скачать просто не в теме. icon_smile.gif


под windows 2000 нет icon_sad.gif
цитата
17/12/13 в 07:55
 xslavik
Stek писал:
http://www.ncftp.com/ поставь и батником по виндовскому шедулеру забирай.


Выбрал этот вариант. Решение в одну строчку.

ncftpget -f d:\localfolder\login.cfg -DD d:\localfloder\files *.*

Хотел правда заморочиться, запускать в режиме демона, но оказалось, что прога немного глючная, и когда отправляю процесс в ncftpbatch, то с маской со звездочками не работает. можно только точные имена файлов туда отправлять. В итоге оставил так.

Немного правда пришлось заморочиться, что бы запускалось раз в минуту.
шедулер оказывается раз в минуту запускать не умеет, поэтому написал батник, который по кругу гоняет процесс и делает паузу. и поместил его в автозагрузку.
цитата
17/12/13 в 12:28
 xslavik
xslavik писал:
Выбрал этот вариант. Решение в одну строчку.

Код:
ncftpget -f d:\localfolder\login.cfg -DD d:\localfloder\files *.*


Хотел правда заморочиться, запускать в режиме демона, но оказалось, что прога немного глючная, и когда отправляю процесс в ncftpbatch, то с маской со звездочками не работает. можно только точные имена файлов туда отправлять. В итоге оставил так.

Немного правда пришлось заморочиться, что бы запускалось раз в минуту.
шедулер оказывается раз в минуту запускать не умеет, поэтому написал батник, который по кругу гоняет процесс и делает паузу. и поместил его в автозагрузку.


Эта страница в полной версии