টেলনেট কমান্ড হিসাবে একটি পাঠ্য ফাইলের বিষয়বস্তু খাওয়ানো


10

কমান্ডটি সহ telnet docs.python.org 80, আমি http://docs.python.org/2/license.htmlআসল অনুরোধটি টাইপ করে একটি ম্যানুয়াল এইচটিটিপি অনুরোধ করতে পারি ।

এখন, এটি লাইভ টাইপ করার পরিবর্তে, আমি একটি পাঠ্য ফাইল থেকে অনুরোধটি ফিড করতে চাই।

আমি এটি চেষ্টা করেছি:

cat request.txt|telnet docs.python.org 80


অনুরোধ.txt :

GET /2/license.html HTTP/1.1 
Host: docs.python.org

(আপনাকে ফাঁকা লাইন দিয়ে ফাইলটি শেষ করতে হবে বা আপনি একটি খারাপ অনুরোধ পাবেন!)


কিন্তু সার্ভারের সাথে সংযোগটি অবিলম্বে বন্ধ হয়ে যায়।

আমার কীভাবে সঠিকভাবে অনুরোধ করা উচিত telnet docs.python.org 80?


সম্পাদনা:

এটা জানা ভালো; আপনি যদি এর HEADপরিবর্তে ব্যবহার GETকরেন তবে আপনি GETবার্তার মূল অংশ বাদে কোনও অনুরোধ করেছেন এমনই সাড়া পাবেন ।
সুতরাং, HEADআপনি যদি কেবল এইচটিটিপি শিরোনাম পরীক্ষা করতে চান তবে ব্যবহার করুন। (উদাহরণস্বরূপ যাতে প্রতিক্রিয়ার সামগ্রীগুলি আপনার শেল আউটপুটকে বিশৃঙ্খলা না করে))


আপনি যে আসল কমান্ডটি ম্যানুয়ালি চালিত করেন তা কি আপনি অন্তর্ভুক্ত করতে পারেন যাতে আমরা তুলনা করতে পারি? GETআপনি পোস্ট করা চালানোর সময় আমি একটি 408 Request Time-outত্রুটি পাই get এছাড়াও, wget http://docs.python.org/2/license.htmlএকটি বিকল্প না?
টেরডন

কমান্ডগুলি সঠিক। আমি মনে করি আপনি প্রবেশ করার মুহুর্তে আপনি সার্ভারের সাথে সংযোগ স্থাপন করছেন telnet docs.python.org 80, তাই আপনাকে তাড়াহুড়া করতে হবে এবং কয়েক সেকেন্ডের মধ্যে সেই দুটি লাইন (নেকসিপি থাকলে অনুলিপি পেস্ট করুন) টাইপ করতে হবে বা সার্ভার একটি সময়সীমা ত্রুটি ফিরিয়ে দেবে।
বেন্টলে

এগুলি telnet docs.python.org 80 <ENTER> GET /2/license.html HTTP/1.1 <ENTER> Host: docs.python.org <ENTER> <ENTER>
হু হু হু হু হু হু হু হু হু হু হু হ'ল

1
আমি মনে করি আপনার <ENTER>দ্বিতীয় বারের মতো শেষে কেন টাইপ করা দরকার কারণ হ'ল অনুরোধ শিরোনামগুলির পরে এইচটিটিপি প্রোটোকলের জন্য অতিরিক্ত খালি লাইন প্রয়োজন। দেখুন অনুরোধ বার্তা অধ্যায় এর HTTP- র উইকি নিবন্ধে
Bentley4

1
দাম্মিত, তাত্ত্বিকভাবে, আপনার করা উচিত telnet < request.txtতবে আমি GETকাজ করার আদেশ পেতে পারি না ।
টেরডন

উত্তর:


21

নেটক্যাট (এনসি কমান্ড) ব্যবহার করুন বরং "টেলনেট" ব্যবহার করুন, তাই

বিড়াল অনুরোধ.txt | এনসি ডকস.পিথন.অর্গ 80

টেলনেট একটি দ্রুত এবং সহজ হ্যাক, তবে নেটক্যাটটি দৃশ্যত কাজের জন্য সঠিক সরঞ্জাম।


