एक ssh सत्र के अंदर scp का उपयोग किए बिना किसी फ़ाइल की प्रतिलिपि कैसे करें?


55

मैंने ssh के साथ एक सिस्टम पर लॉग इन किया है और दोनों सिस्टम पर कोई scp मौजूद नहीं है। Scp प्रोग्राम का उपयोग किए बिना किसी फाइल को कॉपी कैसे करें।


क्या netcat (nc) दोनों प्रणालियों पर मौजूद है? यदि ऐसा है, तो टीसीपी पोर्ट को सुरंग के लिए अपने ssh सत्र का उपयोग करें और उस पोर्ट पर nc का उपयोग करें।

क्या आपके पास है rsync?
slhck

3
आप यह भी कर सकते हैं:ssh user@remotehost cat /path/to/remote/file > /path/to/local/file
n। 'सर्वनाम' मी।

@nm कोट्स की आवश्यकता (मेरे लिए, ubuntu सर्वर)
इवान ब्लैक

@nm मेरे लिए काम नहीं करता है - फ़ाइल दूषित है (मुझे लगता है कि लॉगिन संदेश इसे तोड़ता है)।
मोननेफ

जवाबों:


94

एक फ़ाइल भेजने के लिए:

cat file | ssh ajw@dogmatix "cat > remote"

या:

ssh ajw@dogmatix "cat > remote" < file

एक फ़ाइल प्राप्त करने के लिए:

ssh ajw@dogmatix "cat remote" > copy

20
@ भीग यह सच नहीं है। cd /tmp; cat /bin/bash > test; chmod a+x test; diff test /bin/bash; ./testसब ठीक काम करता है। बाइनरी फ़ाइलों के बारे में स्वाभाविक रूप से "जादू" कुछ भी नहीं है। मेरे उदाहरण में दोनों फाइलों की तुलना समान है और एक ही चेकसम है। यह सच है कि टर्मिनल विंडो से कॉपी और पेस्ट करना कंट्रोल सीक्वेंस और अनरिजर्व्ड कैरेक्टर जैसी चीजों के कारण काम नहीं करेगा, लेकिन इस तरह से पाइप का इस्तेमाल करना कभी टर्मिनल के पास नहीं जाता।
फ्लेक्सो सेप

@ फ़्लेक्सो मुझे कुछ इस तरह की आवश्यकता है, एकमात्र अपवाद है, मुझे एक फ़ोल्डर से सभी jpg में पाइप करने की आवश्यकता है। कैसे / भंडारण / sdcard1 / * jpg के माध्यम से और >एक ही नाम के साथ फाइल करने के लिए?
जॉर्ज प्रोफेंजा

2
@GeorgeProfenza आपको tarमिश्रण में जोड़ना होगा । tar cvf - /path/*.jpg | ssh foo@bar.com "tar xvf -"या कुछ इसी तरह काम करना चाहिए।
Flexo

ऊपर बता रहे हैं कि ggg और Flexo का एक निहितार्थ यह है कि आप ssh के लिए "-t" विकल्प का उपयोग नहीं कर सकते हैं।
mgg123

1
अच्छा! आप पहली बिल्ली के बजाय pv का भी उपयोग कर सकते हैं ताकि आपको एक प्रोग्रेसबार मिले, जैसेpv file | ssh ajw@dogmatix "cat > remote"
Theolodus

3

इसे इस्तेमाल करे:

cat myfile.txt | ssh me@otherhost 'cat - > myfile.txt' 

2
इसके लिए कोई ज़रूरत नहीं है कि कई बिल्ली सभी को बुलाती हैं
फ्लेक्सो

1

आप xxdकई फ़ाइलों पर कॉपी करने के साथ-साथ उन पर कमांड चलाने और उन्हें निष्पादित करने के लिए कुछ बदसूरत उद्धरण का उपयोग कर सकते हैं:

ssh -t foo@bar.com "
echo $'"$(cat somefile | xxd -ps)"' | xxd -ps -r > "'somefile'"
chmod +x somefile
echo $'"$(cat someotherfile | xxd -ps)"' | xxd -ps -r > "'someotherfile'"
chmod +x someotherfile
./somefile
./someotherfile
"

आह, मेरा जवाब स्पष्ट रूप से बहुत है l33t
Aric

-1

फ़ाइल को रिमोट से पाइप करने के अलावा cat, आप फ़ाइलों को स्थानांतरित करने के लिए कुछ SFTP क्लाइंट का उपयोग करने में भी सक्षम हो सकते हैं।


+1 लेकिन यह ध्यान दिया जाना चाहिए कि ओपी एससीपी से बचने का प्रयास कर रहा है क्योंकि यह सिस्टम पर मौजूद नहीं है। इस अड़चन को देखते हुए यह भी संभावना है कि एक FTP सर्वर को प्राप्त करने वाले छोर पर मौजूद होना चाहिए जो प्रतिलिपि प्रक्रिया को सॉफ़्टवेयर पर निर्भर करता है जो आम तौर पर डिफ़ॉल्ट रूप से वहां होता है।
पॉल सासिक

-1

python3 -m http.serverवांछित फ़ाइल के साथ एक ही निर्देशिका में - उसके बाद आप अपने ब्राउज़र के साथ एक फ़ाइल डाउनलोड curlया कर सकते हैं wget। ध्यान दें कि उस रनिंग कमांड के साथ वर्तमान निर्देशिका से आपकी सभी फाइलें सार्वजनिक रूप से उपलब्ध रहेंगी, जब तक कि आप Ctrl+ दबाएं C

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