ইন্টারেক্টিভভাবে কার্ল ব্যবহার করার কোনও উপায় আছে কি? অথবা একটি ইন্টারেক্টিভ কার্ল / উইজেট শেল আছে?


9

এরকম কিছু কল্পনা করুন:

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

এমন কোনও সরঞ্জাম আছে যা আমাকে তা করতে দেয়?

উত্তর:


8

অনেকগুলি লিনাক্স / ইউনিক্স সিস্টেমে আপনার সিউডোকোডটি যে কোনও শেলটিতে কেবলমাত্র কাজ করবে, যদিও আপনার পাথগুলি সত্যই পুরো ইউআরএল হওয়া উচিত।

উদাহরণস্বরূপ, ডেবিয়ান ভিত্তিক সিস্টেমে, প্যাকেজ libwww-perllwp-অনুরোধ যা বলা হয় তিন symlinks ইনস্টল /usr/bin/GET, /usr/bin/HEADএবং /usr/bin/POST। এগুলি আপনার প্রত্যাশা মতো করে do ওপেনসেজের perl-libwww-perlপ্যাকেজের সাম্প্রতিক সংস্করণগুলি সিমলিংকগুলি (যা সম্ভবত কোনও বাগ) বাদ দেয়, তাই আপনাকে সেগুলি নিজেই তৈরি করতে হবে বা lwp-requestসরাসরি ব্যবহার করতে হবে । সাধারণত এবং বহু বছর ধরে, এটি বেশ নিরাপদ অনুমান ছিল যে জিইটি, হেড, এবং পোষ্ট এক্সিকিউটেবলগুলি ইউনিক্সয়েড সিস্টেমে উপলব্ধ।

অবশ্যই আপনি curlএই সমস্ত কাজের জন্যও ব্যবহার করতে পারেন , সুতরাং সম্ভবত আপনি বুঝতে পারেন না যে আপনি কেন বশয়ের মতো একটি কমান্ড লাইন শেল ইন্টারেক্টিভ নয়।


8

উত্তরের জন্য ধন্যবাদ।

আশেপাশে গুগল করার পরে, আমি বিশ্রাম পেয়েছি , এটি কার্ল সরঞ্জামের চারপাশে একটি শেল স্ক্রিপ্ট মোড়ক । এটিই আমি চাই। এটি শেল স্ক্রিপ্টের 155 লাইন, এবং আমি যখন এটি চালনা করি তখন আমি জিইটি, পুট, পোস্ট, ডিলেট এবং বিকল্পগুলির জন্য ফাংশন পাই। এই ফাংশনগুলি আমার পথে পাওয়া কার্ল প্রোগ্রামের চারপাশে কেবল মোড়ক।

এটি ম্যাকোএসএক্স ব্যাশে এর মতো কাজ করে:

$ . 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" : [ ... ]
  },
}
$

সেখানে প্রথম লাইনটি বর্তমান শেলের মধ্যে কমান্ডগুলি চালায়।

পরের লাইন, "রেস্টি" কমান্ডটি ইউআরএল বেস সেট করে। এরপরে, জিইটি, পুট, পোস্ট ... এর যে কোনও কল ... স্পষ্টভাবে সেই ভিত্তিকে উল্লেখ করে। আমি এমন একটি উদাহরণ দেখিয়েছি যা প্রিটিচাইড জেএসওএনকে নির্গত করে। আমি মনে করি যদি আপনার সার্ভারটি জিনসোনড জেএসওএন নির্গত করে তবে আপনি আউটপুটটি পাইপ করে কোনও বহিরাগত স্ক্রিপ্টের মাধ্যমে প্রিন্ট করতে পারেন।

হোস্ট-ভিত্তিক পছন্দগুলির জন্য সমর্থন রয়েছে। মনে করুন আপনার টার্গেটের হোস্টটি api.example.org। ~ / .Resty / api.example.org নামক একটি ফাইল সিটি করুন এবং সেখানে ,োকান, লাইনগুলি আর্গুমেন্টগুলি নির্দিষ্ট করে যা সেই নাম দিয়ে হোস্টের কাছে প্রতিটি কার্লের কাছে পাঠানো উচিত। প্রতিটি http ক্রিয়াপদ তার নিজস্ব লাইন পায়। সুতরাং, ফাইলটিতে এই সামগ্রীটি প্রবেশ করানো:

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

... মানে যে প্রতিটি সময় আমি একটা পেতে পারি যখন api.example.org বেস হোস্টনাম হয়, কার্ল কমান্ড পরোক্ষভাবে ব্যবহার করা হবে -uএবং --write-outargs সেখানে দেখানো হয়েছে। (-উইজিক লেখার জন্য)।

