Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 为什么WGET在成功之前返回2条错误消息?_Shell_Wget - Fatal编程技术网

Shell 为什么WGET在成功之前返回2条错误消息?

Shell 为什么WGET在成功之前返回2条错误消息?,shell,wget,Shell,Wget,我正在使用一个脚本,通过WGET在一个需要身份验证的URL上提取一些XML数据 在此过程中,我的脚本为访问的每个url(IP和主机名已更改以保护用户)生成以下输出: 为什么WGET抱怨在成功连接之前访问URL失败了两次?有没有办法在第一次尝试时关闭它,或者让它正确连接 作为参考,以下是我用来调用WGET的线路: wget --http-user=USERNAME --password=PASSWORD -O file.xml http://host.name.com/file.xml 这似乎是

我正在使用一个脚本,通过WGET在一个需要身份验证的URL上提取一些XML数据

在此过程中,我的脚本为访问的每个url(IP和主机名已更改以保护用户)生成以下输出:

为什么WGET抱怨在成功连接之前访问URL失败了两次?有没有办法在第一次尝试时关闭它,或者让它正确连接

作为参考,以下是我用来调用WGET的线路:

wget --http-user=USERNAME --password=PASSWORD -O file.xml http://host.name.com/file.xml

这似乎是故意的。按照@Wayne Conrad的建议,我添加了-d开关,并能够观察到第一次尝试失败,因为需要NTLM,第二次尝试失败,因为第一次NTLM尝试仅为1级,需要3级NTLM质询响应。WGET最终在第三次尝试时提供所需的身份验证


WGET确实获得了一个cookie,以防止在会话期间进行重新身份验证,如果文件之间的连接没有终止,这将阻止重新身份验证。我需要向WGET传递一个文件列表才能执行此操作,但是我无法,因为我事先不知道文件名。

您似乎有一个新版本的WGET。在1.10.2之后,wget将不会发送身份验证,除非服务器首先提出质疑。这就是第一个失败的原因。第二个是你们描述的失败原因


您可以通过添加参数--auth no challenge来减少其中一个。这将以“基本”模式发送第一个,该模式将失败,第二个将以“摘要”模式发送。哪种方法应该有效。

是否可以有多种身份验证方法。。方法一和方法二失败,第三次尝试成功?@lexu-有可能,但我如何确定我的服务器使用的是哪种方法,以及如何指定WGET首先使用该方法?如果您给WGET-d开关,它将显示每个请求和响应的全文。
wget --http-user=USERNAME --password=PASSWORD -O file.xml http://host.name.com/file.xml