Linux系统中用TFTP进行文件传输_第1页
Linux系统中用TFTP进行文件传输_第2页
Linux系统中用TFTP进行文件传输_第3页
Linux系统中用TFTP进行文件传输_第4页
Linux系统中用TFTP进行文件传输_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、使用 TFTP 进行文件传输(系统版本:Ubuntu10.10 或以上)在嵌入式系统开发中,经常需要从主机上传送映像、文件等到目标机上。实现的方法有很多。如 tftp,scp 等。TFTP(TrivialFileTransferProtocol)是用来下载远程文件的最简单的网络协议,它基于UDP 协议而实现。一、TFTP的建立嵌入式 linux 的 tftp 开发环境包括两个方面:一是 linux 服务器端的 tftp-server 支持,二是嵌入式目标系统的 tftp-client 支持。 因为 u-boot 本身内置支持 tftp-client,所以嵌入式目标系统端就不用配置了。我们要做的

2、是在服务器端(即主机)上安装 TFTP 服务,并且正确地配置 TFTP 服务的路径和参数。下面我尝试了两种搭建 TFTP 的方法,都实测成功。1、安装 tftp 所需软件包:tftp 有好几种版本, 其中 tftp 和 tftpd 是最经典、 最常用的。 还有增强版, 如 atftp 和 atftpd、 tftp-hpa和 tftpd-hpa 等。所以配置 TFTP 的方法也不唯一。传统方法(xinetd):sudoapt-getinstalltftpsudoapt-getinstalltftpdsudoapt-getinstallxinetdtftp 是客户端,作用是从别人的 TFTP 服务

3、器端上传/下载东西。tftpd 是服务端,字母 d 代表 daemon,作用是为别人提供 TFTP 服务,供别人上传/下载东西。xinetd 是 inetd 的扩展。inetd 服务器是一个专门管理入网连接的网络后台程序,xinetd现在已经取代 inetd,它一个守护进程,用于处理对各种服务的请求。tftp 是要用 inetd 来控制的。另一种更简单的方法:tftp-hpasudoapt-getinstalltftp-hpasudoapt-getinstalltftpd-hpatftp-hpa 与 tftp 作用相当,但两者是冲突的,不能同时安装。tftpd-hpa 与 tftpd 的关系同

4、理。这种方法下,不需要 inetd 服务就可以。网上也有人同时装了 xinetd,不仅需要配置,似乎还容易出问题。2、创建 TFTP 目录首先需要建立一个 TFTP 目录,以供上传和下载。当然也可以使用现有的目录。然后需要设定该目录的权限,决定是否能够下载和上传文件。对于日常使用,我们一般就将其权限设置为最高,为所有用户组都添加所有权限(读+写+执行=4+2+1=7):sudomkdir/home/tftpbootcd/homesudochmod777tftpbootR我们的 TFTP 目录为/home/example/tftp,其权限已经是最高。3、修改配置文件对于 xinetd 方法,要在

5、/etc/xinetd.d/下,修改配置文件 tftp。如果是第一次使用,没有这个文件,需要自己创建一个空文件。可以利用 touch 指令:cd/etc/xinetd.dtouchtftpsudogedittftp在打开的文件中输入以下内容:servicetftpsocket_type=dgramprotocol=udpwait=yesuser=rootserver=/usr/sbin/in.tftpdserver_args=-s/home/tftpbootdisable=noper_source=11cps=1002flags=IPv4)socket_type:网络套接字类型,流或者数据包p

6、rotocol:IP 协议,通常是 TCP 或者 UDPuser:运行进程的用户 ID,当前用户或 rootserver:执行的完整路径server_args:传递给 server 的变量或值。前面的-s 代表 tftp 参数,后面/home/tftpboot 是 TFTP 的根目录,可以根据自己实际情况来修改地址,如/home/example/tftp。对于 tftp-hpa 方法,不需要装 inetd 就能使用,只要修改 tftpd-hpa 相应的配置文件就可以。sudogedit/etc/default/tftpd-hpa原始的内容如下:-/etc/default/tftpd-hpaTF

7、TP_USERNAME=tftpTFTP_DIRECTORY=/var/lib/tftpbootTFTP_ADDRESS=:69”TFTP_OPTIONS=-secure”我将其修改为:-/etc/default/tftpd-hpaTFTP_USERNAME=donghai”TFTP_DIRECTORY=/home/tftpboot”TFTP_ADDRESS=:69”TFTP_OPTIONS=-l-c-s”说明:TFTP_USERNAME 必须改为当前的用户名,或者 root;TFTP_DIRECTOR 丫我们设定的 TFTP 艮目录;TFTP_OPTIONSTFT

8、P 启动参数。意义如下:- l:以 standalone/listen 模式启动 TFTP 服务,而不是从 inetd 启动。(这里也表明,再像前面一样装 xinetd,其实是多此一举)- c:可创建新文件。默认情况下,TFTP 只允许覆盖原有文件,不能创建新文件。- s:改变 TFTP 启动的根目录。加了-s 后,客户端使用 TFTP 时,不再需要输入指定目录,填写文件的完整路径,而是使用配置文件中写好的目录。这样也可以增加安全性。我一开始没有注意 TFTP_USERNAME一项,随便取了一个名字,一直没有成功,后来改用自己的用户名,才测试成功。4、重新启动服务如果用 xinetd 法,修改

