ftp[root@ht root]# cat ftpaaa.sh #!/bin/bashhostname=192.168.1.238user=f5password=f5ftp -i -v -n $hostname lcd /tmpcd /tmpmput *byeEND_FTP  注解: 1. -i 当传输多文件时关闭交互式提示 -n 不受.netrc文件的影响。(ftp默认为读取.netrc文件中的设定) -v 显示详细信息 2.  3. END_FTP是即时文件的标志它必须成对出现,以标识即时文件的开始和结尾。 ASCII 和BINARY模式区别:用HTML和文本编写的文件必须用ASCII模式上传,用BINARY模式上传会破坏文件,导致文件执行出错。BINARY模式用来传送可执行文件,压缩文件和图片文件。ASCII 模式和BINARY模式的区别是回车换行的处理,binary模式不对数据进行任何处理,asci模式将回车换行转换为本机的回车字符,比如Unix下是\n,Windows下是\r\n,Mac下是\rascii模式下会转换文件  不能说是不同系统对回车换行解释不同  而是不同的系统有不同的行结束符  unix系统下行结束符是一个字节,即十六进制的0A  而ms的系统是两个字节,即十六进制的0D0A    MAC系统是一个字节,即十六进制的0D在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理.cd 在远程机上改变工作目录lcd 在本地机上改变工作目录ascii 设置文件传输方式为ASCII模式binary 设置文件传输方式为二进制模式get(mget) 从远程机传送指定文件到本地机put(mput) 从本地机传送指定文件到远程机open 连接远程ftp站点! 转到Shell中从远程系统获取文件get和mget命令用于从远程机上获取文件。get命令的一般格式为:get 文件名您还可以给出本地文件名,这个文件名是这个要获取的文件在您的本地机上创建时的文件名。如果您不给出一个本地文件名,那么就使用远程文件原来的名字。mget命令一次获取多个远程文件。mget命令的一般格式为:mget 文件名列表使用用空格分隔的或带通配符的文件名列表来指定要获取的文件,对其中的每个文件都要求用户确认是否传送。向远程系统发送文件put和mput命令用于向远程机发送文件。Put命令的一般格式为:put 文件名mput命令一次发送多个本地文件,mput命令的一般格式为:mput 文件名列表使用用空格分隔的或带通配符的文件名列表来指定要发送的文件。对其中的每个文件都要求用户确认是否发送。FTP的工作方式   FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。Standard模式FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTPServer。   下面介绍一个这两种方式的工作原理:   Port模式FTP 客户端首先和FTP服务器的TCP21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。   Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。   很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。 
10-02 07:10