Bağlantının diğer ucunda kullanacağınız seri konsol programları¹ uzak tarafa bir dosya göndermenin bir yolunu bulur. Tam olarak nasıl gideceğiniz, uzak sistemde hangi kaynakların bulunduğuna bağlıdır.
Ben Var lrzsz
ya kermit
Uzaktan Yakası'nda
En kolay durum, uzak tarafta lrzsz
veya gibi sağlam bir ikili dosya aktarım programı yüklü olmasıdır kermit
. Bu bugünkünden bir kez daha yaygındı, ancak sisteminizde bunlardan biri hala olabilir.
Yerel tarafta kullandığınız seri konsol programının neredeyse kesinlikle Zmodem veya Kermit yüklemesi yapmanın bir yolu vardır, bu da ihtiyacınız olan her şeyi doğrudan göndermenizi sağlar.
Zmodem durumunda rz
, yerel seri terminalin anlaması gereken özel bir dize göndererek uzaktaki bir sisteme yazın ve dosya seçici iletişim kutusu açmasına neden olun.
Kermit daha basit bir protokoldür, bu nedenle aktarımı manuel olarak başlatmanız gerekir.
İkili Dosya Aktarım Programım Yok, uuencode
/base64
Orada gibi düzgün bir ikili dosya aktarım programı kullanarak çeşitli yararları vardır lrzsz
ya kermit
: vb verimliliği, checksum'la, otomatik yeniden deneme, iptal edildi transferi sürdürülmesi, çoklu dosya transferi, fakat bunlar lüks . Yalnızca bir dosya göndermeniz gerekiyorsa veya dosyaları nadiren gönderiyorsanız, ASCII yüklemelerinden kurtulabilirsiniz.
Çünkü Terminal protokoller bir ikili veri dosyasındaki meydana bayt değerleri birçok yorumlamak, aynı bağlantı üzerinden doğrudan dosya göndermek olamaz; bunu yaparsanız, her iki uçtaki terminal öykünme kodu, bazı verileri yorumlamaya, verileri bozmaya ve muhtemelen terminal işleme kodunu karıştırmaya çalışacaktır .
İkili verileri yerel taraftaki güvenli bir ASCII alt kümesine kodlayıp sonra uzak taraftaki ham ikili verilere dönüştürerek bu sorunu çözersiniz. Bu nedir uuencode
ve base64
programlar sadece küçük algoritma seçimlerinde farklı yapın.
Yerel sistemde dosyayı kodlarsınız: ²
$ uuencode -o sbf.uue some-binary-file.gz some-binary-file.gz
Sonra bu komutu uzaktaki sisteme yazıp dosyayı yerel seri konsolun "ASCII upload" özelliğini kullanarak gönderirsiniz:
$ cat | uudecode
Dosya yükleme işlemi bittiğinde, Ctrl-Cçıkmak için tuşuna basın cat
. Şimdi kodunu çözdüğünüz dosyayı istediğiniz gibi uzak sistemde bulabilirsiniz.
Ama Gönderilecek Çok Dosyam Var ve Yazdırılabilir ASCII Kod Dönüştürme Bir Acı!
Kendinizi daha yüksek bir teknolojiye kadar önyüklemek zor değildir. Uzaktaki sistemin bir C derleyicisi varsa, uzaktaki sisteme lrzsz
kaynak kodun bir kopyasını göndermek için önceki tekniği kullanabilirsiniz . Yerel tarafta:
$ uuencode -o lrzsz.tgz.uue lrzsz-0.12.20.tar.gz lrzsz-0.12.20.tar.gz
Daha sonra uzaktaki sisteme bunu seri konsol programı aracılığıyla yazın:
$ cat | uudecode
^C
$ tar xvf lrzsz-0.12.20.tar.gz
...build lrzsz normally
İlk komutu başlattıktan sonra lrzsz.tgz.uue
, uzak sisteme dosyanın "ASCII yüklemesini" yapın . Boru hattı, kodlanmış verileri kabul eder ve paketini açıp oluşturabileceğiniz bir ikili tarball'a deşifre eder.
Ama Uzak Sistemde C Derleyicim Yok
Hatta uzak sistemde bir derleyici yoksa, şunları yapabilirsiniz çapraz derlemerz
yerel sistemde (ya da herneyse) program ve yukarıdaki tekniği kullanılarak uzaktan sisteme gönderebilir.
Dipnotlar:
minicom , picocom , PuTTY , VanDyke CRT ...
Girdi dosyasının adını bu sürüme uuencode
iki kez, bir kez de girdi verilerinin kaynağını adlandırmanız ve uzak sistemin verileri bir çıktı dosyasına çözerken dosyayı ne çağırması gerektiğini bildirmeniz gerekir. Uzaktaki sistemin çıktı dosyası için farklı bir ada sahip olmasını düşünebilirsiniz.
Yerel sürümünüz uuencode
farklı davranabilir.