Wget: Gibt es eine Möglichkeit, Benutzernamen und Passwort aus einer Datei zu übergeben?

22

Gibt es eine Möglichkeit, den Benutzernamen und das Kennwort aus einer Datei anstelle der Befehlszeile über --user und --password zu übergeben?

Hintergrund: Ich möchte wget über cron ausführen und möchte nicht, dass der Benutzername / das Passwort in der Prozessansicht angezeigt wird

Kasper
quelle

Antworten:

13

Verwenden Sie eine .wgetrcDatei ( GNU-Handbuch ), in der Sie Benutzernamen und Kennwörter für FTP und / oder HTTP festlegen können.

Um die gleichen Anmeldeinformationen für beide zu verwenden, geben Sie an

user=casper
password=CasperPassword

oder einzeln

ftp_user=casperftp
ftp_password=casperftppass
http_user=casperhttp
http_password=casperhttppass
Mike Renfro
quelle
2
Das GNU wget-Handbuch schlägt auch vor, die -iOption zu verwenden und den Benutzernamen und das Passwort von der Standardeingabe einzugeben.
Richard
Bietet .wgetrces die Flexibilität, mit mehr als einem Server zu arbeiten? Wenn nicht, .netrcist eine bessere Lösung, siehe die andere Antwort von tobias.pal
ryenus
Ich habe offensichtlich wget mit einer .netrcDatei verpasst , aber es ist dokumentiert .
Mike Renfro
19

Ich bin überrascht, dass niemand die .netrcAkte erwähnt hat. Erstellen Sie zuerst die Datei, falls sie nicht vorhanden ist, und legen Sie die sicheren Berechtigungen fest:

touch ~/.netrc
chmod 600 ~/.netrc

Dann können Sie den Hostnamen, den Benutzernamen und das Passwort in einer Zeile hinzufügen:

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

Wenn Sie dies tun wget https://example.comund der Server antwortet mit, 401 Authorization Requiredversucht wget es erneut mit dem Benutzernamen und dem Kennwort aus der ~/.netrcDatei.

Wenn Sie dies von cron aus benutzen, vergewissern Sie sich, dass Sie das richtige HOMEVerzeichnis haben. Häufig Cron-Sets HOME=/(in diesem Fall müssten Sie die Datei als erstellen /.netrc, aber es ist besser, HOMEam Anfang Ihres Skripts ein richtiges wie festzulegen export HOME=/root).

Sie können mehrere Hosts in angeben ~/.netrc, einen pro Zeile. Mehr Infos in man netrc.

Paul Tobias
quelle
2
Informationen zur Syntax von .netrcfinden Sie im zugehörigen Handbuch oder im zugehörigen Curl-Dokument .
Ryenus
Zuerst bin ich zu nachlässig, um das man netrcim OP zu sehen und frage mich, WARUM das funktioniert, dann rettet mich @ryenus dein Kommentar, danke ~ Handbuch ist immer willkommen: P Dann weiß ich, dass es eine rc-Datei ist, die von verwendet wird ftp, das heißt, es kann funktioniert nicht für http. Ich werde es später auf http versuchen.
Wochenende,