कनेक्शन के दूसरे छोर पर आपके द्वारा उपयोग किए जाने वाले सीरियल कंसोल प्रोग्रामों में रिमोट साइड में फ़ाइल भेजने का कोई तरीका होगा। आप इसके बारे में बिल्कुल कैसे जाते हैं यह इस बात पर निर्भर करता है कि आपके पास रिमोट सिस्टम पर कौन से संसाधन उपलब्ध हैं।
आई हैव lrzsz
या kermit
रिमोट साइड पर
सबसे आसान मामला यह है कि यदि आपके पास रिमोट बाइनरी फाइल ट्रांसफर प्रोग्राम है जो रिमोट साइड पर lrzsz
या जैसे इंस्टॉल किया गया है kermit
। यह एक बार आज की तुलना में अधिक सामान्य था, लेकिन आपके विशेष सिस्टम में अभी भी इनमें से एक हो सकता है।
सीरियल कंसोल प्रोग्राम जिसका उपयोग आप स्थानीय स्तर पर कर रहे हैं, लगभग निश्चित रूप से एक ज़मोडेम या केर्मिट अपलोड करने का एक तरीका है, जो आपको सीधे आपको जो कुछ भी ज़रूरत है उसे भेजने की अनुमति देता है।
ज़मोडेम के मामले में, बस rz
रिमोट सिस्टम पर टाइप करें, जो एक विशेष स्ट्रिंग भेजता है जिसे स्थानीय सीरियल टर्मिनल को समझना चाहिए, जिससे यह एक फाइल पिकर डायलॉग पॉप अप हो सकता है।
Kermit एक सरल प्रोटोकॉल है, इसलिए आपको उस मामले में मैन्युअल रूप से स्थानांतरण शुरू करना होगा।
मेरे पास बाइनरी फाइल ट्रांसफर प्रोग्राम नहीं है, लेकिन मेरे पास है uuencode
/base64
एक उचित बाइनरी फ़ाइल ट्रांसफर प्रोग्राम जैसे lrzsz
या kermit
: दक्षता, चेकसमिंग, स्वचालित रिट्रीज़, गर्भपात स्थानांतरण पुनरारंभ, कई फ़ाइल स्थानांतरण आदि का उपयोग करने के कई फायदे हैं , लेकिन ये विलासिता हैं । यदि आपको केवल एक फ़ाइल भेजने की आवश्यकता है, या आप शायद ही कभी फ़ाइलें भेज रहे हैं, तो आप ASCII अपलोड के साथ दूर हो सकते हैं।
क्योंकि टर्मिनल प्रोटोकॉल कई बाइट मानों की व्याख्या करते हैं जो एक बाइनरी डेटा फ़ाइल में होते हैं, आप फ़ाइल को सीधे उसी कनेक्शन के माध्यम से नहीं भेज सकते हैं; यदि आप करते हैं, तो दोनों ओर टर्मिनल इम्यूलेशन कोड कुछ डेटा की व्याख्या करने की कोशिश करेंगे, डेटा को दूषित करेंगे और टर्मिनल हैंडलिंग कोड को भी भ्रमित करेंगे।
आप बाइनरी डेटा को स्थानीय पक्ष पर ASCII के एक सुरक्षित सबसेट में एन्कोडिंग करके इसके चारों ओर प्राप्त करते हैं, फिर इसे दूरस्थ तरफ कच्चे बाइनरी डेटा में बदल देते हैं। यह uuencode
और base64
कार्यक्रम केवल मामूली एल्गोरिथ्म विकल्पों में भिन्न होते हैं।
स्थानीय सिस्टम पर, आप फ़ाइल को एनकोड करते हैं: you
$ uuencode -o sbf.uue some-binary-file.gz some-binary-file.gz
फिर आप इस कमांड को रिमोट सिस्टम पर टाइप करते हैं, और स्थानीय सीरियल कंसोल के "ASCII अपलोड" फीचर का उपयोग करके फाइल भेजते हैं:
$ cat | uudecode
जब फ़ाइल अपलोड खत्म हो जाती है, तो Ctrl-Cबाहर निकलने के लिए हिट करें cat
। अब आपके पास रिमोट सिस्टम पर आपकी डिकोड की गई फ़ाइल है, जैसा आप चाहते थे।
लेकिन मेरे पास भेजने के लिए कई फाइलें हैं, और प्रिंट करने योग्य ASCII ट्रांसकोडिंग एक दर्द है!
उच्च स्तर की तकनीक तक अपने आप को बूटस्ट्रैप करना कठिन नहीं है। यदि रिमोट सिस्टम में C कंपाइलर है, तो आप रिमोट सिस्टम को lrzsz
सोर्स कोड की कॉपी भेजने के लिए पूर्व तकनीक का उपयोग कर सकते हैं । स्थानीय पक्ष में:
$ uuencode -o lrzsz.tgz.uue lrzsz-0.12.20.tar.gz lrzsz-0.12.20.tar.gz
फिर रिमोट सिस्टम पर, इसे सीरियल कंसोल प्रोग्राम के माध्यम से टाइप करें:
$ cat | uudecode
^C
$ tar xvf lrzsz-0.12.20.tar.gz
...build lrzsz normally
पहली कमांड शुरू करने के बाद, lrzsz.tgz.uue
रिमोट सिस्टम पर फ़ाइल का "एएससीआईआई अपलोड" करें । पाइपलाइन uuencoded डेटा को स्वीकार करता है और इसे आपके लिए एक बाइनरी टारबॉल में डिकोड करता है, जिसे आप अनपैक और निर्माण कर सकते हैं।
लेकिन मुझे रिमोट सिस्टम पर सी कंपाइलर नहीं है
आप भी दूरस्थ सिस्टम पर एक संकलक की जरूरत नहीं है, तो आप कर सकते हैं पार संकलनrz
स्थानीय सिस्टम पर (या जो भी) कार्यक्रम और इसके बाद के संस्करण तकनीक का उपयोग कर दूरस्थ प्रणाली को भेजें।
फुटनोट:
minicom , picocom , पुट्टी , वेंडाइक सीआरटी ...
आपको uuencode
इनपुट डेटा के स्रोत को नाम देने के लिए, इनपुट फ़ाइल का नाम दो बार देना होगा, और फिर से यह घोषित करना होगा कि रिमोट सिस्टम को फाइल को कॉल करना चाहिए जब वह डेटा को आउटपुट फाइल में डिकोड करता है। आप चाहते हैं कि रिमोट सिस्टम अपनी आउटपुट फ़ाइल के लिए एक अलग नाम रख सके।
आपका स्थानीय संस्करण uuencode
भिन्न व्यवहार कर सकता है।