簡體   English   中英

從腳本調用時curl返回HTTP代碼503

[英]curl return HTTP code 503 when called from a script

我嘗試調用一些REST API並使用curl獲得最終的HTTP代碼。 如果在終端機中輸入:

curl -s -o /dev/null -I -w '%{http_code}' -X POST 'http://localhost/gitlab/api/v3/projects?private_token=my_private_token&name=blabla' -H 'Content-Length: 0'

它可以正常工作,並向我返回HTTP代碼201 (“創建”)。 現在,我嘗試在bash腳本中使用此命令,將部分網址替換為變量:

echo "Enter base URL :"
read gitlab_url # Here I type 'http://localhost/gitlab', to generate the same URL as in first code snippet
code_status=$(curl -s -o /dev/null -I -w '%{http_code}' -X POST '$gitlab_url/api/v3/projects?private_token=my_private_token&name=blabla' -H 'Content-Length: 0')
echo "$code_status"

然后返回HTTP代碼503 (“服務不可用”)。 要查看“硬編碼” URL和生成的URL之間是否有任何區別,我這樣做:

echo "curl -s -o /dev/null -I -w '%{http_code}' -X POST '$gitlab_url/api/v3/projects?private_token=my_private_token&name=blabla' -H 'Content-Length: 0'"
# Output :
curl -s -o /dev/null -I -w '%{http_code}' -X POST 'http://localhost/gitlab/api/v3/projects?private_token=my_private_token&name=blabla' 'Content-Length: 0'

如果我直接在終端中執行此操作,它將正常工作並返回201 因此:如果在腳本中使用此命令,為什么該命令失敗? 有什么我想念的嗎?

這是一個代理問題。 如果我使用curl -v ....我可以看到以下輸出:

當在終端中直接鍵入curl ,我有:

* About to connect() to localhost port 80 (#0)
*   Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 80 (#0)

當我將其用於bash腳本時,我得到:

* About to connect() to proxy proxy.my.company port xxx (#0)
*   Trying xx.xx.xx.xx... connected
* Connected to proxy.my.company (xx.xx.xx.xx) port xxx (#0)

因此,要解決此問題,我在腳本頂部添加了此代碼:

export no_proxy=localhost,127.0.0.1
export http_proxy=""

我對此感到非常驚訝,因為我已經有一個環境var no_proxy ,該環境已經引用了localhost127.0.0.1

嘗試將其作為bash -x script.sh運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM