¿Cómo especificar el nombre de usuario y la contraseña en el comando ftp?


9

Quiero automatizar una llamada a ftp en un script de shell. Si escribo

$ftp somehost.domain.com

Se me solicita un nombre de usuario y contraseña. Quiero dar ese nombre de usuario y contraseña como parte de la llamada a ftp. La página de manual de ftp dice que puedo emitir un comando de usuario en el indicador de ftp, pero quiero iniciar sesión en ftp de una sola vez. ¿Es eso posible? No veo nada en las banderas para ftp. Veo que la opción -s me da la opción de especificar algunos comandos ftp una vez que tengo el indicador ftp, pero necesito dar el nombre de usuario para acceder al indicador ...


expect(una especie de extensión tcl / tk) es un programa ideal para este tipo de cosas, es decir. espere algún aviso; dar una respuesta ... esperar una respuesta; dar una nueva respuesta ... expectespere "ogin:" y envíe su nombre de usuario, luego espere "assword:" y envíe su contraseña.
Baard Kopperud

Respuestas:


10

Use un .netrcarchivo en su directorio de inicio.

El contenido es:

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

Si esto es algo que está haciendo mediante programación, escriba .netrcantes de conectarse, elimínelo cuando haya terminado.


¿Este archivo es específico ftpo también lo leen otros programas?
terdon

La netrc(5)página del manual dice que es "para ftp(1)", pero no estoy seguro de que ftpsea ​​lo único que lo usará.
bahamat

Si desea encontrar su archivo ".netrc" simplemente use este comando:locate '.netrc'
goamn

1

También puede escribir un script de shell ac usando un documento aquí que iría más o menos así:

#!/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

También puede considerar wputo wgetcomo alternativas, según sus necesidades.

No lo he usado wgetrecientemente, pero lo he hecho wputporque no quería crear o modificar archivos como se sugiere en algunas respuestas anteriores.

Para wput, la sintaxis es:

wput <filename> ftp://<username>:<password>@<address>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.