9、好 tftp 的配置文件后,需要重新启动一下 xinetd。每次修改完配置文件后,都需要重新启动该服务:sudo/etc/init.d/xinetdrestart如果用 tftp-hpa 法,要重启 tftpd-hpa 服务:sudoservicetftpd-hparestart如果显示如下,说明配置正确:tftpd-hpastart/running,process2290之前我没有把 TFTPUSERNAM 骇为用户名,而是随便取了一个,则会提示如下:tftpd-hpastart/running对比发现,这里并没有启动进程,因为配置中 TFTP_USERNAM 不正确,也就没有成功开启 TF

10、TF5、确认 tftp 服务是否已经开启下面确认 tftp 服务是否开启(基于 tftp-hpa 方法)。查看 tftp 相关进程可以用以下指令:psaux|greptftp弹出以下信息root22900.00.02364120?Ss19:450:00/usr/sbin/in.tftpd-listen-userdonghai-address:69-l-c-s/home/tftpboot可以看到,/usr/sbin/in.tftpd 已经启动,说明 TFTP 服务已经开启了,进程号正是2290。-listen 对应配置文件中的参数-l-userdonghai 就是配置文件中的 TF

11、TP_USERNAME/home/tftpboot 是配置文件中的 TFTP_DIRECTORY另一种方法:netstat-a|greptftp如果看到如下提示,说明 TFTP 服务开启了。udp00*:tftp*:*二、TFTP的使用1、连接本机连接本机有三种方法,一是输入真实的 IP 地址,可以用 ifconfig 查得;二是用 localhost来代表本机;三是使用地址 ,这个 IP 地址始终代表本机的 IP。先在 TFTP 目录下新建一个文件 a,在里面随便写一些内容,然后修改其权限为 777。接着,输入以下指令的任意一条,进入 TFTP#令行。tftp192.168

12、.1.201(自己设定的 IP)tftplocalhosttftpTFTP 命令行的基本指令:put:将文件上传到 TFTP 目录get:取得 TFTP 目录上的文件quit/q:退出 TFTP因为 TFTP 服务将某一设定的目录视为根目录,因此不需要打出完整的路径。既然该目录下已经有一个文件 a,我们就下面输入指令:tftpgetaReceived5bytesin0.0secondstftpputaSent5bytesin0.0seconds这样就传输成功了。在方法 1 中,传输成功后会有时间的提示;而在方法 2 中,如果没有任何提示,则说明传输成功。下面看看当配置参数和文

13、件权限改变时,会出现什么现象。我列举了一些常见问题:tftpgetaTransfertimedout.原因:tftpd 服务没有启动。需要注意的是,必须使 TFTP 的用户名和当前的系统的用户名一致,否则就无法成功启动 tftpd 服务。tftpgetapermissiondenied原因:操作者权限不够,比如当前的目录是/etc,不能随便 get 文件下来。需要提升权限。切换到 root 账户,或者直接执行 sudotftp。tftpputt1tftp:t1:Nosuchfileordirectory原因:当前目录下没有 t1 文件tftpgetdErrorcode1:Filenotfoun

14、d原因:TFTP 根目录下没有该文件Errorcode2:Onlyabsolutefilenamesallowed原因:TFTP 启动配置参数没有-s,或者在 DIRECTOR 冲没有填写目录以下针对 xinetd 方法:tftpputaErrorcode2:Accessviolation原因:1TFTP 启动配置中无-c,TFTP 目录没有同名文件2TFTP 启动配置中无-c,TFTP 目录有同名文件,但无写权限解决:chmod777a以下针对 tftp-hpa 方法:tftpputbErrorcode1:Filenotfound原因:启动配置参数无-c,根目录下无同名文件(注意和前面情况的

15、区别,不是当前目录下没有 b 文件,而是 TFTP 目录下找不到同名文件b)tftpputbErrorcode2:Filemusthaveglobalwritepermissions原因:根目录下有同名文件,该文件无写权限(启动配置参数有无-c 都这样)经测试,在 tftp-hpa 方法下,下列情况可以 put 成功:启动配置参数无-c,根目录下有同名文件,有写权限启动配置参数有-c,根目录下无同名文件启动配置参数有-c,根目录下有同名文件,有写权限在 xinetd 方法下,我?各 server_args=-s/home/tftpboot 改为 server_args=-s/home/tftp

16、boot-c 或server_args=-c-s/home/tftpboot试图增加-c 参数,但重启 xinetd 后,却发现 tftp 基本的下载和上传都不行了。因此在 xinetd 方法下,如需上传,应该让 TFTP 目录下有一个同名文件(开 w 权限),尚未找到直接上传文件的方法。2、连接实验箱实验箱操作系统中的 TFTP 服务已经装好,是在 BusyBoxv1.12.0 中的。它的用法与本机的略有区别,但原理是一样的。基本参数:- g:get,获取文件- p:put,长传文件- lFILE 本地的文彳名为 FILE- rFILE 远程的文彳名为 FILE实验箱的 IP 地址为 192.16

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论