2016-03-07 71 views
3

我想在Linux中使用curl来更改基于Onvif的相机的日期。我已经成功地在c#中使用摘要身份验证,但我坚持在这种情况下。使用 - 摘要选项用于在Linux中使用卷曲进行'摘要式身份验证'

我使用下面的命令:

curl -u "admin:admin" --digest http://10.104.37.1:80/onvif/device_service --data '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SetSystemDateAndTime xmlns="http://www.onvif.org/ver10/device/wsdl"><DateTimeType>Manual</DateTimeType><DaylightSavings>false</DaylightSavings><TimeZone><TZ xmlns="http://www.onvif.org/ver10/schema">CST-0:00:00</TZ></TimeZone><UTCDateTime><Time xmlns="http://www.onvif.org/ver10/schema"><Hour>8</Hour><Minute>8</Minute><Second>8</Second></Time><Date xmlns="http://www.onvif.org/ver10/schema"><Year>2008</Year><Month>8</Month><Day>8</Day></Date></UTCDateTime></SetSystemDateAndTime></s:Body></s:Envelope>' 

而且我得到以下结果(似乎被卡住):

  • 关于以()连接到10.104.37.1端口80(#0)
  • 尝试10.104.37.1 ...连接
  • 连接到10.104.37.1(10.104.37.1)端口80(#0)
  • 使用摘要与用户 '管理员'
  • 服务器认证
  • POST/ONVIF/device_service HTTP/1.1
  • 的User-Agent:卷曲/ 7.19.7(1486-PC-Linux的GNU)的libcurl/7.19.7的OpenSSL/0.9.8k ZLIB/1.2.3.3的libidn/1.15
  • 主机:10.104.37.1
  • 接受:/
  • 的Content-Length:0
  • 内容类型:应用/ X WWW的形状配合urlencoded

之后,没有任何反应。

我不得不说,如果我刚才读的日期(此操作不需要AUTH)...

curl -u admin:admin http://10.104.37.1:80/onvif/device_service --data '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GetSystemDateAndTime xmlns="http://www.onvif.org/ver10/device/wsdl"/></s:Body></s:Envelope>' 

...它是正确的,但如果我添加“--digest “,这个过程遵循之前评论过的行为。

任何人都可以给我一个提示吗?

谢谢!

编辑: 是不是很奇怪,内容长度= 0?

回答

1

我终于找到一个解决这个问题:我添加了一些选项--anyauth完整的命令。 无论如何,我仍然不知道为什么使用--digest选项会阻塞进程。