Netcat के माध्यम से फाइल भेजना


23

मैं एक कंप्यूटर से दूसरे में फ़ाइल भेजने के लिए कुछ इस तरह का उपयोग कर रहा हूं:

फ़ाइल सेवा के लिए (कंप्यूटर A पर):

cat something.zip | nc -l -p 1234

फ़ाइल प्राप्त करने के लिए (कंप्यूटर B पर):

netcat server.ip.here. 1234 > something.zip

मेरा सवाल है ... क्या मैं इसके विपरीत कर सकता हूं? मान लें कि मेरे पास कंप्यूटर B पर फ़ाइल है और मैं इसे A को भेजना चाहता हूं, लेकिन जैसा मैंने ऊपर लिखा था, वैसा नहीं है, लेकिन कंप्यूटर को फ़ाइल (A) प्राप्त करने वाला सर्वर 'सुनना' है और कंप्यूटर से कनेक्ट करना है जो 'फाइल' भेज रहा है ( बी) सर्वर और फ़ाइल भेजने के लिए? क्या यह संभव है? मुझे लगता है कि यह हो सकता है लेकिन मुझे यकीन नहीं है कि यह कैसे करना है।

यदि मेरा उपरोक्त स्पष्टीकरण गड़बड़ हो गया है: मैं सर्वर पर फ़ाइल की सेवा करने के बजाय 'सर्वर' पर फ़ाइल कैसे भेजूं और फिर इसे उससे ले रहा हूं (जैसे मैंने ऊपर किया था)?


नोट: यदि आप उपयोग कर रहे हैं ncक्योंकि scpआप बहुत धीमा है और आपको एन्क्रिप्शन की आवश्यकता नहीं है, तो आप स्विच करना चाह सकते हैं udpcast: superuser.com/questions/692294/…
unhammer

जवाबों:


38

अपने सर्वर पर (ए):

nc -l -p 1234 -q 1> something.zip </ dev / null
आपके "प्रेषक ग्राहक" (B) पर:
cat something.zip | netcat server.ip.here 1234


हाँ, मैंने सोचा था कि मुझे किसी तरह पक्षों को बदलना होगा लेकिन मुझे यकीन नहीं था कि कैसे :)। धन्यवाद, यह काम करता है!
फिल

यह एक प्यारा netcat चाल है।
डेवपैरिलो

2
< /dev/nullभाग क्यों ?
törzsmókus

7
क्योंकि netcat दोनों स्टड को पढ़ता है और एक साथ stdout लिखता है, stdin से नेटवर्क पर कुछ भी पढ़ने और stdout पर नेटवर्क से प्राप्त कुछ भी प्रिंट करता है। </ Dev / null यह सुनिश्चित करता है कि, जब प्राप्त फ़ाइल पूरी हो गई है, तो netcat कंसोल से इनपुट के लिए अनिश्चित काल तक प्रतीक्षा नहीं करता है (जो इसे वैसे भी नहीं पढ़ा जाना चाहिए!) और यह भी सुनिश्चित करता है कि यह ऊपर नहीं जा रहा है! कोई भी इनपुट जो टर्मिनल से उपलब्ध हो सकता है, जैसे कि आप अगले कमांड को टाइप करना चाहते हैं जिसे आप चलाना चाहते हैं।
मार्टिनगुगी

4
यदि आपके पास है pv, तो मैं "सर्वर क्लाइंट" को संचालित करने का सुझाव pv soemthing.zip | ...दूंगा, जो कि पाइप में जा रही फ़ाइल की प्रगति को प्रदर्शित करेगा।
थोरसुमोनर

6

एक नोट के रूप में, यदि आप फ़ाइल अनुमतियों, स्वामित्व और टाइमस्टैम्प को भी संरक्षित करना चाहते हैं, तो हम निर्देशिका और फ़ाइलों के स्थानान्तरण करने के लिए netcat के साथ टार का उपयोग करते हैं।

सिस्टम प्राप्त करने पर:

nc -l -p 12345 -q 1 | tar xz -C /path/to/root/of/tree

सिस्टम भेजने से:

tar czf - ./directory_tree_to_xfer | nc <host name or IP address of receiving system> 12345 

उम्मीद है की वो मदद करदे।


1
उत्तर के अलावा अच्छा है, लेकिन कृपया इसे एक टिप्पणी के रूप में छोड़ दें और एक अलग उत्तर के रूप में नहीं।
agtoever

2
इस उप-बोर्ड पर रेप बिंदुओं की कमी के कारण उपरोक्त टिप्पणी नहीं दी जा सकती है, इसलिए मुझे इसे एक उत्तर के रूप में पेश करना था, हालांकि जाहिर है, आपको अपने स्वयं के उत्तरों पर टिप्पणी करने की अनुमति है।
B.Kaatz

3

कंप्यूटर ए: nc -l -p 1234 > filename.txt

कंप्यूटर बी: nc server.com 1234 < filename.txt

काम भी करना चाहिए;)


0

कंप्यूटर बी पर नेटकैट का एक और उदाहरण शुरू करें। आपने कंप्यूटर ए पर बस वही किया, लेकिन बी से सेवा करें। नए सर्वर को नया पोर्ट दें।


मैं ऐसा ही नहीं करना चाहता, मैं कमांड्स को कुछ और में बदलना चाहता हूं (अगर यह संभव है तो मुझे यकीन नहीं है) ... मेरे प्रश्न में बोल्ड टेक्स्ट देखें। मेरा मतलब है कि मैं बी से सेवा नहीं करना चाहता हूं। मैं चाहता हूं कि ए इनपुट के लिए सुनने वाला सर्वर हो ... और फिर मैं गैर-सुनने वाले बी से फाइल सामग्री को सुनने के लिए भेजना चाहता हूं ए
फिल

कि कैसे netcat काम नहीं करता है।
डेवपैरिलो

1
जैसा कि आप स्वीकार किए गए उत्तर से देख सकते हैं - हाँ, यह है कि netcat भी कैसे काम कर सकता है।
फिल

आप सही हे। मुझे हर दिन कुछ नया सीखना अच्छा लगता है!
डेवपैरिलो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.