কীভাবে টেলনেট 'দ্রুত' এবং 'সহজ' তারপরে নেটক্যাপ হয়? এই ক্ষেত্রে আমি কোনও ব্যবহারের পার্থক্য দেখছি না।
বেন্টলে

অবশ্যই এই ক্ষেত্রে নয়, তবে আমি মনে করি লোকেরা (আমাকে পড়ুন, এবং আপাতদৃষ্টিতে আপনি !!!) টেলনেট ব্যবহার করার ঝোঁক রাখেন কারণ এটিই আমরা প্রথম শিখেছিলাম এবং অবশ্যই এটি উইন্ডোজ এবং লিনাক্সে উপলব্ধ, যেখানে আমি নেটকাট বিশ্বাস করি উইন্ডোজ অধীনে প্রাক ইনস্টল করা আসে না।
ডেভিডগো

5

আমার আসলেই কোনও অভিজ্ঞতা telnetনেই তবে এটি ফাইল পুনঃনির্দেশ থেকে ইনপুট নেয়:

telnet < abc.txt

সার্ভারের সাথে সঠিকভাবে সংযোগ পেতে আমি এটি পেতে পারি:

$ cat abc.txt
open docs.python.org 80
$ telnet < abc.txt
telnet> Trying 82.94.164.162...
Connected to dinsdale.python.org.
Escape character is '^]'.
Connection closed by foreign host.

GETকমান্ডটি গ্রহণ করার জন্য এটি কীভাবে পাবেন তা সম্ভবত আপনি বুঝতে পারেন তবে আমি পারিনি। একটি বিকল্প হ'ল expectস্ক্রিপ্ট ব্যবহার করা :

#!/usr/bin/expect

spawn telnet docs.python.org 80
expect "Escape character is '^]'." { 
     send "GET /2/license.html HTTP/1.1\nHost: docs.python.org\n\n" 
}
interact

এরপরে আপনি স্ক্রিপ্টটিকে সে হিসাবে সংরক্ষণ করতে পারেন telnet.exp, এটি কার্যকর করে তোলে এবং চালাতে পারেন:

./telnet.exp > output.html

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

1
@ বেন্টলে 4 কোনও সমস্যা নেই, ব্যবহার ncকরা আরও ভাল সমাধান, আপনার এটি গ্রহণ করা উচিত
টেরডন

স্ক্রিপ্টটি interactশেষ করার সঠিক উপায় কী তা আমি দেখতে ব্যর্থ হয়েছি expect
2rs2ts

@ 2rs2ts আমি প্রত্যাশা সম্পর্কে খুব কম জানি, আপনি হয়ত সঠিক হতে পারেন তবে আমি আপনাকে বলতে পারি না যেহেতু আপনার মন্তব্য আমাকে কেন ভুল বলে মনে করে তা আমাকে বলেন নি। আমার উপলব্ধিটি হ'ল interact"ব্যবহারকারীকে বর্তমান প্রক্রিয়াটির নিয়ন্ত্রণ দেয়, যাতে বর্তমান প্রক্রিয়াতে কী-স্ট্রোকগুলি প্রেরণ করা হয় এবং বর্তমান প্রক্রিয়াটির স্টাডআউট এবং স্টাডার ফিরে আসে" (এটি থেকে man expect)। সুতরাং, interactব্যবহারকারীকে আসলে টেলনেট সংযোগটি ব্যবহার করার উপায় দেওয়ার উপায়।
টেরডন

যেহেতু মূল প্রশ্নটি কোনও ফাইলের বিষয়বস্তুগুলিকে খাওয়ানো সম্পর্কে তার telnetসাথে কথোপকথন করার চেয়ে ছিল না বলে আমি মনে করি আপনার সাথে close -i $spawn_idএরকম কিছু বা শেষ হওয়া উচিত । তারপরে স্ক্রিপ্টটি প্রস্থান করবে। সঙ্গে interactআমি আসলে প্রস্থান করতে পারেনি telnetএ সব, আর আমার টার্মিনাল বন্ধ করতে হয়েছিল। খুব কৃপণতা (যদিও এটি আংশিকভাবে আমার দোষ হতে পারে))
2rs2ts
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.