Come specificare username e password nel comando ftp?


9

Voglio automatizzare una chiamata a ftp in uno script di shell. Se scrivo

$ftp somehost.domain.com

Mi viene richiesto un nome utente e una password. Voglio dare quel nome utente e password come parte della chiamata a ftp. La pagina man di ftp dice che posso inviare un comando utente al prompt ftp - ma voglio accedere a ftp tutto in una volta. È possibile? Non vedo nulla tra le bandiere per ftp. Vedo che l'opzione -s mi dà la possibilità di specificare alcuni comandi ftp una volta che ho il prompt ftp - ma ho bisogno di dare il nome utente per arrivare al prompt ...


expect(un'estensione tcl / tk di sorta) è un programma che è l'ideale per questo tipo di cose - vale a dire. attendere qualche suggerimento; dare una risposta ... attendere una risposta; dare una nuova risposta ... expectattendere "ogin:" e inviarti il ​​nome utente, quindi attendere "assword:" e inviare la password.
Baard Kopperud,

Risposte:


10

Usa un .netrcfile nella tua home directory.

Il contenuto è:

# machine <hostname> login <username> password <password>
machine ftp.example.com login myuser password $ecret

Se questo è qualcosa che stai facendo a livello di codice, scrivi .netrcprima di connetterti, eliminalo quando hai finito.


questo file è specifico ftpo è letto anche da altri programmi?
terdon

La netrc(5)pagina man dice che è "per ftp(1)" ma non sono sicuro che ftpsia l'unica cosa che lo userà.
Bahamat,

Se vuoi trovare il tuo file ".netrc" usa questo comando:locate '.netrc'
goamn

1

Puoi anche scrivere uno script di shell ac usando un documento qui che andrebbe in questo modo:

#!/bin/sh
HOST='someftpserver.com'
USER='username'
PASSWD='password'
FILES='*.txt'
#
ftp -nv $HOST>$FTPLOG <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd somedirectory
binary
mget $FILES
quit
END_SCRIPT

0

Potresti anche considerare wputo wgetcome alternative, a seconda delle tue esigenze.

Non ho usato di wgetrecente ma l'ho usato wputperché non volevo creare o modificare file come suggerito in alcune risposte precedenti.

Per wput, la sintassi è:

wput <filename> ftp://<username>:<password>@<address>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.