जवाबों:
कई लिनक्स / यूनिक्स प्रणालियों पर, आपका छद्म कोड बस किसी भी शेल में काम करेगा, हालांकि आपके पथ वास्तव में पूर्ण URL होने चाहिए।
उदाहरण के लिए, डेबियन-आधारित सिस्टम पर, पैकेज libwww-perl
LWP-अनुरोध जो कहा जाता है करने के लिए तीन सिमलिंक स्थापित करता है /usr/bin/GET
, /usr/bin/HEAD
और /usr/bin/POST
। ये वही करते हैं जो आप उम्मीद करते हैं। OpenSuse के perl-libwww-perl
पैकेज के हाल के संस्करण सिम्बलिंक को छोड़ देते हैं (जो कि शायद एक बग है), इसलिए आपको उन्हें खुद बनाना होगा या lwp-request
सीधे उपयोग करना होगा । आम तौर पर और कई वर्षों के लिए, यह काफी सुरक्षित धारणा है कि जीईटी, एचईएडी, और पीओएसटी निष्पादनयोग्य यूनिक्स सिस्टम पर उपलब्ध हैं।
बेशक आप curl
इन सभी कार्यों के लिए भी उपयोग कर सकते हैं, इसलिए शायद मुझे समझ में नहीं आता है कि आपको क्यों लगता है कि कमांड लाइन शेल जैसे बैश इंटरैक्टिव नहीं है।
जवाब के लिए धन्यवाद।
आसपास googling बाद, मैंने पाया Resty है, जो चारों ओर एक खोल स्क्रिप्ट आवरण है कर्ल उपकरण। यह वास्तव में मैं क्या चाहता हूं। यह शेल स्क्रिप्ट की 155 लाइनें हैं, और जब मैं इसे चलाता हूं, मुझे GET, PUT, POST, DELETE और OPTIONS के फ़ंक्शंस मिलते हैं। ये कार्य मेरे पथ पर पाए जाने वाले कर्ल प्रोग्राम के आसपास के रैपर हैं।
यह MacOSX बैश पर इस तरह काम करता है:
$ . 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" : [ ... ]
},
}
$
पहली पंक्ति वहां केवल वर्तमान शेल में कमांड को चलाती है।
अगली पंक्ति, "रेस्टी" कमांड, URL बेस सेट करता है। इसके बाद, GET, PUT, POST ... किसी भी कॉल का अर्थ है कि आधार। मैंने एक उदाहरण दिखाया जो कि JSON के पूर्व-निर्धारित उत्सर्जन करता है। मुझे लगता है कि यदि आपका सर्वर मिनिफ़ाई किए गए JSON का उत्सर्जन करता है, तो आप आउटपुट को पाइप करके बाहरी स्क्रिप्ट के साथ इसे प्रिंट कर सकते हैं।
होस्ट-आधारित प्राथमिकताओं के लिए समर्थन है। मान लीजिए कि आपका लक्ष्य होस्ट api.example.org है। एक फ़ाइल को ~ / .resty / api.example.org कहा जाता है, और वहां डालें, ऐसी लाइनें जो तर्क निर्दिष्ट करती हैं जिन्हें उस नाम से होस्ट को हर कर्ल कॉल को पास किया जाना चाहिए। प्रत्येक http वर्ब को अपनी लाइन मिलती है। इसलिए, इस सामग्री को फ़ाइल में सम्मिलित करें:
GET -u myusername:mypassword --write-out "\nStatus = %{http_code}\n"
... अर्थ यह है कि हर बार जब मैं एक मिलता है जब api.example.org आधार होस्ट नाम है, कर्ल आदेश परोक्ष उपयोग करेगा -u
और --write-out
आर्ग वहाँ दिखाया गया है। (-सूत्र मूल के लिए)।
एक अन्य उदाहरण के रूप में, आप उस फ़ाइल में हेडर को स्वीकार कर सकते हैं, ताकि आप हमेशा XML का अनुरोध करें:
GET --header "Accept: application/xml"
उस प्राथमिकता फ़ाइल में किसी भी कर्ल कमांड लाइन arg का समर्थन किया गया है। होस्ट + क्रिया के लिए सभी कर्ल आर्गन्स को प्राथमिकता फ़ाइल में एक पंक्ति पर जाने की आवश्यकता है।
हैंडी।
lftp:
$ lftp http://repo.xplico.org/pool/
cd ok, cwd=/pool
lftp repo.xplico.org:/pool> ls
drwxr-xr-x -- /
drwxr-xr-x - 2012-02-13 09:48 main
lftp repo.xplico.org:/pool> cd main
lftp repo.xplico.org:/pool/main> ls
drwxr-xr-x -- ..
drwxr-xr-x - 2012-02-13 09:48 x
डायरेक्टरी लिस्टिंग केवल उन वेबसाइटों के लिए काम करती है जो डायरेक्टरी इंडेक्स भेजती हैं। लेकिन भले ही वे आप अभी भी get
व्यक्तिगत फ़ाइलों को प्राप्त करने के लिए कमांड का उपयोग नहीं कर सकते ।
आप नेटकट का उपयोग कर सकते हैं ।
netcat एक साधारण यूनिक्स उपयोगिता है जो टीसीपी या यूडीपी प्रोटोकॉल का उपयोग करते हुए नेटो वर्क कनेक्शन में डेटा पढ़ता और लिखता है।
यहाँ VLC होम पेज को पुनः प्राप्त करने के लिए एक उदाहरण है
nc www.videolan.org 80
GET http://www.videolan.org/vlc/ HTTP/1.0
HTTP/1.1 200 OK
Date: Tue, 16 Oct 2012 07:34:48 GMT
Server: Apache/2.2.16 (Debian)
Content-Location: index.html
[…]
HTML का बाकी कंसोल के लिए आउटपुट है। ध्यान दें: आप टाइप करने की आवश्यकता Return दो बार के बाद HTTP/1.0
।
आप के shells
साथ python
या दोनों का उपयोग कर सकते हैं perl
:
में पर्ल
$ perl -MWWW::Mechanize::Shell -eshell
(no url)> get http://cnn.com
Retrieving http://cnn.com(200)
http://edition.cnn.com/> title
CNN.com International - Breaking, World, Business, Sports, Entertainment and Video News
http://edition.cnn.com/> content
(...)
देखें perldoc WWW::Mechanize::Shell
या http://search.cpan.org/~corion/WWW-Mechanize-Shell-0.52/lib/WWW/Mechanize/Shell.pm
में अजगर :
$ python -i -c 'import mechanize; br = mechanize.Browser(factory=mechanize.RobustFactory())'
>>> br.open("http://xkcd.com/")
<response_seek_wrapper at 0x2824a28 whose wrapped object = <closeable_response at 0x27c2710 whose fp = <socket._fileobject object at 0x27be3d0>>>
>>> br.title()
'xkcd: Identity'
>>> print br.response().read()
(...)
हां, आप "--config" विकल्प का उपयोग कर सकते हैं:
फ़ाइल नाम को -K, --config को '-' के रूप में निर्दिष्ट करें ताकि स्टड से फ़ाइल को कर्ल पढ़ा जा सके।
उदाहरण:
$ curl -K-
url https://github.com/blog
remote-name
<Ctrl + D>
मैं कमांड लाइन पर इंटरैक्टिव ब्राउज़िंग के लिए lynx को काफी पसंद करता हूं । यह एक पूर्ण HTML ब्राउज़र से अधिक है (जो एक ncurses अनुप्रयोग में फिट बैठता है) एक कच्चे HTML उपकरण की तुलना में, हालांकि ..
मैंने पहले SSL पर कच्चे HTML कमांड्स का परीक्षण किया है openssl
, जिसके लिए मैंने उपयोग किया था , लेकिन यह केवल एक बार में एक कमांड की अनुमति देता है।
> openssl s_client -quiet -connect google.com:443
GET /
... HTML response
> openssl s_client -quiet -connect myprivateserver.com:443
POST /thing/pool ...
... response
Opensl के s_client विकल्पों के बारे में अधिक जानकारी के लिए, man s_client
विवरण शामिल हैं।
get
आदेश फ़ाइल डाउनलोड करेगाcat
स्क्रीन पर इच्छा आउटपुट फ़ाइल। एक http प्राप्त करने के लिएpost
आप की तरह कुछ का उपयोग कर सकते हैं:quote post post.php x=1&y=z
।