Windows 下使用 UUENCODE / UUDECODE 复制粘贴实现与Linux/Unix 服务器二进制文件传递
概述:
当你的Linux/Unix服务器只能手工输入命令的方式与服务器交流;或者只能以vncviewer登陆,可以复制粘贴文本到服务器。如此状态下如何解决二进制文件传递,是个问题。
uuencode和uudecode可以实现该需求。
一、Linux 下安装uuencode和uudecode(Kylin 10 SP2)
1、Linux 下uuencode和uudecodede 的RPM 包名为sharutils-4.15.2-15.ky10.x86_64.rpm,在安装光盘里。
[root@kylin101 soft]# rpm -ivh ./sharutils-4.15.2-15.ky10.x86_64.rpm
warning: ./sharutils-4.15.2-15.ky10.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID 7a486d9f: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:sharutils-4.15.2-15.ky10 ################################# [100%]
/sbin/ldconfig: /usr/lib64/libLLVM-7.so is not a symbolic link
[root@kylin101 soft]# rpm -ivh ./sharutils-help-4.15.2-15.ky10.noarch.rpm
warning: ./sharutils-help-4.15.2-15.ky10.noarch.rpm: Header V3 RSA/SHA1 Signature, key ID 7a486d9f: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:sharutils-help-4.15.2-15.ky10 ################################# [100%]
2、查看安装后 uuencode和uudecode所在路径
[root@kylin101 ~]# rpm -ql sharutils
/usr/bin/shar
/usr/bin/unshar
/usr/bin/uudecode
/usr/bin/uuencode
/usr/lib/.build-id
/usr/lib/.build-id/42
/usr/lib/.build-id/42/2a088c192b24b82edb40c0201d3ba26eff65a7
/usr/lib/.build-id/9e
/usr/lib/.build-id/9e/17db119b67b382ca6581776890a415d7fd5a83
/usr/lib/.build-id/a1
/usr/lib/.build-id/a1/57d19b495e392672d4801f419124cd4277d45a
/usr/lib/.build-id/c0
/usr/lib/.build-id/c0/fc95c8383c04a3c53e952174b89a58980fc8ba
/usr/share/doc/sharutils
/usr/share/doc/sharutils/README
/usr/share/info/sharutils.info.gz
。。。。。
二、Windows下 uuencode和uudecode
源码我已经在DEVc++下编译使用多年。
uuencode.c 源程序下载路径 :
https://download.csdn.net/download/m0_54619218/87135702
uudecode.c 源程序下载路径 :
https://download.csdn.net/download/m0_54619218/87135721
uuencode.exe下载路径:
https://download.csdn.net/download/m0_54619218/87135659
C语言编译而来,独立可执行EXE文件,24k 大小。
用于生成文件的uudecode编码文件。
certutil -hashfile UUENCODE.EXE MD5
MD5 的 UUENCODE.EXE 哈希:
e6835c6460808a0bcbae297fafed5419
CertUtil: -hashfile 命令成功完成。
uudecode.exe下载路径:
https://download.csdn.net/download/m0_54619218/87135668
C语言编译而来,独立可执行EXE文件,32k 大小。
用于解开uuencode编码文件。
certutil -hashfile UUDECODE.EXE MD5
MD5 的 UUDECODE.EXE 哈希:
08d72c308931e560047aec428540c9f5
CertUtil: -hashfile 命令成功完成。
三、Windows 下使用 UUENCODE / UUDECODE 复制粘贴实现与Linux/Unix 服务器二进制文件传递
**本例使用服务器假定能以web形式(cockpit) 和vncserver登陆 **
1、Windows 下传递文件到Linux/Unix
二进制文件用例详细情况:达梦8 Kylin10SP2 下unixODBC 2.3.0 源码包
[https://download.csdn.net/download/m0_54619218/87140456](https://download.csdn.net/download/m0_54619218/87140456)
**达梦8 Kylin10SP2 下unixODBC 2.3.0 源码包使用说明:编译与配置步骤**
# tar -xzvf unixODBC-2.3.0.tar.gz
# ./configure
# make && make install
# odbcinst -j
unixODBC 2.3.0
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
# vi /usr/local/etc/odbc.ini
[dm8]
Description = DM ODBC DSND
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = Dameng123
TCP_PORT =5238
# vi /usr/local/etc/odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
DRIVER = /dm8/bin/libdodbc.so
A、在Windows下unixODBC 2.3.0 uuencode 编码
命令 CMD窗口下执行 UUENCODE.exe unixODBC-2.3.0.tar.gz unixODBC-2.3.0.tar.gz.uu
B、在Windows下复制 unixODBC 2.3.0 uuencde 文本
## 在Notepad++下复制文本
C、在WEB终端窗口创建文件:
vi文件并粘贴
vi unixODBC-2.3.0.tar.gz.uu
D、使用Linux/Unix自带 uudecode 解码文件报错
执行 uudecode unixODBC-2.3.0.tar.gz.uu报错了:
uudecode fatal error:
unixODBC-2.3.0.tar.gz.uu: 没有包含‘end’的行**
虽然unixODBC-2.3.0.tar.gz文件生成,但解压报错。
[root@kylin101 soft]# tar -zxvf unixODBC-2.3.0.tar.gz
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
原因:
windows 的text文本换行为CRLF,Linux/Unix中为LF。
解决方法:
Notepad++中显示所有符号,使用扩展匹配,把CRLF全部替换为LF。
在WEB终端再次复制粘贴文件,没有多余空行了。
E、重新执行 uudecode unixODBC-2.3.0.tar.gz.uu,完成传递
2、Linux/Unix下传递文件到Windows **
二级制文件用例情况:/dm8/dmagent/readme.pdf 详细
达梦8 dmagent的说明文件
A、在WEB终端使用uuencode编码文件
uuencode readme.pdf readme.pdf.uu >readme.pdf.uu
B、复制readme.pdf.uu 文本
碰到问题,web终端每次只能显示千行左右,使用cat -n readme.pdf.uu 显示行号方式 ,每次复制千行。
使用vncserver测试也是如此,每次复制千行,行数多了复制为空。
最终文件复制完毕,使用Notepad++ 块操作删除行号部分。
保存为readme.pdf.uu文件。
C、在Window下使用uudecode解码readme.pdf.uu文件
D:\uutest>UUDECODE.exe readme.pdf.uu
Result decoded in readme.pdf
D:\uutest>dir
驱动器 D 中的卷是 DATA1
卷的序列号是 83C6-8CAA
D:\uutest 的目录
2022-11-24 14:27 <DIR> .
2022-11-24 14:27 <DIR> ..
2018-07-08 20:08 139,264 CommandSCE.ocx
2022-11-23 20:55 2,963 linux_uudecode
2022-11-24 14:27 1,222,787 readme.pdf
2022-11-24 14:27 1,711,943 readme.pdf.uu
2022-11-20 13:42 277,188 sharutils-4.15.2-15.ky10.x86_64.rpm
2022-11-20 13:42 31,904 sharutils-help-4.15.2-15.ky10.noarch.rpm
2022-11-24 14:26 1,804,749 unixODBC-2.3.0.tar.gz
2022-11-24 14:26 2,526,694 unixODBC-2.3.0.tar.gz.uu
2001-07-13 11:58 3,431 UUDECODE.C
2022-11-24 00:29 333,566 UUDECODE.exe
1998-12-08 16:28 2,507 UUENCODE.C
2022-11-24 00:24 332,121 UUENCODE.exe
2022-11-24 09:44 1,803,534 达梦8_kylin10Sp2_测试_unixODBC-2.3.0.tar.gz.zip
13 个文件 10,192,651 字节
2 个目录 219,957,153,792 可用字节
D:\uutest>
D、打开测试文件readme.pdf 正常
四、总结
压缩后在5M一下的文档操作还可以,尤其是类似GIT的project目录比较适合,文件小而且多,压缩后又不大,可做为最佳实践场景。