Jak pobierać pliki z witryny FTP w jednym wierszu poleceń bez interakcji użytkownika (Windows)

13

Wiem, że istnieje polecenie FTP, które można uruchomić z wiersza polecenia w systemie Windows i pobiera plik z witryny FTP. Użytkownik + hasło są określone w „tym” jednowierszowym cmd. Te opcje + hasło powinny znajdować się w tym wierszu poleceń.

echo open 192.168.1.64 21> ftp.txt
echo anonymous>> ftp.txt
echo [email protected]>> ftp.txt
echo bin >> ftp.txt
echo get test.txt >> ftp.txt
echo bye >> ftp.txt

ftp -s:ftp.txt
soundhax
źródło
Czy musisz pobierać przez FTP, czy wystarczy pobrać te pliki za pomocą dowolnego programu? (Rsync może czytać z pliku z nazwami do synchronizacji i z wiersza poleceń. Scp może to również robić z wiersza poleceń. Oba nie są tak stare jak zwykły tekst, no_true_security FTP).
Hennes,

Odpowiedzi:

13

Spróbuj tego: Pliki wsadowe - nienadzorowane pobieranie FTP

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

do anonimowego pobierania

lub:

WGET ftp://user:[email protected]/path/file.ext  

gdy wymagane jest uwierzytelnienie.


Jak zauważył @XavierStuvw poprzez edycję i komentarze, zamiana WGETna małe litery wgetdziałałaby w systemie Linux.

wget ftp://user:[email protected]/path/file.ext
CalvT
źródło
nie widzę żadnego polecenia, które ma opcję przełączania użytkownika i hasła w JEDNEJ linii.
soundhax 10.01.2013
-s przełącznik był w zdaniu, jak pamiętam
soundhax 10.01.2013
2
Witamy w Super User! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Kanadyjczyk Luke,
1
@CalvT Brak sprzeciwu. Przewidywaną zaletą tego komentarza jest to, że użytkownicy Linuksa mogą wylądować na tej stronie po wyszukiwaniu w Internecie i nadzorować system, którego dotyczą. Właściwie to mi się przydarzyło.
XavierStuvw
1
@CalvT Tytuł jest wprawdzie precyzyjny, ale wyszukiwarki często wizualizują całą ramkę odpowiedzi i łatwo się w nią zanurzyć. Oczywiście nie powinno to pomijać czytelnika w uważności, ale w tym przypadku zbiegiem okoliczności było, że instrukcje Linux i Windows są w zasadzie takie same. Dobra robota, dzięki.
XavierStuvw
8

Znalazłem sposób:

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
soundhax
źródło
To nie działało, kiedy próbowałem ( zamiast tego użyłem klienta wiersza poleceń WinSCP ). W której wersji systemu Windows był testowany?
Peter Mortensen
Czy możesz wyjaśnić, jak działa ta linia? Nie mogę znaleźć żadnej dokumentacji. Usiłuję sprawić, aby działał z psftp
stallingOne
@stallingOne Pomyśl o &wyłączniku linii ... tak naprawdę to wiele poleceń. Zasadniczo buduje skrypt, wiersz po wierszu, używając echo, a następnie każe ftpgo uruchomić. Nazywa też plik skryptu ftp, co czyni go mylącym.
Havenard
Zły wybór nazwy pliku. „ftp” to zarówno nazwa pliku skryptu, który buduje, jak i nazwa pliku exe. Rozdzielczość ścieżki w ftp -n -v -s:ftpjest nieco hink. (Każde użycie „ftp” odnosi się do różnych rzeczy)
Chad Schouggins,
2

Zauważ, że możesz poprosić o składnię polecenia w DOS, używając /? przełącznik. Na przykład:

C: \> ftp /?

Przesyła pliki do iz komputera, na którym działa usługa serwera FTP
(czasami nazywany demonem). Ftp może być używany interaktywnie.

FTP [-v] [-d] [-i] [-n] [-g] [-s: nazwa pliku] [-a] [-A] [-x: sendbuffer] [-r: recvbuf
fer] [-b: asyncbuffers] [-w: windowsize] [host]

  -v Pomija wyświetlanie odpowiedzi zdalnego serwera.
  -n Pomija automatyczne logowanie przy pierwszym połączeniu.
  -i Wyłącza interaktywne pytania podczas wielu plików
                  transfery.
  -d Umożliwia debugowanie.
  -g Wyłącza globowanie nazw plików (patrz komenda GLOB).
  -s: nazwa pliku Określa plik tekstowy zawierający polecenia FTP; 
                  polecenia będą uruchamiane automatycznie po uruchomieniu FTP.
  -a Użyj dowolnego interfejsu lokalnego podczas wiązania połączenia danych.
  - Logowanie jako anonimowe.
  -x: send sockbuf Przesłania domyślny rozmiar SO_SNDBUF 8192.
  -r: recv sockbuf Przesłania domyślny rozmiar SO_RCVBUF 8192.
  -b: liczba asynchroniczna Zastępuje domyślną liczbę asynchroniczną 3
  -w: windowsize Przesłania domyślny rozmiar bufora transferu 65535.
  host Określa nazwę hosta lub adres IP pilota
                  host do połączenia.

Uwagi:
  - komendy mget i mput przyjmują y / n / q dla yes / no / quit.
  - Użyj Control-C, aby przerwać wykonywanie poleceń.

W twoim przypadku będziesz chciał użyć przełącznika -s, aby nakarmić go skryptem, w tym odpowiedziami na logowanie.

Na przykład:

  1. Utwórz plik skryptu (c: \ scriptfile.txt) o następującej treści:

    open
    servername_or_ip
    username
    password
    get
    /fullpath/thefile.txt
    c:\fullpath\thefile.txt
    quit
    
  2. uruchom ftp za pomocą przełącznika -s i podaj nazwę skryptu

    C:\>ftp -s:c:\scriptfile.txt
    
yosh m
źródło
W systemie Windows XP (tak, tak, wiem) powoduje to „Nieznany host / ?.
Peter Mortensen,