我想寫一個BASH命令,它使用CURL向兩個不同的網頁發送GET請求,但使用相同的連接。對我來說,就像發送GET請求到登錄頁面以向服務器進行身份驗證,然後第二個請求模仿將在Web瀏覽器中發生的自動重定向到主頁(通過meta刷新標籤)。我需要鏈接請求,因爲主頁的內容(由服務器生成)對於訪客用戶而言與認證用戶不同。BASH CURL:在請求之間不要關閉連接時按順序運行
我第一次嘗試根據建議,從SOF post此命令(假設變量$IP
和$PORT
已經與有效值定義):
curl -u user:pass ${IP}:${PORT}/login.php && curl ${IP}:${PORT}/index.php
不過,我總是得到這樣的端之間發生這種情況第一個GET和第二個開始:
* Connection #0 to host 10.0.3.153 left intact
* Closing connection #0
那麼SOF的帖子是錯的嗎?不管怎麼說,這樣的命令將成功地保持連接打開兩個請求之間:
curl -u user:pass ${IP}:${PORT}/login.php ${IP}:${PORT}/index.php
但是,我真的希望能有一個解決方案比後者命令接近前者的命令。主要原因是將輸出從第一頁與第二頁分離爲兩個不同的輸出文件。所以,我想要做的事,如:
curl page1.html > output1 && curl page2.html > output2
當然,我需要重複使用相同的連接,因爲page2.html的內容取決於我也做在同一個HTTP會話page1.html的請求。
我也開放給使用netcat或wget的解決方案,但不是PHP!
關於'&&':這只是一個Bash符號,用於一個接一個地運行兩個命令,限制第二個命令只在第一個命令成功時運行。 (換句話說,如果'curl -u user:pass $ {IP}:$ {PORT}/login.php'返回一個錯誤,那麼'curl $ {IP}:$ {PORT}/index.php'將不會被運行。)它與保持連接打開沒有任何關係,或者類似的東西。 – ruakh 2013-03-10 07:24:01