Wget: Czy istnieje sposób na przekazanie nazwy użytkownika i hasła z pliku?

22

Czy istnieje sposób na przekazanie nazwy użytkownika i hasła z pliku zamiast wiersza poleceń przez --user i --password?

Tło: Chcę uruchomić wget za pośrednictwem crona i nie chcę, aby nazwa użytkownika / hasło były wyświetlane w widoku procesu

Casper
źródło

Odpowiedzi:

13

Użyj .wgetrcpliku ( instrukcja GNU ), w którym możesz ustawić nazwę użytkownika i hasło dla jednego lub obu ftp i http.

Aby użyć tych samych poświadczeń dla obu, określ

user=casper
password=CasperPassword

lub indywidualnie

ftp_user=casperftp
ftp_password=casperftppass
http_user=casperhttp
http_password=casperhttppass
Mike Renfro
źródło
2
Podręcznik GNU wget sugeruje również użycie -iopcji i podanie nazwy użytkownika i hasła ze standardowego wejścia.
Richard
Czy .wgetrczapewnia elastyczność pracy z więcej niż jednym serwerem? Jeśli nie, .netrcto lepsze rozwiązanie, zobacz inną odpowiedź z tobias.pal
ryenus
Oczywiście brakowało mi wget używania .netrcpliku, ale jest to udokumentowane .
Mike Renfro,
19

Dziwię się, że nikt nie wspomniał o .netrcpliku. Najpierw utwórz plik, jeśli nie istnieje i ustaw bezpieczne uprawnienia:

touch ~/.netrc
chmod 600 ~/.netrc

Następnie możesz dodać nazwę hosta, nazwę użytkownika i hasło, wszystkie w jednym wierszu:

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

Następnie, gdy to zrobisz, wget https://example.coma serwer odpowie 401 Authorization Required, wget spróbuje ponownie z nazwą użytkownika i hasłem z ~/.netrcpliku.

Korzystając z tego z crona upewnij się, że masz właściwy HOMEkatalog. Często zestawy cron HOME=/(w takim przypadku musisz utworzyć plik jako /.netrc, ale lepiej jest ustawić odpowiedni HOMEna początku skryptu, na przykład export HOME=/root).

Możesz podać wiele hostów ~/.netrc, po jednym w wierszu. Więcej informacji w man netrc.

Paul Tobias
źródło
2
Aby .netrczapoznać się ze składnią , zobacz jego instrukcję lub powiązany dokument curl .
ryenus
Na początku jestem zbyt nieostrożny, aby zobaczyć man netrcw OP, zastanawiam się, DLACZEGO to działa, a następnie @ryenus twój komentarz mnie ocala, dzięki ~ Instrukcja jest zawsze mile widziana: P W takim razie wiem, że jest to plik rc używany przez ftp, to znaczy, że może nie działa dla http. Spróbuję później na http.
Weekend