Wget

有沒有辦法以互動方式使用 curl?或者是否有互動式 curl/wget shell?

  • January 22, 2018

想像一下這樣的事情:

$ curlsh http://www.example.org
> GET /foo/bar/bam
...output here...
> POST /thing/pool ...
... result here.... 

有沒有工具可以讓我做到這一點?

感謝您的回答。

Google搜尋後,我發現了 resty,它是curl工具的外殼腳本包裝器。這真的是我想要的。它有 155 行 shell 腳本,當我執行它時,我得到了 GET、PUT、POST、DELETE 和 OPTIONS 的函式。這些函式只是我路徑上的 curl 程序的包裝器。

它在 MacOSX bash 上的工作方式如下:

$ . resty

$ resty https://api.example.org
https://api.myhost.com*

$ GET /v1/o/orgname -u myusername:password
{
 "createdAt" : 1347007133508,
 "createdBy" : "admin",
 "displayName" : "orgname",
 "environments" : [ "test", "prod" ],
 "lastModifiedAt" : 1347007133508,
 "lastModifiedBy" : "admin",
 "name" : "orgname",
 "properties" : {
   "propertyList" : [ ... ]
 },
}
$

那裡的第一行只是執行目前 shell 中的命令。

下一行,“resty”命令,設置 URL 基礎。此後,對 GET、PUT、POST… 的任何呼叫都會隱式引用該基礎。我展示了一個發出美化 JSON 的範例。我認為如果您的伺服器發出縮小的 JSON,您可以通過管道輸出使用外部腳本漂亮地列印它。

支持基於主機的首選項。假設您的目標主機是 api.example.org。創建一個名為 ~/.resty/api.example.org 的文件,並在其中插入指定參數的行,這些參數應通過該名稱傳遞給對主機的每個 curl 呼叫。每個 http 動詞都有自己的行。因此,在文件中插入此內容:

GET -u myusername:mypassword --write-out "\nStatus = %{http_code}\n"

…意味著每次我在 api.example.org 是基本主機名時執行 GET,curl 命令將隱式使用那裡顯示的-u--write-outargs。(-u 用於基本身份驗證)。

作為另一個範例,您可以在該文件中指定 Accept 標頭,以便始終請求 XML:

GET --header "Accept: application/xml"

該首選項文件支持任何 curl 命令行參數。主機+動詞元組的所有 curl 參數都需要在首選項文件中的一行上。

便利。

在許多 Linux/Unix 系統上,您的虛擬碼只能在任何 shell 中工作,儘管您的路徑實際上應該是完整的 URL。

例如,在基於 Debian 的系統上,該軟體包libwww-perl安裝了三個指向 lwp-request 的符號連結,分別稱為/usr/bin/GET/usr/bin/HEAD/usr/bin/POST. 這些可以滿足您的期望。OpenSuseperl-libwww-perl軟體包的最新版本省略了符號連結(這可能是一個錯誤),因此您必須自己創建或lwp-request直接使用它們。一般來說,多年來,GET、HEAD 和 POST 執行檔在 unixoid 系統上可用是一個相當安全的假設。

當然,您也可以curl用於所有這些任務,所以也許我不明白為什麼您覺得像 bash 這樣的命令行 shell 不是互動式的。

引用自:https://unix.stackexchange.com/questions/51944