Wget: Existe-t-il un moyen de transmettre le nom d'utilisateur et le mot de passe à partir d'un fichier?

22

Existe-t-il un moyen de transmettre le nom d'utilisateur et le mot de passe à partir d'un fichier au lieu de la ligne de commande via --user et --password?

Contexte: je veux exécuter wget via cron et je ne veux pas que le nom d'utilisateur / mot de passe apparaisse dans la vue du processus

casper
la source

Réponses:

13

Utilisez un .wgetrcfichier ( manuel GNU ) dans lequel vous pouvez définir un nom d'utilisateur et des mots de passe pour ftp et http ou pour les deux.

Pour utiliser les mêmes informations d'identification pour les deux, spécifiez

user=casper
password=CasperPassword

ou individuellement

ftp_user=casperftp
ftp_password=casperftppass
http_user=casperhttp
http_password=casperhttppass
Mike Renfro
la source
2
Le manuel GNU wget suggère également d'utiliser l' -ioption et de saisir le nom d'utilisateur et le mot de passe à partir de l'entrée standard.
Richard
Offre .wgetrcla flexibilité de travailler avec plusieurs serveurs? Sinon, .netrcc'est une meilleure solution, voir l'autre réponse de tobias.pal
ryenus
J'ai évidemment manqué wget en utilisant un .netrcfichier, mais c'est documenté .
Mike Renfro
19

Je suis surpris que personne n'ait mentionné le .netrcdossier. Créez d'abord le fichier s'il n'existe pas et définissez les autorisations sécurisées:

touch ~/.netrc
chmod 600 ~/.netrc

Ensuite, vous pouvez ajouter le nom d'hôte, le nom d'utilisateur et le mot de passe sur une seule ligne:

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

Ensuite, lorsque vous le ferez wget https://example.comet que le serveur répondra 401 Authorization Required, wget réessayera avec le nom d'utilisateur et le mot de passe du ~/.netrcfichier.

Lorsque vous utilisez ceci depuis cron, assurez-vous d'avoir le bon HOMErépertoire. Souvent, les ensembles cron HOME=/(dans ce cas, vous devrez créer le fichier en tant que /.netrc, mais il est préférable de définir un bon HOMEau début de votre script, comme export HOME=/root).

Vous pouvez spécifier plusieurs hôtes dans ~/.netrc, un par ligne. Plus d'informations dans man netrc.

Paul Tobias
la source
2
Pour la syntaxe de .netrc, consultez son manuel ou le doc curl associé .
ryenus
Au début, je suis trop imprudent pour voir le man netrcdans l'OP, me demandant POURQUOI cela fonctionne, puis @ryenus votre commentaire me sauve, merci ~ Le manuel est toujours le bienvenu: P Ensuite, je sais que c'est un fichier rc utilisé par ftp, c'est-à-dire qu'il peut ne fonctionne pas pour http. Je vais l'essayer sur http plus tard.
Week - end