Як завантажувати файли з FTP-сайту в одному командному рядку без взаємодії з користувачем (Windows)


13

Я знаю, що є команда FTP, яку можна запустити з командного рядка в Windows, і вона завантажує файл з FTP-сайту. Користувач + пароль вказані в однорядковому cmd "that". Ці параметри + пропуск паролів повинен бути в цьому командному рядку.

echo open 192.168.1.64 21> ftp.txt
echo anonymous>> ftp.txt
echo ftp@ftp.com>> ftp.txt
echo bin >> ftp.txt
echo get test.txt >> ftp.txt
echo bye >> ftp.txt

ftp -s:ftp.txt

Вам потрібно завантажити через FTP чи вам просто потрібно завантажити цей файл з будь-якою програмою? (Rsync може читати з файлу з іменами для синхронізації та з командного рядка. Scp також може це зробити з командного рядка. Обидва не такі старовинні, як звичайний текст, no_true_security FTP).
Геннес

Відповіді:


13

Спробуйте це: Пакетні файли - Ненадійні завантаження FTP

WGET ftp://ftp.mydomain.com/path/file.ext  

для анонімних завантажень

або:

WGET ftp://user:password@ftp.mydomain.com/path/file.ext  

коли потрібна автентифікація.


Як зазначав @XavierStuvw за допомогою редагувань та коментарів, обмін WGETна малі регістри wgetпрацюватиме в Linux.

wget ftp://user:password@ftp.mydomain.com/path/file.ext

Я не бачу жодної команди, у якій є варіант переключення користувача та пароля в одному рядку.
саундхакс

-s switch був у реченні, як я пам’ятаю
soundhax

2
Ласкаво просимо до Супер Користувача! Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Канадський Люк

1
@CalvT Заперечень немає. Прогнозована перевага коментаря полягає в тому, що користувачі Linux можуть зайти на цю сторінку після пошуку в Інтернеті та контролювати систему, до якої вона застосовується. Це сталося зі мною, насправді.
XavierStuvw

1
@CalvT Заголовок дійсно точний, але пошукові системи часто візуалізують весь кадр відповідей, і це легко сплести в це. Звичайно, це не повинно відмовляти читачеві від уваги, але в цьому випадку було збігом випадків, що інструкції для Linux та Windows в основному однакові. Молодці, спасибі
XavierStuvw

8

Я знайшов спосіб:

echo open 192.168.0.1 >> ftp &echo user admin w00t >> ftp &echo binary >> ftp &echo get file.zip >> ftp &echo bye >> ftp &ftp -n -v -s:ftp &del ftp

Це не спрацювало, коли я спробував це (я замість цього використовував клієнт командного рядка WinSCP ). На якій версії Windows було протестовано?
Пітер Мортенсен

Чи можете ви пояснити, як працює ця лінія? Не вдається знайти жодну документацію. Я намагаюся змусити його працювати з psftp
stallingOne

@stallingOne Подумайте про &вимикач рядків ... це насправді кілька команд. В основному він будує сценарій, рядок за рядком, використовуючи echo, а потім каже ftpвести його запуск. Він також називає файл сценарію ftp, що робить його заплутаним.
Ганнард

Неправильний вибір імені файлу. "ftp" - це і назва файлу сценарію, який він будує, і ім'я exe. Таким чином, роздільна здатність шляху ftp -n -v -s:ftpтрохи химерна. (Кожне використання "ftp" стосується різних речей)
Чад Шуггінс

2

Зауважте, що ви можете запитати синтаксис команди в DOS, використовуючи /? перемикач. Наприклад:

C: \> ftp /?

Передає файли до та з комп'ютера, на якому працює служба FTP-сервера
(іноді називається демоном). Ftp можна використовувати інтерактивно.

FTP [-v] [-d] [-i] [-n] [-g] [-s: ім'я файлу] [-a] [-A] [-x: sendbuffer] [-r: recvbuf
fer] [-b: asyncbuffers] [-w: windowsize] [хост]

  -v Пригнічує показ відповідей віддаленого сервера.
  -n Пригнічує автоматичний вхід при початковому з'єднанні.
  -i Вимикає інтерактивне сповіщення під час декількох файлів
                  перекази.
  -d Вмикає налагодження.
  -g Вимкнення глобального імені файлу (див. команду GLOB).
  -s: ім'я файлу Вказує текстовий файл, що містить команди FTP; то
                  команди автоматично запускаються після запуску FTP.
  -a Використовуйте будь-який локальний інтерфейс, прив'язуючи з'єднання даних.
  -Вхід у систему як анонімний.
  -x: відправити sockbuf Переосмислює стандартний розмір SO_SNDBUF 8192.
  -r: recv sockbuf Переосмислює стандартний розмір SO_RCVBUF 8192.
  -b: кількість асинхроністів Переорієнтована кількість асинхронів за замовчуванням 3
  -w: windowsize Замінює розмір буфера передачі за замовчуванням 65535.
  хост Вказує ім'я хоста або IP-адресу віддаленого пристрою
                  хост для підключення.

Примітки:
  - команди mget і mput приймають y / n / q для так / ні / вийти.
  - Використовуйте Control-C для скасування команд.

У вашому випадку ви хочете використовувати перемикач -s, щоб подати йому сценарій, включаючи відповіді на вхід.

Наприклад:

  1. Створіть файл сценарію (c: \ scriptfile.txt) із наступним вмістом:

    open
    servername_or_ip
    username
    password
    get
    /fullpath/thefile.txt
    c:\fullpath\thefile.txt
    quit
    
  2. виконати ftp за допомогою перемикача -s та вказати ім'я файлу сценарію

    C:\>ftp -s:c:\scriptfile.txt
    

У Windows XP (так, так, я знаю) це призводить до "Невідомий хост /?".
Пітер Мортенсен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.