Wget: ¿Hay alguna forma de pasar el nombre de usuario y la contraseña de un archivo?

22

¿Hay alguna manera de pasar el nombre de usuario y la contraseña de un archivo en lugar de la línea de comando a través de --user y --password?

Antecedentes: quiero ejecutar wget a través de cron y no quiero que el nombre de usuario / contraseña aparezca en la vista de proceso

casper
fuente

Respuestas:

13

Utilice un .wgetrcarchivo ( manual de GNU ) en el que puede establecer el nombre de usuario y las contraseñas para ftp y http o para ambos.

Para usar las mismas credenciales para ambos, especifique

user=casper
password=CasperPassword

o individualmente

ftp_user=casperftp
ftp_password=casperftppass
http_user=casperhttp
http_password=casperhttppass
Mike Renfro
fuente
2
El manual de widgets de GNU también sugiere usar la -iopción y alimentar el nombre de usuario y la contraseña desde la entrada estándar.
Richard
¿ .wgetrcProporciona la flexibilidad para trabajar con más de un servidor? Si no, .netrces una mejor solución, vea la otra respuesta de tobias.pal
ryenus
Obviamente extrañé wget usando un .netrcarchivo, pero está documentado .
Mike Renfro
19

Me sorprende que nadie haya mencionado el .netrcarchivo. Primero cree el archivo si no existe y establezca permisos seguros:

touch ~/.netrc
chmod 600 ~/.netrc

Luego puede agregar el nombre de host, el nombre de usuario y la contraseña, todo en una línea:

echo 'machine example.com login casper password CasperPassword' >> ~/.netrc

Luego, cuando lo haga wget https://example.comy el servidor responda 401 Authorization Required, wget volverá a intentarlo con el nombre de usuario y la contraseña del ~/.netrcarchivo.

Cuando use esto desde cron, asegúrese de tener el HOMEdirectorio correcto . A menudo, los conjuntos cron HOME=/(en ese caso, tendrías que crear el archivo como /.netrc, pero es mejor establecer un apropiado HOMEal comienzo de tu script, como export HOME=/root).

Puede especificar varios hosts en ~/.netrc, uno por línea. Más información en man netrc.

Paul Tobias
fuente
2
Para conocer la sintaxis de .netrc, consulte su manual o el documento curl relacionado .
ryenus
Al principio soy demasiado descuidado para ver el man netrcOP, preguntándome POR QUÉ esto funciona, luego @ryenus tu comentario me salva, gracias ~ El manual siempre es bienvenido: P Entonces sé que es un archivo rc utilizado ftp, es decir, puede no funciona para http. Lo intentaré en http más tarde.
Fin de semana