pm Опубликовано 21 Октября, 2011 в 10:31 Жалоба Поделиться Опубликовано 21 Октября, 2011 в 10:31 (изменено) pm, что то не то получается, после запуска бат файла открывается CMD окно, в нем типа процесс авторизации, заканчивается это так , дословно... ну вот, меня занятого пожилого человека заставляют проверять :smile: у меня всё работает. ты где-то ошибся в командном файле, с кем не бывает... А в папке локального пути создается файл ftp.dat c таким содержимым, логин, пароль, локальный путь, соответственно то что было прописано в бат файле user логин пароль bin cd /локальный путь/ put quit откуда взялась команда "cd /локальный путь/" среди ftp-команд? "cd /локальный путь/" ранее подразумевала команду ОС и не имеющую отношения к ftp, смешивать их нельзя, ибо результат будет неадекватным. во временном файле должны быть только ftp-команды Да, забыл упомянуть, запускается это на машине с Win7, и если просто запустить бат файл, как раз все и происходит как описано, а если запустить от имени администратора, то файл в локальной папке не создается.На фтп в обоих случаях ничего не происходит. у меня всё работает, проверил под админом на WinXP. привожу пример своего рабочего файла, я там несколько файликов копирую с локальной машины и раскладываю на своём ftp-сервере по директориям. логин и пароль, вестимо заменены на показушные. логи своего ftp-сервера ещё смотри, по ходу работы. @echo off cd /temp echo user myusername> _ftp.tmp echo mypassword>> _ftp.tmp echo bin>> _ftp.tmp echo cd /upload/>> _ftp.tmp echo put zfs_last_rus.pdf>> _ftp.tmp echo put 74HC_HCT14.pdf datasheet/74HC_HCT14.pdf>> _ftp.tmp echo put "HP 53131A. Operating Guide.pdf" "doc/HP 53131A. Operating Guide.pdf">> _ftp.tmp echo cd iso/>> _ftp.tmp echo put /temp/Vyatta/vyatta-livecd_VC6.3-2011.07.21_i386.iso>> _ftp.tmp echo quit>> _ftp.tmp ftp -n -s:_ftp.tmp 172.31.254.1 del _ftp.tmp вот результат работы bat-файла в окне команд, всё удачно: C:\>ftpcmd.bat Connected to 172.31.254.1. 220 FTP server ready. ftp> user myusername 331 Password required for myusername. 230 User myusername logged in, access restrictions apply. ftp> bin 200 Type set to I. ftp> cd /upload/ 250 CWD command successful. ftp> put zfs_last_rus.pdf 200 PORT command successful. 150 Opening BINARY mode data connection for 'zfs_last_rus.pdf'. 226 Transfer complete. ftp: 825970 bytes sent in 0.02Seconds 51623.13Kbytes/sec. ftp> put 74HC_HCT14.pdf datasheet/74HC_HCT14.pdf 200 PORT command successful. 150 Opening BINARY mode data connection for 'datasheet/74HC_HCT14.pdf'. 226 Transfer complete. ftp: 184142 bytes sent in 0.00Seconds 184142000.00Kbytes/sec. ftp> put "HP 53131A. Operating Guide.pdf" "doc/HP 53131A. Operating Guide.pdf" 200 PORT command successful. 150 Opening BINARY mode data connection for 'doc/HP 53131A. Operating Guide.pdf'. 226 Transfer complete. ftp: 2435872 bytes sent in 0.02Seconds 152242.00Kbytes/sec. ftp> cd iso/ 250 CWD command successful. ftp> put /temp/Vyatta/vyatta-livecd_VC6.3-2011.07.21_i386.iso 200 PORT command successful. 150 Opening BINARY mode data connection for 'vyatta-livecd_VC6.3-2011.07.21_i386.iso'. 226 Transfer complete. ftp: 203423744 bytes sent in 2.69Seconds 75678.48Kbytes/sec. ftp> quit 221 Goodbye. C:\temp> директории на ftp-сервере, естественно, создал заранее, но можно и ftp-командами настругать. всё понятно или что-то объяснить? я специально усложнил пример, так будет чуть нагляднее, как можно делать. если захочется удобства и красивостей, то надо будет имена копируемых/удаляемых на ftp-сервере файлов передавать параметрами в командный файл. там же сделать проверку по времени создания или каким-то другим атрибутам. и не надо ставить дополнительные костыли, если можно обойтись штатными средствами ОС, логично? Добавлено после раздумий: и ещё вдогонку кусок лога ftp-сервера, где видно, что и куда легло на сервере: Oct 21 13:46:17 box ftpd[11493]: connection from xxx.xxx.xxx (172.31.x.x) Oct 21 13:46:17 box ftpd[11493]: FTP LOGIN FROM xxx.xxx.xxx as myusername Oct 21 13:46:17 box ftpd[11493]: session root changed to /home/myusername Oct 21 13:46:17 box ftpd[11493]: put zfs_last_rus.pdf = 825970 bytes (wd: /upload; chrooted) Oct 21 13:46:17 box ftpd[11493]: put datasheet/74HC_HCT14.pdf = 184142 bytes (wd: /upload; chrooted) Oct 21 13:46:17 box ftpd[11493]: put doc/HP 53131A. Operating Guide.pdf = 2435872 bytes (wd: /upload; chrooted) Oct 21 13:46:20 box ftpd[11493]: put vyatta-livecd_VC6.3-2011.07.21_i386.iso = 203423744 bytes (wd: /upload/iso; chrooted) Изменено 21 Октября, 2011 в 10:04 пользователем pm Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость hsl Опубликовано 21 Октября, 2011 в 14:49 Жалоба Поделиться Опубликовано 21 Октября, 2011 в 14:49 Упс, смотрю рабочий пример и вижу, что передаются конкретные файлы, т.е. каждый файл по имени, а мне то нужно передавать все файлы из указанной папки, причем имена файлов и их количество заранее не известны. Из за этого у меня и не работало наверное, я же не указывал имена файлов, а есть вариант как обозначить все файлы в папке? Мне почему то кажется, что вариант типа *.* тут не подходит. Ссылка на комментарий Поделиться на другие сайты Поделиться
pm Опубликовано 21 Октября, 2011 в 19:42 Жалоба Поделиться Опубликовано 21 Октября, 2011 в 19:42 Сергей, а почитать документацию, не? или пусть добрый дядя Паша из интернетов свои усталые мозги напрягает? :smile: у меня всё работает. есть ftp-команды для работы с множеством файлов mget, mput, mdelete. вот вариант, кое-что поменял для красивости: @echo off echo user myusername> _ftp.tmp echo mypassword>> _ftp.tmp echo bin>> _ftp.tmp echo lcd /temp/dump>> _ftp.tmp echo cd /upload>> _ftp.tmp echo mput *>> _ftp.tmp echo quit>> _ftp.tmp ftp -i -n -s:_ftp.tmp 172.31.254.1 del _ftp.tmp важно: в строке вызова ftp добавлен ключ -i вот что в окне интерпретатора команд: C:\>ftpcmd.bat Connected to 172.31.254.1. 220 FTP server ready. ftp> user myusername 331 Password required for myusername. 230 User myusername logged in, access restrictions apply. ftp> bin 200 Type set to I. ftp> lcd /temp/dump Local directory now C:\temp\dump. ftp> cd /upload 250 CWD command successful. ftp> mput * 200 PORT command successful. 150 Opening BINARY mode data connection for 'AD9856_Source.zip'. 226 Transfer complete. ftp: 42784 bytes sent in 0.00Seconds 42784000.00Kbytes/sec. 200 PORT command successful. 150 Opening BINARY mode data connection for 'freebsd.kernel.panic.txt'. 226 Transfer complete. ftp: 66 bytes sent in 0.00Seconds 66000.00Kbytes/sec. 200 PORT command successful. 150 Opening BINARY mode data connection for 'HP 53131A. Operating Guide.pdf'. 226 Transfer complete. ftp: 2435872 bytes sent in 0.03Seconds 78576.52Kbytes/sec. 200 PORT command successful. 150 Opening BINARY mode data connection for 'irfpf40.pdf'. 226 Transfer complete. ftp: 180788 bytes sent in 0.00Seconds 180788000.00Kbytes/sec. 200 PORT command successful. 150 Opening BINARY mode data connection for 'iSCSI.naming.txt'. 226 Transfer complete. ftp: 1513 bytes sent in 0.00Seconds 1513000.00Kbytes/sec. 200 PORT command successful. 150 Opening BINARY mode data connection for 'lpf2.exe'. 226 Transfer complete. ftp: 283136 bytes sent in 0.00Seconds 283136000.00Kbytes/sec. 200 PORT command successful. 150 Opening BINARY mode data connection for 'PATRIOT_14.jpg'. 226 Transfer complete. ftp: 188734 bytes sent in 0.00Seconds 188734000.00Kbytes/sec. ftp> quit 221 Goodbye. C:\> как видишь, все 7 разных файлов скопировано на ftp-сервер. на чудовищные скорости передачи не обращай внимания 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость hsl Опубликовано 21 Октября, 2011 в 20:04 Жалоба Поделиться Опубликовано 21 Октября, 2011 в 20:04 Чтоб почитать, нужно еще найти то, что почитать, чтоб это найти надо знать как это называется, искал, что то находил, но все не то было, да и времени на все не хватает. Спасибо за помощь, постараюсь больше не напрягать. Ссылка на комментарий Поделиться на другие сайты Поделиться
pm Опубликовано 21 Октября, 2011 в 20:28 Жалоба Поделиться Опубликовано 21 Октября, 2011 в 20:28 (изменено) не обращай внимание на ворчание, это так, для проформы :smile: можно войти в ftp-клиент без коннекта к серверу и сказать help, примитивная помощь и список команд там есть. а уж в гугле найти список команд ftp и их описание легко. всегда рад помочь, вроде как некоторые проблемы помог победить. пробуй предложенный вариант. по результатам отпиши, всё ли получилось. будет надо - ещё понапрягаю мозг Изменено 22 Октября, 2011 в 06:59 пользователем pm Ссылка на комментарий Поделиться на другие сайты Поделиться
pm Опубликовано 22 Октября, 2011 в 07:15 Жалоба Поделиться Опубликовано 22 Октября, 2011 в 07:15 (изменено) да, файл с командами ftp можно не генерировать и удалять каждый раз, а положить в укромное место и оттуда подсовывать ftp-клиенту в командной строке скриптом Изменено 22 Октября, 2011 в 07:16 пользователем pm Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость hsl Опубликовано 22 Октября, 2011 в 08:41 Жалоба Поделиться Опубликовано 22 Октября, 2011 в 08:41 ...можно войти в ftp-клиент без коннекта к серверу и сказать help, примитивная помощь и список команд там есть. а уж в гугле найти список команд ftp и их описание легко. В какой ftp-клиент? Как такового его нет, вручную обычно копировал через тоталкомандер, просмотрел сейчас к нему хелп, там собственно о том как работать в тоталкомандере. Отдельного FTP сервера в принципе тоже нет, это доступ на сайт через фтп. Гугл... да найти там можно все, но тут ведь главное знать правильную формулировку вопроса, а если не знаешь... Вот для примера запрос "список команд фтп сервера" первая же ссылка ABOR — Прервать передачу файла CDUP — Сменить директорию на родительскую. CWD — Сменить директорию. DELE — Удалить файл (DELE file). HELP — Выводит список команд принимаемых сервером. LIST — Возвращает список файлов директории. Список передается через соединение данных (20 порт). MDTM — Возвращает время модификации файла. MKD — Создать директорию. NLST — Возвращает список файлов директории в более кратком формате чем LIST. Список передается через соединение данных (20 порт). NOOP — Пустая операция PASV — Войти в пассивный режим. Сервер вернет адрес и порт к которому нужно подключиться чтобы забрать данные. Передача начнется при следующей команде RETR, LIST и тд. PORT — Войти в активный режим. Например PORT 12,34,45,56,78,89. В отличие от пассивного режима для передачи данных сервер сам подключается к клиенту. PWD — Возвращает текущую директорию. QUIT — Отключиться REIN — Реинициализировать подключение REST — Устанавливает байт, с которого нужно продолжить скачивание или закачивание файла (REST 1234). После этой команды нужно использовать RETR или STOR. RETR — Скачать файл. Перед RETR должна быть команда PASV или PORT. RMD — Удалить директорию RNFR и RNTO — Переименовать файл. RNFR — что переименовывать, RNTO — во что. SIZE — Возвращает размер файла STOR — Закачать файл. Перед STOR должна быть команда PASV или PORT. APPE — Продолжить закачку файла с оборванного места. SYST — Возвращает тип системы (UNIX, WIN, …) TYPE — Установить тип передачи файла (Бинарный TYPE I, текстовый TYPE A) и ни одной из этих команд не упоминается в примере, да очевидно я не то искал и не так, ну уж на что мозгов хватило... А хватило только на чтобы найти тот пример что я выложил в начале и который в исходном виде не работал. да, файл с командами ftp можно не генерировать и удалять каждый раз, а положить в укромное место и оттуда подсовывать ftp-клиенту в командной строке скриптом Фтп клиент это имеется в виду тот что в системе? Ну я собственно изначально и хотел сделать бат файл и запускать из планировщика. Последний приведенный пример работает так как надо, все копируется. Хотя если честно, до конца я его так и не понял, нет по смыслу вроде понятно назначение каждой строчки, но это когда они уже вот, перед глазами, но самому правильно написать весь синтаксис, что то никак. Ссылка на комментарий Поделиться на другие сайты Поделиться
pm Опубликовано 22 Октября, 2011 в 10:14 Жалоба Поделиться Опубликовано 22 Октября, 2011 в 10:14 В какой ftp-клиент? Как такового его нет, вручную обычно копировал через тоталкомандер, просмотрел сейчас к нему хелп, там собственно о том как работать в тоталкомандере. Отдельного FTP сервера в принципе тоже нет, это доступ на сайт через фтп. системный ftp-клиент есть всегда. в командном интерпретаторе набери ftp и нажми <Enter>, дальше help для общего списка команд или help <команда> для конкретной. тоталкоммандер - костыль, он не нужен. так не бывает: доступ по протоколу ftp есть, а сервера нет. подключись к нему, авторизуйся и посмотри его список команд. Гугл... да найти там можно все, но тут ведь главное знать правильную формулировку вопроса, а если не знаешь... Вот для примера запрос "список команд фтп сервера" первая же ссылка по возможности, не надо пользоваться статьями из педивикии, она изобилует ошибками и неточностями. следующая после педивикийных ссылок даёт адекватную информацию: citforum.ru/internet/ftp_tut/com_a.shtml Последний приведенный пример работает так как надо, все копируется. надо понимать, твою задачу полностью решили? с косметическими изменениями сам управишься? Хотя если честно, до конца я его так и не понял, нет по смыслу вроде понятно назначение каждой строчки, но это когда они уже вот, перед глазами, но самому правильно написать весь синтаксис, что то никак. ткни пальцем, что не понятно и я объясню. будет опыт, будет и положительный результат Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость hsl Опубликовано 22 Октября, 2011 в 13:24 Жалоба Поделиться Опубликовано 22 Октября, 2011 в 13:24 Бывает так, что какая элементарная мелочь непонятна и хоть обчитайся, но без ее понимания толком ничего не поймешь, по крайне у меня так. Так вот в данном случае до меня только сейчас дошло, что вот всем этим echo user myusername> _ftp.tmp echo mypassword>> _ftp.tmp echo bin>> _ftp.tmp echo lcd /temp/dump>> _ftp.tmp echo cd /upload>> _ftp.tmp echo mput *>> _ftp.tmp echo quit>> _ftp.tmp мы создаем временный файл, а потом при запуске фтп клиента его используем, вот после осознания этого все встало на свои места. Ссылка на комментарий Поделиться на другие сайты Поделиться
pm Опубликовано 22 Октября, 2011 в 16:34 Жалоба Поделиться Опубликовано 22 Октября, 2011 в 16:34 (изменено) точно. и после отработки передачи файлов подтираем этот временный. если у тебя задача постоянно выполнять одно и тоже действие по передаче информации на сервер, файл с ftp командами можно оставить и тогда вся твоя задача выродится в одну строку "ftp -i -n -s:.......". если в исходном командном файле будешь что-то менять, то обрати внимание, что первая команда echo перенаправляет вывод в файл с помощью операнда ">" а все последующие с ">>" Изменено 22 Октября, 2011 в 16:40 пользователем pm Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость selcet Опубликовано 26 Октября, 2012 в 09:32 Жалоба Поделиться Опубликовано 26 Октября, 2012 в 09:32 Уважаемый Певел, прочитал вашу переписку с Сергеем и был приятно удивлен. Я думал, что таких людей как Вы уже не встречу в интернете. Хочу отдельно Вас поблагодарить. А так же задать и свой вопрос. ---------------------------------------------------------- Суть таковая: Есть на ПК диск (это сетевой диск, который при каждой загрузке автоматом подсоединяется системой). Ему назначена системная буква - "А". На этом диске лежит одна папка, и на этот же диск время-от-времени копируются файлы с разными названиями - SPO_*.zip По примеру, который тут был обсужден, у меня копируется только первый файл из всех. То-есть если файлов несколько, то копируется только первый (сверху). Листинг bat файла вот таковой: @echo offecho user myusername> ftp.dat echo mypassword>> ftp.dat echo bin>> ftp.dat echo cd /xml/>>ftp.dat echo put a:\SPO_*.zip>> ftp.dat echo quit>> ftp.dat ftp -n -s:ftp.dat pegast.com.ua del ftp.dat Листинг ответа FTP: Связь с pegast.com.ua.220 ProFTPD 1.3.2c Server (Debian) [::ffff:83.229.211.211] ftp> user myusername 331 Password required for myusername 230 User myusername logged in ftp> bin 200 Type set to I ftp> cd /xml/ 550 /xml/: No such file or directory ftp> put a:\SPO_*.zip 200 PORT command successful 150 Opening BINARY mode data connection for SPO_15863_354_49_26-10-2012_11-05-06 .zip 226 Transfer complete ftp: 10289 байт отправлено за 0,00 (сек) со скоростью 10289000,00 (КБ/сек). ftp> quit 221 Goodbye. Очень беспокоит строчка: 550 /xml/: No such file or directory Почему то он не находит директории, хотя копирует туда файл. И я проверил после скопировать туда же тот же файл, и убедился в том, что файл правильно скопирован. И конечно же, интересует, как забирать все файлы с расширением zip. Помимо этого, потом эти файлы, надо будет уже не копировать, а переносить в другую папку на этом же диске "А". Но это уже не так критично, хотя было бы здорово автоматизировать и этот процесс. С нетерпением буду ждать Вашего ответа и рекомендаций. Заранее, огромное спасибо. Ссылка на комментарий Поделиться на другие сайты Поделиться
pm Опубликовано 26 Октября, 2012 в 10:56 Жалоба Поделиться Опубликовано 26 Октября, 2012 в 10:56 Уважаемый Певел, прочитал вашу переписку с Сергеем и был приятно удивлен. Я думал, что таких людей как Вы уже не встречу в интернете. Хочу отдельно Вас поблагодарить. да, нас таких мало :smile: эка, ветка годичной давности ожила и в форум я давно не заходил :smile: у меня копируется только первый файл из всех. То-есть если файлов несколько, то копируется только первый (сверху). в сообщении #15 этой ветки https://forum.datagor.ru/index.php?showtopi...ost&p=90639 я перечислил команды для работы с множеством файлов и пример скрипта дал, в частности, команда mput понадобится вместо put. ключ -i важен, иначе по каждой операции с файлом ftpшник будет ждать реакции пользователя с подтверждением или отказом. Очень беспокоит строчка: 550 /xml/: No such file or directoryПочему то он не находит директории, хотя копирует туда файл. И я проверил после скопировать туда же тот же файл, и убедился в том, что файл правильно скопирован. это директория на ftp сервере. надо проверить, что она находится в корне ftp сервера и у неё правильные права на доступ. И конечно же, интересует, как забирать все файлы с расширением zip. забирать или пересылать? будьте внимательны с направлением передачи. mget или mput соответственно. и ключ -i, чтобы автоматом, без подтверждений. Помимо этого, потом эти файлы, надо будет уже не копировать, а переносить в другую папку на этом же диске "А". Но это уже не так критично, хотя было бы здорово автоматизировать и этот процесс. это уже к передаче по ftp отношения не имеет и операции делаются на локальном диске. естественно, имеет смысл их поместить в тот же командный файл, что и для передачи по ftp. в идеале сначала надо будет проверять, что все файлы корректно скопированы на ftp, а потом перемещать в другую директорию на локальном диске, но это заметно усложнит. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти