我想使用wget远程下载文件:
https://test.mydomain.com/files/myfile.zip
网站test.mydomain.com需要登录。我想使用此命令在我的另一台服务器上下载该文件,但它不起作用(不完全下载文件):
wget --user=myusername --password=mypassword https://test.mydomain.com/files/myfile.zip
如果我的用户名是myusername,密码是mypassword,那么正确的wget语法是什么?
以下是输入上述命令后的返回消息:
Resolving test.mydomain.com (test.mydomain.com)... 123.456.789
Connecting to test.mydomain.com (test.mydomain.com)|123.456.789|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://test.mydomain.com/login/unauthorized [following]
--2013-01-30 02:01:32-- https://test.mydomain.com/login/unauthorized
Reusing existing connection to test.mydomain.com:443.
HTTP request sent, awaiting response... 302 Found
Location: https://test.mydomain.com/login [following]
--2013-01-30 02:01:32-- https://test.mydomain.com/login
Reusing existing connection to test.mydomain.com:443.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `myfile.zip'
我错过了什么吗?请帮忙。感谢。
答案 0 :(得分:57)
通过指定选项--user和--ask-password wget将要求提供凭据。以下是一个例子。根据您的需要更改用户名和下载链接。
wget --user=username --ask-password https://xyz.com/changelog-6.40.txt
答案 1 :(得分:17)
我发现wget没有对某些服务器进行适当的身份验证,可能是因为它只符合HTTP 1.0。在这种情况下,curl(符合HTTP 1.1)通常可以解决问题:
curl -o <filename-to-save-as> -u <username>:<password> <url>
答案 2 :(得分:8)
并非您的文件已部分下载。它无法通过身份验证,因此下载例如“index.html”,但它将其命名为myfile.zip(因为这是您要下载的内容)。
我按照@thomasbabu建议的链接,最终想出来了。
您应该尝试添加--auth-no-challenge
,并且@thomasbabuj建议替换您的密码条目
即
wget --auth-no-challenge --user=myusername --ask-password https://test.mydomain.com/files/myfile.zip
答案 3 :(得分:2)
您可以使用HTTP而不是HTTPS尝试相同的地址。请注意,它确实使用HTTP而不是HTTPS,并且仅某些站点可能支持此方法。
示例地址:https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.3.0-amd64-netinst.iso
wget http://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.3.0-amd64-netinst.iso
*注意http://
,而不是https://
。
虽然可能不建议这样做:)
如果可以,请尝试使用curl。
编辑:
仅供参考,使用用户名(并提示输入密码)的示例为:
curl --user $USERNAME -O http://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.3.0-amd64-netinst.iso
-O
在哪里
-O, --remote-name
Write output to a local file named like the remote file we get. (Only the file part of the remote file is used, the path is cut off.)