Bash
bash CGI 腳本中的 curl 命令不顯示 XML 輸出datanotshownd一種噸一種n這噸sH這在ndata not shown
如果我在 linux shell 中執行這個命令。
curl=`curl --connect-timeout 4 -k -X POST -H "Content-type: text/xml" --data "<MyRequest><HeartBeat timestamp=\"1311157780201\"></HeartBeat></MyRequest>" http://192.168.1.100:8484/rest/service?action=heartbeat 2>&1 | tee` echo "$curl"
我得到以下回應
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <MyResponse><HeartBeat status="SUCCESS"></HeartBeat></MyResponse>
但是,當在 bash CGI 腳本中執行相同的命令並且輸出顯示在 html pre 標記中時,我看到一些奇怪的表,並且根本沒有顯示任何 XML 數據。
在 CGI bash 腳本中我有這個程式碼
curl=`curl --connect-timeout 4 -k -X POST -H "Content-type: text/xml" --data "<MyRequest><HeartBeat timestamp=\"1311157780201\"></HeartBeat></MyRequest>" http://192.168.1.100:8484/rest/service?action=heartbeat 2>&1 | tee` echo "<h2> RAW Troubleshooting Data </h2><pre>" echo "$curl" echo "</pre>" exit 0
下表顯示在 Web 瀏覽器中,而不是 XML 數據。
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 76 0 424 --:--:-- --:--:-- --:--:-- 424 202 126 0 126 0 76 302 182 --:--:-- --:--:-- --:--:-- 210
但是,如果我在 cgi bash 腳本中使用帶有 -v 命令的 curl 冗長性,我會在我的 Web 瀏覽器中進行跟踪,但仍然缺少 XML 響應。
* About to connect() to xx.xx.xx.xx port xxxxx (#0) * Trying xx.xx.xx.xx... connected * Connected to xx.xx.xx.xx (xx.xx.xx.xx) port xxxxx (#0) > POST /rest/service?action=heartbeat HTTP/1.1 > User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 > Host: xx.xx.xx.xx:xxxx > Accept: */* > Content-type: text/xml > Content-Length: 76 > } [data not shown] % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 76 0 422 --:--:-- --:--:-- --:--:-- 422< HTTP/1.1 200 OK < Server: nginx < Date: Thu, 14 Nov 2019 18:53:44 GMT < Content-Type: application/xml < Transfer-Encoding: chunked < Connection: keep-alive < Vary: Accept-Encoding < X-Powered-By: PHP/7.0.32 < { [data not shown] 202 126 0 126 0 76 284 171 --:--:-- --:--:-- --:--:-- 190 202 126 0 126 0 76 284 171 --:--:-- --:--:-- --:--:-- 190* Connection #0 to host xx.xxx.xxx.xx left intact * Closing connection #0
感謝您的幫助。
您看到的表格是 curl 關於它在做什麼的資訊輸出。它轉到 STDERR。您正在將 STDERR 重定向到 STDOUT (
2>&1
),這就是您看到它的原因。您需要通過添加來刪除該重定向或使 curl 輸出靜音
--silent
。至於為什麼你沒有得到你想要的輸出,這並不完全清楚,但| tee
最後看起來是多餘的,並且缺少目標文件名,因此無濟於事。