2013-11-21 34 views
0

我正在使用BASH,我需要下載一個TXT文件,該文件是通過請求在服務器端生成的。這意味着URL是一樣的東西:Bash - 下載文件,根據需要登錄

http://1.1.1.1:4884/page.aspx?fileID=123456&lang=en&Export=1 

Export=1由.NET應用程序捕獲,我提供了一個TXT文件的基礎上,FILEID。
如果我還沒有登錄,我將被重定向到URL中的?ReturnUrl登錄表單,並在登錄後將我重定向回我的請求頁面。

如何使用BASH,cURL/wget/lynx成功下載此文件。它必須是非交互式的。

我已經嘗試使用--cookie選項來捲曲和wget和lynx自動化(cmd-log)。 Lynx工作得最好,但出於某種原因,文件下載提示無法自動執行。

請幫忙。如果需要其他信息,我會提供。

+0

'wget'有'--http-password'&'--http-user'選項...試試它們...有關更多信息,請檢查'man wget' ...如果沒有任何結果,請嘗試預期效用。您可能需要單獨安裝它。 (請查看「男人期待」瞭解更多詳情。) – anishsane

+0

我對預期很熟悉。你認爲這可以用在這裏嗎?至於--http-password/user選項 - 它們不支持基於表單的認證。 –

+0

哦,它是基於表單的認證?它沒有提及的問題,或者我可能錯過了... – anishsane

回答

0
  1. 使用捲曲。
  2. 代碼如下辦法:
    • 嘗試下載文件
    • 如果失敗(被重定向到登錄頁面),登錄並進入開始
  3. 你總是需要使用捲曲的-c選項在curl調用之間存儲cookie
  4. 要使用curl登錄,您需要知道服務器上的表單,這意味着:您通常輸入登錄名和密碼的字段的名稱。
  5. 要將數據發送到服務器,請使用curl的-d選項。要將cookie發送到服務器,請使用-b(或--cookie)。
+0

試過:'anton @ hostname〜$ curl -c -d「txtUsername = admin&txtPassword = admin」http://1.1.1.1:4884/FormLoginAuth.aspx' 。結果:將'FormLoginAuth.aspx'的源打印到'stdout'。使用'--data =「txtUsername = admin&txtPassword = admin」'時的結果相同 –