এনসি কখন ফাইল স্থানান্তরিত হয় তা কীভাবে জানবেন


11

নেটক্যাটটি যখন মেশিনগুলির মধ্যে কোনও ফাইল স্থানান্তরিত হয় তখন তা জানার কোনও উপায় আছে?

বর্তমান আদেশগুলি:

মেশিন # 2: nc -lp 5555 > test.txt

মেশিন # 1: nc MachineIP Port < test.txt

স্থানান্তর ঘটে, তবে এটি সম্পন্ন হয়েছে এমন কোনও ভিজ্যুয়াল ইঙ্গিত নেই।

উত্তর:


19

প্রথমে কিছু ব্যাকগ্রাউন্ড

ncআপনি এনসি (1) - লিনাক্স ম্যান পেজ বা এনসি (1) বিএসডি জেনারেল কমান্ড ম্যানুয়ালটি স্থানান্তর করার পরে সংযোগটি বন্ধ করতে হবে, এর বিভিন্ন সংস্করণ রয়েছে । উভয় লিঙ্কযুক্ত সাইটে একটি উদাহরণ দেওয়া আছে:

একটি নির্দিষ্ট বন্দরে শুনতে এনসি ব্যবহার করে শুরু করুন, কোনও ফাইলে আউটপুট আটকানো সহ:

$ nc -l 1234 > filename.out

একটি দ্বিতীয় মেশিন ব্যবহার করে, শ্রবণ এনসি প্রক্রিয়াতে সংযুক্ত করুন, এটিকে যে ফাইলটি স্থানান্তর করতে হবে তা খাওয়ান:

$ nc host.example.com 1234 < filename.in

ফাইল স্থানান্তরিত হওয়ার পরে, সংযোগটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে।

তোমার netcat, হস্তান্তর পর সংযোগ বন্ধ না তাই এটা এক (গুলি) উপরে বর্ণিত থেকে আলাদা। এটি ডেবিয়ান জেসির উপর আমার, নেটক্যাট ১.১০ এর মতো আচরণ করে। এই আচরণটি /usr/share/doc/netcat-traditional/README.gz(আমার মেশিনে) নথিভুক্ত করা হয়েছে , সাহসী হওয়া আমার:

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

এই আচরণের পিছনে যুক্তি এখানে:

আপনি জিজ্ঞাসা করতে পারেন "কেন স্বেচ্ছাচারী বন্দরগুলির সাথে সংযোগ রাখতে কেবল টেলনেট ব্যবহার করবেন না?" বৈধ প্রশ্ন এবং এখানে কিছু কারণ রয়েছে। টেলনেটের "স্ট্যান্ডার্ড ইনপুট ইওএফ" সমস্যা রয়েছে, তাই নেটওয়ার্ক আউটপুট শেষ হওয়ার জন্য ড্রাইভিং স্ক্রিপ্টগুলিতে অবশ্যই গণনা করতে বিলম্ব প্রবর্তন করতে হবে। নেটওয়ার্কের দিকটি বন্ধ না হওয়া পর্যন্ত নেটকাট চালিয়ে যাওয়া এই মূল কারণ ।

উইকিপিডিয়ায় বিভিন্ন বাস্তবায়নের একটি রান-ডাউন রয়েছে । যদিও আমি পার্থক্যের নাম বলতে পারি না। অন্য কেউ পারে?


এখন, সমাধান

1

ncফাইলটি পড়ার পরে আপনি প্রস্থান করতে বলতে পারেন। এই বিকল্পটি দরকারী:

-q seconds   after EOF on stdin, wait the specified number  of  seconds
             and then quit. If seconds is negative, wait forever.

যদি আপনি এই আদেশটি প্রেরণ শেষে ব্যবহার করেন:

nc -q 0 MachineIP Port < test.txt

ncইওএফ পড়ার পরে 0 সেকেন্ড ছেড়ে যাবে, এটি ফাইলটি শেষ হওয়ার ঠিক পরে। এটি তখন প্রস্থান করবে এবং গ্রহণের সমাপ্তি ঘটবে nc

যদি আপনি অবাক হন যে প্যাকেটগুলি অতিক্রম না করে তবে কি হয়, এখানে জুরাজের একটি মন্তব্য।

যখন সমস্ত প্যাকেটগুলি জুড়ে না আসে, সিস্টেম এটি সনাক্ত করে এবং অ্যাপ্লিকেশনটিকে লক্ষ্য না করে এগুলি পুনঃপ্রেরণ করবে (বা যদি সম্ভব না হয় তবে অ্যাপ্লিকেশন সময়সীমা ত্রুটি পাবে)। নির্ভরযোগ্য ডেলিভারি হ'ল ওএস কার্নেল দ্বারা সরবরাহিত টিসিপি প্রোটোকলের উদ্দেশ্য, যা ncব্যবহার করে। আপনি ইউডিপি প্রোটোকলকে অনুরোধ করতে পারেন যা এটি না করে, এটি ব্যবহার করে nc -uতবে এটি কেস নয়।

2

পূর্বোক্তটিতে একটি মূল উদাহরণ রয়েছে README.gz, যা -wসময়সীমার উপর ভিত্তি করে তৈরি হয় -qএবং আপনার প্রয়োগে উপস্থিত থাকার বিকল্পের প্রয়োজন হয় না ।

নেটক্যাটটি একটি সাধারণ ডেটা ট্রান্সফার এজেন্ট হিসাবে ব্যবহার করা যেতে পারে, এবং এটি আসলে কোনও বিষয় নয় যে শ্রোতা কোনটি এবং কোনটি ক্লায়েন্ট হয় - একদিকে ইনপুট অন্যদিকে আউটপুট হিসাবে উপস্থিত হয়। শ্রোতাদের প্রাপ্ত সময়টিতে নির্দিষ্ট সময়সীমা নির্ধারণ না করে শুরু করা সহায়ক, এবং তারপরে প্রেরণকারীকে একটি ছোট সময়সীমা দিন। এইভাবে শ্রোতা আপনার সাথে যোগাযোগ না করা অবধি শুনতে থাকে এবং ডেটা প্রবাহ বন্ধ হওয়ার পরে ক্লায়েন্ট সময় শেষ হয়ে যায়, বন্ধ হয়ে যায় এবং শ্রোতাকে সাথে রাখে। মধ্যস্থতাকারী নেটওয়ার্ক সমস্যা দ্বারা পরিপূর্ণ না হলে এটি পুরোপুরি নির্ভরযোগ্য হওয়া উচিত এবং আপনি সর্বদা সময়সীমা বাড়াতে পারেন। "আরশ" কোনও কিছুর একটি আদর্শ উদাহরণ প্রায়শই ব্যবহৃত হয়: একদিকে,

nc -l -p 1234 | uncompress -c | tar xvfp -

এবং তারপরে অন্যদিকে

tar cfp - /some/dir | compress -c | nc -w 3 othermachine 1234

.rhosts ফাইল, ব্যবহারকারীর অ্যাকাউন্ট, বা উভয় প্রান্তে ইনটডি কনফিগারেশন নিয়ে চিন্তা না করে কোনও ডিরেক্টরি থেকে অন্য মেশিনে ডিরেক্টরিগুলির সামগ্রী স্থানান্তরিত করে।


আমি এটি কাজ করতে পারে বলে মনে হচ্ছে না। আমি যখন-কি করি তখন এটি বলে যে কমান্ডটি বিদ্যমান নেই। আমি দেখতে দেখতে একইরকম দেখি তবে এটি সংযোগটি ছাড়তে পারে না
অ্যান্টনি রাসেল

আপনার ncসংস্করণ কি? পরীক্ষা করতে: nc -hপ্রথম লাইন।

হ্যাঁ এটি বেশ পুরানো। লিনাক্সের একটি পুরানো চিত্র on আমি এটিকে আপডেট করব এবং এটিকে আবার যেতে দেব
অ্যান্টনি রাসেল

আমি আমার উত্তর আপডেট।

1
যখন সমস্ত প্যাকেটগুলি জুড়ে না আসে, অপারেটিং সিস্টেম এটি সনাক্ত করে এবং অ্যাপ্লিকেশন বিবেচনা না করে এগুলি পুনঃপ্রেরণ করবে (বা যদি এখনও এটি ব্যর্থ হয় তবে অ্যাপ্লিকেশন সময়সীমা ত্রুটি পাবে)। নির্ভরযোগ্য ডেলিভারি হ'ল ওসি কার্নেল দ্বারা সরবরাহিত টিসিপি প্রোটোকলের উদ্দেশ্য, যা এনসি ব্যবহার করে। আপনি ইউডিপি প্রোটোকলকে অনুরোধ করতে পারেন যা এনসি-ইউ ব্যবহার করে এটি করে না এটি কিন্তু এটি নয়।
জুরাজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.