2016-03-07 85 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選項會阻塞進程。

相關問題