Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Нужна программа,автоматически забирающа файлы с ftp сервера
Новая тема
Ответить
цитата
10/12/13 в 17:39
xslavik
Нужна утилитка, которая выполняет простенький алгоритм.
Периодические логинится к фтп серверу и перемещает содержимое в определенную папку на компьютере ОС- windowds.
Т.е. скачивает, и то, что скачано - удаляет.
Можно под этот функционал задействовать какую то уже существующую программу? Вроде функционал простой, может быть до меня уже кто то сталкивался с подобной задачей
цитата
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, на котором такое пишется за пол-часа. А все кто предлагают что-то там скачать просто не в теме.
цитата
11/12/13 в 11:13
Stek
Yacc писал:
В винде уже хэ сколько лет есть powershell
Ага, на нем ведь гораздо легче
цитата
11/12/13 в 12:01
dm
дааа, тоска под виндой с простейшими задачами
цитата
11/12/13 в 12:09
Stek
Почему тоска ? Никто не мешает поставить на винду тот же php, python, perl - ну и соответственно ваять
цитата
11/12/13 в 13:03
Alexs
dm писал:
дааа, тоска под виндой с простейшими задачами
+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)
Ламеры.
цитата
11/12/13 в 20:05
Elite Profit
да я смотрю здесь мисье знают толк в извращениях!!!
цитата
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
Изобразишь на линуксе с повершелом ?
цитата
11/12/13 в 22:58
Yacc
Stek писал:
Изобразишь на линуксе с повершелом
Я же не предлагал поставить PS на линукс, чтобы бэкапы синкать.
цитата
12/12/13 в 00:07
S_Flash
Прелесть wget, что он уже написан и работает. Планировщик на винде заменит крон.
цитата
12/12/13 в 00:36
Stek
S_Flash:
а как с вгетом файл на фтп удалить ?
цитата
12/12/13 в 14:36
Elite Profit
Stek писал:
S_Flash:
а как с вгетом файл на фтп удалить ?
ну есть вариант, на сервере php скрипт положить с таким функционалом и дергать через wget))
цитата
17/12/13 в 03:49
xslavik
Yacc писал:
В винде уже хэ сколько лет есть powershell, на котором такое пишется за пол-часа. А все кто предлагают что-то там скачать просто не в теме.
под windows 2000 нет
цитата
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, то с маской со звездочками не работает. можно только точные имена файлов туда отправлять. В итоге оставил так.
Немного правда пришлось заморочиться, что бы запускалось раз в минуту.
шедулер оказывается раз в минуту запускать не умеет, поэтому написал батник, который по кругу гоняет процесс и делает паузу. и поместил его в автозагрузку.
Новая тема
Ответить
Эта страница в полной версии