โปรแกรมคอนโซลแบบอนุกรม¹คุณจะใช้ที่ปลายอีกด้านหนึ่งของการเชื่อมต่อจะมีวิธีการส่งไฟล์ไปยังด้านระยะไกล วิธีการที่คุณไปเกี่ยวกับมันขึ้นอยู่กับทรัพยากรที่คุณมีอยู่ในระบบระยะไกล
ฉันมีlrzsz
หรือkermit
ด้านไกล
กรณีที่ง่ายที่สุดคือถ้าคุณมีโปรแกรมถ่ายโอนไฟล์ไบนารีที่เป็นของแข็งติดตั้งอยู่บนด้านระยะไกลเช่นหรือlrzsz
kermit
นี่เป็นเรื่องธรรมดามากกว่าวันนี้อีกครั้ง แต่ระบบเฉพาะของคุณอาจยังคงมีหนึ่งในนี้
โปรแกรมคอนโซลแบบอนุกรมที่คุณใช้อยู่ในพื้นที่ส่วนใหญ่จะมีวิธีในการอัปโหลด Zmodem หรือ Kermit ซึ่งช่วยให้คุณสามารถส่งสิ่งที่คุณต้องการได้โดยตรง
ในกรณีของ Zmodem เพียงพิมพ์rz
บนระบบรีโมตซึ่งส่งสตริงพิเศษที่เทอร์มินัลอนุกรมท้องถิ่นควรเข้าใจทำให้มันปรากฏขึ้นในกล่องโต้ตอบตัวเลือกไฟล์
มิตเป็นโปรโตคอลที่ง่ายกว่าดังนั้นคุณต้องเริ่มการถ่ายโอนด้วยตนเองในกรณีนั้น
ฉันไม่มีโปรแกรมถ่ายโอนไฟล์ไบนารี แต่ฉันมีuuencode
/base64
มีข้อดีหลายประการในการใช้โปรแกรมการถ่ายโอนไฟล์ไบนารีที่เหมาะสมเหมือนlrzsz
หรือkermit
: ประสิทธิภาพ Checksumming, ลองอัตโนมัติเริ่มต้นใหม่การถ่ายโอนยกเลิกการถ่ายโอนไฟล์หลาย ฯลฯ แต่เหล่านี้เป็นสินค้าฟุ่มเฟือย หากคุณต้องการส่งไฟล์เพียงไฟล์เดียวหรือคุณส่งไฟล์ได้น้อยมากคุณสามารถลบไฟล์ ASCII ได้
เนื่องจากเทอร์มินัลโปรโตคอลแปลค่าไบต์จำนวนมากที่เกิดขึ้นในไฟล์ข้อมูลไบนารีคุณไม่สามารถส่งไฟล์โดยตรงผ่านการเชื่อมต่อเดียวกัน หากคุณทำเช่นนั้นรหัสการจำลองเทอร์มินัลที่ปลายทั้งสองจะพยายามตีความข้อมูลบางส่วนทำให้ข้อมูลเสียหายและมีแนวโน้มที่จะเกิดความสับสนกับรหัสการจัดการเครื่อง
คุณได้รับสิ่งนี้โดยการเข้ารหัสข้อมูลไบนารีลงในเซตย่อยที่ปลอดภัยของ ASCII ที่ด้านโลคัลจากนั้นเปลี่ยนกลับเป็นข้อมูลไบนารีดิบที่ด้านระยะไกล นี่คือสิ่งที่uuencode
และbase64
โปรแกรมทำแตกต่างกันในตัวเลือกอัลกอริทึมเล็กน้อยเท่านั้น
บนระบบโลคัลคุณเข้ารหัสไฟล์: ²
$ uuencode -o sbf.uue some-binary-file.gz some-binary-file.gz
จากนั้นคุณพิมพ์คำสั่งนี้บนระบบรีโมตและส่งไฟล์โดยใช้คุณสมบัติ "ASCII upload" ของคอนโซลอนุกรมในเครื่อง:
$ 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
หลังจากคุณเริ่มคำสั่งแรกแล้วให้ทำการ "ASCII upload" ของlrzsz.tgz.uue
ไฟล์ไปยังระบบรีโมต ไปป์ไลน์ยอมรับข้อมูล uuencoded และถอดรหัสเป็นไบนารี tarball สำหรับคุณซึ่งคุณสามารถแยกและสร้างได้
แต่ฉันไม่มีคอมไพเลอร์ C ในระบบระยะไกล
หากคุณไม่มีคอมไพเลอร์ในระบบรีโมตคุณสามารถคอมไพล์โปรแกรมrz
(หรืออะไรก็ได้) บนระบบโลคัลและส่งไปยังระบบรีโมตโดยใช้เทคนิคด้านบน
เชิงอรรถ:
minicom , picocom , PuTTY , VanDyke CRT ...
คุณต้องตั้งชื่อไฟล์อินพุตให้เป็นuuencode
สองเท่าของรุ่นนี้หนึ่งครั้งเพื่อตั้งชื่อแหล่งที่มาของข้อมูลอินพุตและอีกครั้งเพื่อประกาศสิ่งที่ระบบรีโมตควรเรียกใช้ไฟล์เมื่อมันถอดรหัสข้อมูลไปยังไฟล์เอาต์พุต คุณอาจต้องการให้ระบบรีโมตมีชื่ออื่นสำหรับไฟล์เอาต์พุต
เวอร์ชันในท้องถิ่นของคุณuuencode
อาจทำงานแตกต่างกัน