Wget: есть ли способ передать имя пользователя и пароль из файла?

22

Есть ли способ передать имя пользователя и пароль из файла вместо командной строки через --user и --password?

Справочная информация: я хочу запустить wget через cron и не хочу, чтобы имя пользователя / пароль отображалось в процессе просмотра

Casper
источник

Ответы:

13

Используйте .wgetrcфайл ( руководство по GNU ), в котором вы можете установить имя пользователя и пароли для обоих или обоих ftp и http.

Чтобы использовать одинаковые учетные данные для обоих укажите

user=casper
password=CasperPassword

или индивидуально

ftp_user=casperftp
ftp_password=casperftppass
http_user=casperhttp
http_password=casperhttppass
Майк Ренфро
источник
2
Руководство по GNU wget также предлагает использовать эту -iопцию и вводить имя пользователя и пароль из стандартного ввода.
Ричард
.wgetrcОбеспечивает ли гибкость работы более чем с одним сервером? Если нет, то .netrcэто лучшее решение, см. Другой ответ от tobias.pal
ryenus
Я явно пропустил wget, используя .netrcфайл, но это задокументировано .
Майк Ренфро
19

Я удивлен, что никто не упомянул .netrcфайл. Сначала создайте файл, если он не существует, и установите безопасные разрешения:

touch ~/.netrc
chmod 600 ~/.netrc

Затем вы можете добавить имя хоста, имя пользователя и пароль в одну строку:

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

Затем, когда вы это сделаете, wget https://example.comи сервер 401 Authorization Requiredответит, wget повторит попытку с именем пользователя и паролем из ~/.netrcфайла.

При использовании этого от cron убедитесь, что у вас есть правильный HOMEкаталог. Часто наборы cron HOME=/(в этом случае вы должны будете создать файл как /.netrc, но лучше установить правильный HOMEв начале вашего скрипта, например export HOME=/root).

Вы можете указать несколько хостов ~/.netrc, по одному на строку. Больше информации в man netrc.

Пол Тобиас
источник
2
Синтаксис .netrcсм. В его руководстве или в соответствующем документе curl .
ryenus
Сначала я слишком небрежен, чтобы видеть man netrcв ОП, интересно, ПОЧЕМУ это работает, затем @ryenus твой комментарий спасает меня, спасибо ~ Руководство всегда приветствуется: P Тогда я знаю, что это rc-файл, используемый ftp, то есть он может не работает для http. Я попробую это на http позже.
Выходные
0

Во многих отношениях локон может быть лучшим выбором. Wget стал немного устаревшим со временем.

Переключатель curl -n можно использовать для этой задачи: http://curl.haxx.se/docs/manpage.html#-n

cstamas
источник