22 votos

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

¿Hay alguna forma de pasar el nombre de usuario y la contraseña desde un archivo en lugar de la línea de comandos mediante --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 del proceso

22voto

tobias.pal Puntos 31

Me sorprende que nadie haya mencionado el .netrc archivo. Primero cree el archivo si no existe y establezca los permisos de seguridad:

touch ~/.netrc
chmod 600 ~/.netrc

Entonces puedes añadir 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

Entonces, cuando lo hagas wget https://example.com y el servidor responde con 401 Authorization Required wget lo volverá a intentar con el nombre de usuario y la contraseña del ~/.netrc archivo.

Cuando utilice esto desde cron asegúrese de tener el HOME directorio. A menudo cron establece HOME=/ (en ese caso tendría que crear el archivo como /.netrc pero es mejor establecer un HOME al principio de su script, como export HOME=/root ).

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

2 votos

Para la sintaxis de .netrc , ver su manual o el relacionado curl doc .

0 votos

Al principio soy demasiado descuidado para ver el man netrc en el OP, preguntándome POR QUÉ esto funciona, entonces @ryenus tu comentario me salva, gracias~ El manual siempre es bienvenido :P Entonces sé que es un archivo rc usado por ftp Es decir, puede que no funcione para http. Lo probaré en http más tarde.

13voto

Le Dude Puntos 294

Utilice un .wgetrc archivo ( Manual de GNU ) en el que se puede establecer el nombre de usuario y las contraseñas para el ftp y el http, o para ambos.

Para utilizar las mismas credenciales para ambos especifique

user=casper
password=CasperPassword

o individualmente

ftp_user=casperftp
ftp_password=casperftppass
http_user=casperhttp
http_password=casperhttppass

2 votos

El GNU manual de wget también sugiere utilizar el -i y alimentando el nombre de usuario y la contraseña desde la entrada estándar.

0 votos

En .wgetrc ¿proporcionar la flexibilidad de trabajar con más de un servidor? Si no es así, .netrc es una solución mejor, véase la otra respuesta de tobias.pal

0 votos

Evidentemente, he echado de menos que wget utilice un .netrc archivo, pero está documentado .

2voto

gimel Puntos 30150

En muchos aspectos, el rizo puede ser una mejor opción. Wget se volvió un poco rancio con el tiempo.

El parámetro -n de curl puede utilizarse para esta tarea: http://curl.haxx.se/docs/manpage.html#-n

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: