使用次要文件传输协议(TFTP)在主机间传输文件。
{tftp | utftp} { -g | -o | -p | -r | -w } LocalName HostPort RemoteName [ netascii | image]
/usr/bin/tftp 与 utftp 命令使用次要文件传输协议(TFTP)在主机间传输文件。由于 TFTP 是最小的文件传输协议,tftp 与 utftp 命令不提供 ftp 命令的所有功能。例如,tftp 与 utftp 命令没有提供列出远程文件或更改远程主机目录的能力,仅授予远程 TFTP 服务器有限的文件访问权限。utftp 命令是 tftp命令 的一种格式,用于管道中。
远程主机必须有一个由它的 inetd 守护进程启动的 tftpd 守护进程和一个定义为限制 tftpd 守护进程访问的帐户。使用由 tftpd 命令定义的过程来设置 TFTP 环境和无人帐户。
注:当主机正在以安全方式运行时,tftp 与 utftp 命令不可用。
如果有不适当(将来的)块号的块到达,tftp 命令忽略对任一已发送块的重复应答,发送一个错误包并且退出。如果已经接收重复数据块并发送了一个错误包并且退出,同样会忽略那些重复数据块。
用户可选择最大超时值,但是第一个块的初始超时值被硬性指定。用户不能选择服务器的最大超时值;服务器在 6 次最大超时值为 64 秒的重试之后超时。
搜索 /etc/tftpaccess.ctl 文件以查找那些以 allow: 或 deny: 开头的行。其余行被忽略。如果文件不存在,也允许访问。可以访问所允许的目录和文件,不能访问被拒绝的目录。例如,可以允许访问/usr 目录而 /usr/ucb 目录则会被拒绝。这意味着在 /usr 目录中的任一目录或文件(除了 /usr/ucb 目录)都可被访问。/etc/tftpaccess.ctl 文件中的项必须为绝对路径名。
/etc/tftpaccess.ctl 文件应为 root 用户只写而所有 groups 和 others 可读(即为有许可权 644 的 root 用户所拥有)可读。用户 nobody 必须能够读取 /etc/tftpaccess.ctl 文件。否则,tftpd 守护进程就不能识别文件是否存在并允许访问整个系统。有关更多信息,请参阅样本 tftpaccess.ctl 文件,它驻留在 /usr/samples/tcpip 目录。
搜索算法假设在 tftp 命令中所用的本地路径名是绝对路径名。该算法搜索 /etc/tftpaccess.ctl 文件以查找 allow:/。它使用每一个部分路径名来重复搜索所允许的路径名,部分路径名通过从文件路径名添加下一个组件构造而成。匹配的最长路径名也是被允许的一种。然后对于拒绝路径名进行同样操作,从匹配最长允许路径名开始。
例如,如果文件路径名为 /a/b/c 而 /etc/tftpaccess.ctl 文件包含 allow:/a/b 和 deny:/a,将会产生一个允许匹配(/a/b)并且不产生以 /a/b 开始的拒绝匹配,并允许访问。
如果 /etc/tftpaccess.ctl 文件包含 allow:/a 和 deny:/a/b,将会产生一个允许匹配(/a)和一个以 /a(/a/b)开始的拒绝匹配,并拒绝访问。 如果 /etc/tftpaccess.ctl 文件既包含 allow:/a/b 也包含deny:/a/b,将会拒绝访问,因为允许的路径名被首先搜索。
注:有关 Xstations、无盘客户机和受限项的更多信息与示例配置可在 /usr/samples/tcpip/tftpaccess.ctl 文件中找到。
tftp 与 utftp 命令有两种格式:交互格式和命令行格式。
在交互格式中,tftp 与 utftp 命令单独发出或与指定在此次会话中用于文件传输的缺省主机的 Host 参数一起执行。如果进行选择,也可以用 Port 参数来指定 tftp 或 utftp 连接要使用的端口,例如在 /etc/services 文件中为 mail 指定的端口。当您输入这些命令中的任一个的交互格式时,会显示 tftp> 提示。
当给一个远程主机传输数据时,被传输的数据放在由 RemoteName 参数指定的目录中。远程主机名必须是一个完整指定的文件名,远程文件必须存在并已设置其它用户的写许可权。tftp 命令尝试将数据写入指定文件。但是,如果远程 TFTP 服务器没有适当权限写远程文件,或该文件已不存在,传输就失败。这可使用 tftpd 守护进程进行重设。
tftp 与 utftp 命令的命令行格式是等价的,除了 utftp 命令不覆盖本地文件以外。tftp 命令会覆盖文件,但在执行前会提示用户。因为不是交互式的,utftp 命令的命令行格式在管道中比 tftp 命令更有用。在命令行格式中,任一命令的所有参数都要在命令行进行指定,不会显示提示。
tftp 与 utftp 子命令可在其交互格式或命令行格式中输入。
一旦显示 tftp> 提示,会发出以下子命令:
? [Subcommand] | 显示帮助信息。如果指定了一个 Subcommand 参数,则仅显示关于该子命令的信息。 |
ascii | mode ascii 子命令的同义词。 |
binary | mode binary 子命令的同义词。该子命令用在交互方式中。image 子命令完成与 mode binary 子命令同样的功能,但用于命令行。 |
connect Host [Port] | 为文件传输设置远程主机,同时也有选择地设置端口。由于 TFTP 协议不会维护传输间的连接,因此 connect 子命令不会创建到指定主机的连接,但会为传输操作而将它存储起来。因为远程主机可被指定为 get 或 put 子命令(可对以前指定的任何主机进行重设)的一部分,connect 子命令就不需要了。 |
get RemoteFile [LocalFile]
get RemoteFile RemoteFile RemoteFile [RemoteFile . . . ] | |
从远程主机获取一个或一组文件到本地主机。每一个 RemoteFile 参数可用以下两种方法之一进行指定: | |
mode Type | 将传输方式的类型(Type)设置为 ascii 或 binary。缺省传输方式为 ascii。 |
put LocalFile [RemoteFile]
put LocalFile LocalFile LocalFile [LocalFile . . . ] RemoteDirectory | |
将一个或一组文件从本地主机放到远程主机。
RemoteDirectory 与 RemoteFile 参数可用以下两种方法之一进行指定:
在任一情况下,远程文件或目录名必须是完整指定的路径名,即使本地和远程目录同名。如果指定一个远程目录,远程主机就被假定为 UNIX 机器。put 子命令的缺省值为 write-replace,但可在 tftpd 守护进程中添加一个选项以允许 write-create。 |
|
quit | 退出 tftp 会话。文件结束符按键顺序也退出程序。 |
status | 显示 tftp 程序的当前状态,例如包括:当前传输方式(ascii 或 binary)、连接状态与超时值。 |
timeout Value | 将总的传输超时设置为由 Value 参数指定的秒数。 |
trace | 打开或关闭数据包跟踪。 |
verbose | 打开或关闭在文件传输期间显示额外信息的详细方式。 |
在此格式中,如果 Action 标志为:
对于以下文件传输方式来说,RemoteName 参数是对其它用户设置了写许可权的文件的名称。注意,如果 RemoteName 参数包含 shell 特殊字符,则该参数必须用双引号(" ")括起来。
传输方式为以下之一:
netascii | 将数据作为 8 位传输字节的 7 位 ASCII 字符来传输。此为缺省设置。 |
image | 将数据作为 8 位传输字节的 8 位二进制数据字节来传输,而不用转换。当在两个主机间进行传输时,image 传输比 netascii 传输更有效。当从工作站传输 ASCII 文件到不同类型的主机时,推荐使用 netascii 传输。 |
以下示例区分了 tftp 命令的交互格式与命令行格式之间的差别:
要输入 tftp 命令、检查当前状态、连接到远程主机以及将一个文件从远程主机传输到本地主机,请输入:
tftp
显示 tftp> 提示。紧跟该 提示输入 status子命令:
在屏幕上显示类似于以下的消息:
Not connected. Mode: netascii Verbose: off Tracing: Off Max-timeout: 25 secondstftp> _
在 tftp> 提示后,请输入 connect 子命令以及想要连接到的远程系统名称:
将显示 tftp> 提示,作为你已连接到host1 上的指示。紧跟 tftp> 提示,请输入 get 子命令来将文件 update 从远程主机传输到本地主机。
远程主机上的 /home/alice 目录必须为其它用户设置读许可权。从 host1 上将 /home/alice/update 文件传输到本地系统上的 update 文件。此例中,用户连接到 host1,从 host1 上将 update 文件传输到本地主机。
192.100.13.3 nameserver 192.100.13.3 host2 192.100.13.5 host1 192.100.13.7 host3 192.100.13.3 timeserver Received 128 bytes in 0.4 seconds $ _
此例中,从远程主机 host3 复制 /etc/hosts 文件并将输出重定向到本地主机的标准输出。
Sent 94146 bytes in 6.7 seconds
此例中,/home/jeanne/test 文件被发送到远程主机 host2 上的 /tmp 目录。
Sent 309295 bytes in 15 seconds
此例中,从当前目录将二进制文件 core 发送到远程主机 host3 上的 /tmp目录。
/etc/tftpaccess.ctl | 允许或拒绝对文件和目录进行访问。 |
ftpd 守护进程、inetd 守护进程、tftpd 守护进程、syslogd 守护进程。
《AIX 5L V5.2 系统用户指南:通信与网络》中的『使用 tftp 命令复制文件』。
《AIX 5L V5.2 系统用户指南:通信与网络》中的『网络概述』。