Wget : 파일에서 사용자 이름과 비밀번호를 전달하는 방법이 있습니까?


22

--user 및 --password를 통해 명령 줄 대신 파일에서 사용자 이름과 비밀번호를 전달하는 방법이 있습니까?

배경 : cron을 통해 wget을 실행하고 프로세스보기에 사용자 이름 / 비밀번호를 표시하고 싶지 않습니다.

답변:


13

ftp 및 http 중 하나 또는 둘 모두에 대한 사용자 이름과 비밀번호를 설정할 수 있는 .wgetrc파일 ( GNU manual )을 사용 하십시오.

동일한 자격 증명을 모두 사용하려면

user=casper
password=CasperPassword

또는 개별적으로

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

2
GNU wget 매뉴얼 은 -i옵션을 사용하고 표준 입력에서 사용자 이름과 비밀번호를 입력 할 것을 제안 합니다.
— Richard

.wgetrc둘 이상의 서버에서 작업 할 수있는 유연성을 제공 합니까 ? 그렇지 않은 경우 .netrc더 나은 솔루션 입니다. tobias.pal
— ryenus

분명히 .netrc파일을 사용하는 wget을 놓쳤지만 문서화되어 있습니다.
— Mike Renfro

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 doc을 참조하십시오 .
— Ryenus

처음 man netrc에는 OP에서 이를보기에는 너무 부주의합니다. 왜 이것이 효과가 있는지 궁금해하고 @ryenus 귀하의 의견이 저를 구해 주셔서 감사합니다 ~ Manual은 항상 환영합니다 : P 그렇다면 나는 그것이 사용하는 rc 파일이라는 것을 알고 ftp있습니다. http에서는 작동하지 않습니다. 나중에 http에서 시도하겠습니다.
— 주말

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.