📄 jkl.txt
字号:
bin
mput *.doc
machine ncr3550 login jdx password jdx1jdx
在此配置文件中,我们针对两个主机定义了自动登录,对于tirc主机,这时我和本书的另一位作者交换书稿的方式:定义了init宏用于自动获取他的书稿,定义了宏putbook用于传送我的书稿。获取书稿是自动的,传送书稿得手工执行宏putbook。对于ncr3550主机,只是自动登录。定义了此文件后,要交换书稿就只要执行下面的命令就行了:
$ ftp tirc.dcs.tsinghua.edu.cn
ftp>$putbook
ftp>quit
3.7 远程主机间文件传送
我们前面介绍了ftp命令都是用于本地主机和远程主机间的文件传送,其实,ftp程序还提供了两个远程主机之间文件传送的能力,这要使用第二连接。
ftp程序用于第二连接的子命令是proxy,一般来说,第一个由proxy启动的子命令是open,它建立第二连接。在第二连接建立完成之后,我们可以使用get和put等命令传输文件。值得注意的是,在第二连接上执行get和mget子命令将主连接主机上的文件拷贝到第二连接的主机,而put、mput和append则将第二连接主机上的文件拷贝到主连接主机上。也就是说,使用了第二连接后,第二连接的远程主机扮演了本地主机的角色。下面我们以一个实际的例子来说明远程主机间文件传送。
$ ftp ncr3550
Connected to ncr3550.cic.tsinghua.edu.cn.
220 ncr3550 FTP server (Version 1.18 Oct 08 1993) ready.
331 Password required for jdx.
230 User jdx logged in.
ftp> proxy open tirc.dcs.tsinghua.edu.cn
Connected to tirc.dcs.tsinghua.edu.cn.
220 tirc FTP server (Version wu-2.4(1) Wed May 10 21:00:32 CDT 1995) ready.
Name (tirc.dcs.tsinghua.edu.cn:jdx):
331 Password required for jdx.
Password:
230 User jdx logged in.
ftp> proxy get file1.txt file1
tirc.dcs.tsinghua.edu.cn:227 Entering Passive Mode (166,111,80,16,6,121)
ncr3550.cic.tsinghua.edu.cn:200 PORT command successful.
ncr3550.cic.tsinghua.edu.cn:150 Opening ASCII mode data connection for file1.txt
(81470 bytes).
tirc.dcs.tsinghua.edu.cn:150 Opening ASCII mode data connection for file1.
tirc.dcs.tsinghua.edu.cn:226 Transfer complete.
ncr3550.cic.tsinghua.edu.cn:226 Transfer complete.
local: file1 remote: file1.txt
ftp> proxy put file2.txt file2
tirc.dcs.tsinghua.edu.cn:227 Entering Passive Mode (166,111,80,16,6,131)
ncr3550.cic.tsinghua.edu.cn:200 PORT command successful.
ncr3550.cic.tsinghua.edu.cn:150 Opening ASCII mode data connection for file2.
tirc.dcs.tsinghua.edu.cn:150 Opening ASCII mode data connection for file2.txt (2
8064 bytes).
tirc.dcs.tsinghua.edu.cn:226 Transfer complete.
ncr3550.cic.tsinghua.edu.cn:226 Transfer complete.
local: file2.txt remote: file2
ftp> proxy close
tirc.dcs.tsinghua.edu.cn:221 Goodbye.
ftp>
首先用ftp命令和主机ncr3550建立主连接,然后用proxy open命令和主机tirc建立第二连接。使用proxy ?可以查看到在第二连接上执行的ftp子命令。我们可以使用dir和proxy dir分别查看主连接主机ncr3550和第二连接主机tirc上的文件,然后用proxy get命令将ncr3550上的文件file1.txt取到tirc主机并以file1存盘,用proxy put命令将tirc上的文件file2.txt取到ncr3550主机并以file2存盘。现在再用dir和proxy dir查看,我们发现ncr3550主机上多了文件file2,tirc主机上多了文件file1,这正是我们要做的。最后用proxy close关闭第二连接,它并不影响主连接,这时用户还可以在本地主机和ncr3550之间进行正常的文件传送。
3.8 使用mail请求匿名FTP服务
有经验的ftp用户都知道,在从国外的FTP服务器上下载文件是一个极需耐心的过程,有时候,开列一个长格式的大型目录就要花费数十分钟。如果能用mail请求匿名FTP服务,对于网络不畅的用户来说,实在是一件快意的事。所幸的是,Internet上就有这样热心的专家──Paul Uixie,当他还在DEC网络系统实验室(1989-1993)时,他编写了一个叫ftpmail 的程序。自从有了ftpmail程序,你就可以使用mail请求匿名FTP服务了。
为了使用ftpmail程序,只需向一个ftpmail服务器发送一个电子函件。在Internet上有多个ftpmail服务器,最常用的一个是ftpmail的发源地ftpmail@decwrl.dec.com。在给ftpmail服务器的请求邮件中,主题行被忽略,但你可以使用它来说明该ftpmail请求,因为ftpmail向用户邮寄回的邮件使用相同的主题行,这在一次发出多个ftpmail请求邮件时特别有用,它可以帮助你识别寄回的邮件是哪个请求邮件的结果,请求邮件的正文用来书写匿名FTP命令,一个命令一行,它用来引导匿名FTP会话的进行。
在使用ftpmail之前,我们可以向ftpmail@decwrl.dec.com发出一个邮件请求ftpmail帮助信息,这只要简单地发送这样一个邮件:
$ mail ftpmail@decwrl.dec.com
Subject: Request for help
help
CTRL-D
EOT
$
不用等多长时间,你就会收到一个邮件,该邮件介绍了ftpmail程序支持的命令、注意事项及几个使用示例。我们可以看到,现在的ftpmail程序支持下面几类命令:
1. 指定邮件地址
reply 电子函件地址 由于邮件头部地址经常出现错误,使用reply命令显示指定回复邮件的地址比较可靠。
2. 连接到主机
connect [主机名 [用户 [口令]]] 连接到指定的FTP服务器,默认为匿名FTP服务器 gatekeeper.dec.com。
3. 设置选项
ascii 要邮寄的文件为文本文件。
binary 要邮寄的文件为二进制文件。
compress 使用Lempel-Zic编码压缩二进制文件。
compact 使用Huffman编码压缩二进制文件。
uuencode 使用uuencode将二进制文件转换为文本文件。
btoa 使用btoa将二进制文件转换为文本文件。
chunksize 长度 设置文件分片大小。对于大型文件ftpmail将其分解为多个文件寄回,chunksize用来设置分片的大小、默认长度为64000字节。
4. 指定目录
chdir 目录 改变当前工作目录为指定目录。
5. 请求文件
get文件 请求ftpmail,邮寄指定文件的拷贝,在一个ftpmail会话中,最多只能有10个get命令。
6. 请求信息
help 请求邮寄ftpmail的使用说明。
dir[目录] 请求邮件长格式目录清单。
ls [目录] 请求邮件短格式目录清单。
index匹配项 在FTP服务器的索引中查找匹配的信息。
7. 结束会话
quit 终止会话,忽略后面的报文,这在你的邮件使用了签名文件.signature时有用。
从上面的命令可以看出,ftpmail的用法是很简单的,比如说,在gatekeeper.dec.com主机的/pub/mail/user-agents/misc/unsplit目录下有一些合成邮件的工具,我们可以发送一个邮件来查看它的下面有哪些文件:
$ mail ftpmail@decwrl.dec.com
Subject: list of unsplitters
reply jdx@cic.tsinghua.edu.cn
connect
ascii
chdir /pub/mail/user-agents/misc/unsplit
dir *
CTRL-D
EOT
$
之后,我们将先后收到三个邮件:第一个是确认请求邮件,其主题行类似于Subject: your ftpmail request has been received [list of unsplitters],它确认收到了请求邮件,并告诉你请求邮件在请求队列中所处的位置,以及一些其它注意事项;第二个邮件是请求内容邮件,如上面的请求邮件的请求内容邮件为:
Date: Tue, 11 Jun 96 10:08:06 -0700
From: "ftpmail service on ftpmail.ramona.vix.com" <nobody@pa.dec.com>
To: jdx@cic.tsinghua.edu.cn
Subject: part 001 of dir * (/pub/mail/user-agents/misc/unsplit@gatekeeper.dec.com) [list of unsplitters] (ascii, last)
X-Complaints-To: ftpmail-admin@ftpmail.ramona.vix.com
X-Service-Address: ftpmail@ftpmail.ramona.vix.com
X-Job-Number: 834315027.04715
Precedence: bulk
Reply-To: <nobody@ftpmail.ramona.vix.com>
X-UIDL: 834543808.002
lrwxrwxrwx 1 0 0 40 Apr 14 1995 00README-Legal-Rules-Regs -> ../../../../../00README-Legal-Rules-Regs
-r--r--r-- 1 0 0 3251 Aug 8 1991 extract.dcl
-r--r--r-- 1 0 0 3274 Aug 13 1991 shuttle.ksh
-r--r--r-- 1 0 0 5124 Aug 12 1991 uucombine.pl
-r--r--r-- 1 0 0 5841 Jan 2 1992 uunconc.c
-r--r--r-- 1 0 0 4956 Aug 8 1991 uustrip.shar
第三个邮件是请求结果邮件,它报告请求的结果,其主题行类似于Subject: results of ftpmail request 834315027.04715 [list of unsplitters],此邮件向你报告你的请求邮件的每一步执行结果。
这样,我们就知道我们的请求的结果,并且得到了该目录的文件列表。然后,我们用下面的邮件将其中一个程序uunconc.c取回来:
$ mail ftpmail@decwrl.dec.com
Subject: get uunconc.c
reply jdx@cic.tsinghua.edu.cn
connect
ascii
chdir /pub/mail/user-agents/misc/unsplit
get uunconc.c
CTRL-D
EOT
$
同样,我们将收到三个邮件:确认邮件、内容邮件和结果邮件。我们将内容邮件的正文写到uunconc.c文件中(Unix mail用~w uunconc.c子命令),然后将其编译成可执行程序uunconc。以后,我们就可以使用uunconc程序来合并我们使用email请求的大型文件了。
在Internet上,邮件服务器都很繁忙,下面我们介绍几个ftpmail服务器的地址:
法国
ftpmail@grasp.insa_lyon.fr
134.214.100.25
德国
bitftp@vm.gmd.de
192.88.97.13
爱尔兰
ftpmail@ieunet.ie
192.111.39 .1
美国:加利福尼亚
ftpmail@decwrl.dec.com
16.1.0.1
美国:新泽西
bitftp@pucc.princeton.edu
128.112.129.99
3.9 ftp常用子命令列表
在前面几节中,我们介绍了文件传送程序ftp的使用方法,有了这些知识,用户就可以进行日常的文件传送了。下面,我们将以列表的方式,较为全面地介绍ftp程序的常用子命令。用户可以使用这些命令,更为方便地完成自己的工作。
表3.1 ftp程序常用子命令列表
命 令
功 能
! [Command [Parameters]]
在本地主机上执行一个本地操作系统命令
$Macro [Parameters]
执行先前用macdef子命令定义的宏
? [Subcommand]
显示指定子命令的帮助信息。没有参数则显示所有ftp子命令列表。同help
append LocalFile [RemoteFile]
将一个本地文件追加到一个远程文件后,如果远程文件名未指定,则用本地文件名代替
ascii
设置传输文件的类型为文本文件,同type ascii
bell
在每一个文件传送完成时响铃一声
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -