Як завантажувати файли з 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.