অন্য উদাহরণ হিসাবে, আপনি সেই ফাইলটিতে স্বীকৃতি শিরোনাম নির্দিষ্ট করতে পারেন, যাতে আপনি সর্বদা এক্সএমএলকে অনুরোধ করেন:

GET --header "Accept: application/xml"

যে কোনও কার্ল কমান্ড লাইন আরগটি সেই পছন্দগুলি ফাইলটিতে সমর্থিত। হোস্ট + ক্রিয়া টিপলের জন্য সমস্ত কার্ল আরগগুলি পছন্দসমূহ ফাইলে একটি লাইনে যেতে হবে।

কুশলী।


6

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স্বতন্ত্র ফাইলগুলি পেতে কমান্ডটি ব্যবহার করতে পারেন ।


getকমান্ড ফাইল ডাউনলোড করবে catপর্দায় ইচ্ছা আউটপুট ফাইল। একটি HTTP পেতে postআপনার মত কিছু ব্যবহার করতে পারেন: quote post post.php x=1&y=z
donothingsuccessfully

5

আপনি নেটক্যাট ব্যবহার করতে পারেন ।

নেটকাট একটি সাধারণ ইউনিক্স ইউটিলিটি যা টিসিপি বা ইউডিপি প্রোটোকল ব্যবহার করে নেট‐ ওয়ার্ক সংযোগ জুড়ে ডেটা পড়ে এবং লেখায়।

ভিএলসি হোম পৃষ্ঠাটি পুনরুদ্ধার করার জন্য এখানে একটি উদাহরণ দেওয়া আছে

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
[…]

এইচটিএমএল এর বাকি অংশটি কনসোলের আউটপুট। দ্রষ্টব্য: আপনার পরে Return দু'বার টাইপ করতে হবে HTTP/1.0


4
বাবু, তুমি বেশ্যা। নেটচ্যাট এইচটিটিপি করতে হবে? সেকি! আমি আরও কয়েকটি ঘণ্টা এবং হুইসেল সহ কিছু আশা করছিলাম।
চিজো

1
আপনি কী পরে তা সম্পর্কে আমার কোনও ধারণা নেই। কমপক্ষে এটি আপনার প্রশ্নে যা বলেছিল তা করে, যা খুব বিস্তারিত ছিল না। নেটক্যাট একটি খুব সহজ সরঞ্জাম, ওয়েব ব্রাউজিংয়ের জন্য এটি সম্ভবত উপযুক্ত নয়। আপনার প্রয়োজনের উপর নির্ভর করে।
মার্কো

কোনও অপরাধ নয়, আমি কেবল বলছি, সরঞ্জামটি যদি আরও কিছু বুদ্ধিমান হয় তবে ভাল লাগবে। এটি প্রেরণ করবে এমন HTTP শিরোনাম সেট করার কোনও উপায় থাকলে পছন্দ করুন। বা যদি প্রতিটি অনুরোধের জন্য আমাকে "HTTP / 1.1" টাইপ না করতে হয়। বা ইত্যাদি
চিজো

1

আপনি ইন্টারেক্টিভ ব্যবহার করতে পারেন 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- শেল-০.০২ / লিবি / ডাব্লুডাব্লুডাব্লু / মেকানাইজ / শেল.পিএম


ইন পাইথন :

$ 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()
(...)

Http://wwwsearch.sourceforge.net/mechanize/ দেখুন


1

হ্যাঁ, আপনি "--config" বিকল্পটি ব্যবহার করতে পারেন:

স্ট্যান্ডিন থেকে ফাইলটি কার্ল পড়ার জন্য -K, --config হিসাবে ফাইলের নাম উল্লেখ করুন -

উদাহরণ:

$ curl -K-
url https://github.com/blog
remote-name
<Ctrl + D>

0

কমান্ড লাইনে ইন্টারেক্টিভ ব্রাউজিংয়ের জন্য আমি লিংকটি বেশ পছন্দ করি । যদিও এটি কোনও কাঁচা এইচটিএমএল সরঞ্জামের চেয়ে সম্পূর্ণ ফুটিয়ে তোলা ব্রাউজার (যা একটি এনক্রোস অ্যাপ্লিকেশনে ফিট করে) ..

আমি এসএসএলের আগে কাঁচা এইচটিএমএল কমান্ড পরীক্ষা করেছি, যার জন্য আমি ব্যবহার করেছি openssl, তবে এটি কেবল একবারে একটি কমান্ডের অনুমতি দেয় ..

> openssl s_client -quiet -connect google.com:443
GET /
... HTML response

> openssl s_client -quiet -connect myprivateserver.com:443
POST /thing/pool ...
... response

ওপেনসেল এর s_client বিকল্প সম্পর্কে আরও তথ্যের man s_clientজন্য বিশদ রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.