快速构建FTP服务器,FTP服务器实现的基本功能是,下面就分几个步骤来搭建一个可以实现功能的简易FTP服务器。
1.安装FTP服务器
如果在安装系统时没有选择安装FTP服务器,可以通过Red Hat中的“添加/删除应用程序”进行安装。具体方法是,选择“主选单”→“”→“添加/删除应用程序”,在弹出的界面中选中FTP服务器,单击“更新”即可。
如果无法确认是否安装了该软件,可以使用以下命令查看:
2.启动FTP服务器
套用Red Hat 9.0的预设范例直接启动VSFTP。
为vsftpd启动vsftpd: [确定]
3.在/var/ftp/pub目录下创建一个名为test.txt的文件
文件内容为“This is a test file”。
4.测试
使用FTP客户端登录到本地服务器,然后以匿名身份(anonymous)登录:
# ftp 127.0.0.1Connected to 127.0.0.1 (127.0.0.1).220 (vsFTPd 1.1.3)Name (127.0.0.1:root): anonymous331 Please specify the pass.Password:230 Login successful. Have fun.Remote system type is UNIX.Using binary mode to transfer files.
这样就成功地登录到FTP服务器。可以显示服务器目录列表如下:
ftp ls227 Entering Passive Mode (127,0,0,1,63,15)drwxr-xr-x 2 0 0 4096 Dec 04 01:35 pub226 y send OK.
切换到pub目录下,并显示目录内容,可以找到刚才创建的文件test.txt:
ftp cd pub250 Directory successfully changed.ftp ls227 Entering Passive Mode (127,0,0,1,232,34)150 Here comes the directory listing.-rw-r--r-- 1 0 0 21 Dec 04 01:35 test.txt226 Directory send OK.
下载test.txt文件:
ftp mget test.txtmget test.txt? y227 Entering Passive Mode (127,0,0,1,186,210)150 Opening BINARY mode data connection for test.txt (21 bytes).226 File send OK.21 bytes received in 0.0108 secs (1.9 Kbytes/sec)
查看本机目录内容,可以看到test.txt已成功下载到本机。
ftp !lsa EIO_Binders initrd mnt proc tftpboot ylg.txtbin etc lib mymnt root tmpboot home lost+found myshare sbin usrdev id_dsas.pub misc opt test.txt var
尝试上传名为ylg.txt的文件,可以看到请求被拒绝了。
ftp put ylg.txtlocal: ylg.txt remote: ylg.txt227 Entering Passive Mode (127,0,0,1,243,10)550 Permission dend.
退出登录:
由测试可以看出,已经可以下载文件,但不能上传文件(也不能在服务器上创建目录和文件)。实际上这是一个专门提供下载服务的匿名FTP服务器。
从上面的步骤可以看出,并不需要做什么配置就可以完成一个简易FTP服务器的架设。这是因为Red Hat已经配置好一个缺省的FTP服务器。不过在实际应用中,大部分情况下这个简易的服务器并不能满足需求。
进一步配置FTP
下面将创建一个能够满足常用需求的FTP服务器。实际应用中,FTP服务器一般要同时提供和功能。此外,出于安全考虑,还需要有用户身份验证、用户权限设置及空间管理等。下面就来搭建这样一个FTP服务器。
1.创建欢迎语
如果希望使用者在进入目录时,能够看到欢迎语或对本目录的介绍,可以通过以下方法来实现。
确定/etc/vsftpd/vsftpd.conf文件中dirmessage_enable=YES,默认情况下,Red Hat 9.0有此设置。接着,在目录中新增名为.message的文件。本例在/home/ylg目录下创建一个.message文件,其内容为“欢迎来到我的 FTP站点”。
2.更换FTP服务器的默认端口
将预设的21端口改为2121,这样做是基于安全的考虑。更改方法为,使用vi打开/etc/vsftpd/vsftpd.conf:#vi /etc/vsftpd/vsftpd.conf
在文件最后增加如下一行内容:
3.取消anonymous登录的功能
在vsftpd.conf文件中找到如下一行,并将其值改为“NO”:anonymous_enable=YES
4.设定使用者不得更改目录
这样做的目的也是基于安全性的考虑。一般情况下,使用者的预设目录为/home/username。若是不希望使用者在登录后能够切换至上一层目录/home,则可通过以下设置来实现。在/etc/vsftpd/vsftpd.conf文件中找到以下三行内容:
#chroot_list_enable=YES# (default follows)#chroot_list_file=/etc/vsftpd.chroot_list
将其改为:
chroot_list_enable=YES# (default follows)chroot_list_file=/etc/vsftpd/chroot_list
新增一个文件/etc/vsftpd/chroot_list,文件内容为两个用户名:
5.针对不同的使用者限制不同的速度
假设用户ylg所能使用的最高速度为500Kb/s,用户user1所能使用的最高速度为250Kb/s,可以通过以下方法设置。在/etc/vsftpd/vsftpd.conf文件尾部新增以下一行:
增加一个名为/etc/vsftpd/userconf的目录:
在/etc/vsftpd/userconf下新增一个名为ylg的文件,其内容如下所示:
local_max_rate=500000
在/etc/vsftpd/userconf目录下新增一个名为user1的文件,其内容如下所示:
local_max_rate=250000
VSFTP对于速度的限制范围大概在80%到120%之间,也就是限制最高速度为100Kb/s,但实际的速度可能在80Kb/s到120Kb/s之间。如果频宽不足,数值会低于此限制。6.对于每一个联机用户,都以独立的进程来运行。一般情况下,在启动VSFTP时,只会看到一个名为vsftpd的进程在运行。但若是读者希望每一个联机用户都能以独立的进程来呈现,则可通过在/etc/vsftpd/vsftpd.conf文件中增加以下一行来实现:
setproctitle_enable=YES
6.保存/etc/vsftpd/vsftpd.conf文件,然后重新启动vsftpd:
7.测试刚创建的FTP服务器
以缺省方式登录会被拒绝,因为此时的默认端口号已经更改为2121,所以登录时需指定端口。
此时也不能再使用匿名方式登录:
# ftp 127.0.0.1 2121Connected to 127.0.0.1 (127.0.0.1).220 (vsFTPd 1.1.3)Name (127.0.0.1:root): anonymous331 Please specify the pass.Password:530 Login incorrect.Login failed.
如果以用户ylg则可以成功登录(指定端口2121),并显示欢迎信息:
# ftp 127.0.0.1 2121Connected to 127.0.0.1 (127.0.0.1).220 (vsFTPd 1.1.3)Name (127.0.0.1:root): ylg331 Please specify the password.Password:230-欢迎来到我的FTP站点230 Login successful. Have fun.Remote system type is .Using binary mode to transfer files.
因为在设置中设定了不能切换目录,所以下列命令无法正确执行:
550 Failed to change y.
再来测试一下上传和。首先下载服务器目录中的test.txt文件:
ftp get test.txtlocal: test.txt remote: test.txt227 Entering Passive Mode (127,0,0,1,243,215)150 Opening BINARY mode data connection for test.txt (21 bytes).226 File send OK.21 bytes received in 0.00308 secs (6.7 Kbytes/sec)
可以通过!ls命令看到本机目录中已成功下载该文件。然后上传本机目录中的ylg.txt文件到服务器:
ftp put ylg.txtlocal: ylg.txt remote: ylg.txt227 Entering Passive Mode (127,0,0,1,133,248)150 Ok to send data.226 File receive OK.19 bytes sent in 0.0401 secs (0.46 Kbytes/sec)
用ls命令查看服务器目录,会发现该文件已成功上传。
为了测试不同连机用户使用的是不同进程,可以使用ps -ef指令
2. linux下用ftp命令连接到ftp服务器应该如何查看服务器上的目录文件数
1.Linux下启动ftp
ls -l 普通文件就是以 - 开头,文件夹以 d 开头,grep 后面接正则表达式:^- 以 - 开头的匹配。
(2)linuxftp下载文件夹命令扩展阅读:
1.查看当前目录下的文件数量(不包含子目录中的文件):
ls -l|grep "^-"| wc -l
2. 查看当前目录下的文件数量(包含子目录中的文件):
ls -lR|grep "^-"| wc -l
3.查看当前目录下的文件夹目录个数,(不包含子目录中的目录):
ls -l|grep "^d"| wc -l
4.查询当前路径下的指定前缀名的目录下的所有文件数量 例如:统计所有以“20161124”开头的目录下的全部文件数量:
ls -lR 20161124*/|grep "^-"| wc -l
3. 请问linux下用从终端登录ftp,将某文件下载到某文件夹的命令是什么
get ./111.doc /usr/share/111.doc
晕,看提示就知道你输入的存储路径有问题!
4. ftp查询命令大全
需要使用ftp命令的来这里查询吧。接下来是我为大家收集的ftp查询命令,希望能帮到大家。
ftp查询命令大全
FTP命令是Internet用户使用最频繁的命令之一,不论是在DOS还是UNIX操作系统下使用FTP,都会遇到大量的FTP内部命令。 熟悉并灵活应用FTP的内部命令,可以大大方便使用者,并收到事半功倍之效。FTP的命令行格式为: ftp -v -d -i -n -g [主机名] ,其中-v 显示远程服务器的所有响应信息; 计算机-n 限制ftp的自动登录,即不使用;.n etrc文件;
-d 使用调试方式;
-g 取消全局文件名。
ftp使用的内部命令如下(中括号表示可选项):
1.![cmd[args]]:在本地机中执行交互shell,exit回到ftp环境,如:
!ls*.zip.
2.$ macro-ame[args]:执行宏定义macro-name.e.
3.account[password]:提供登录远程系统成功后访问系统资源所需的补
充口令。
4.append local-file[remote-file]:将本地文件追加到远程系统主机, 计算机基础知识
若未指定远程系统文件名,则使用本地文件名。
5.ascii:使用ascii类型传输方式。
6.bell:每个命令执行完毕后计算机响铃一次。
7.bin:使用二进制文件传输方式。
8.bye:退出ftp会话过程。
9.case:在使用mget时,将远程主机文件名中的大写转为小写字母。
10.cd remote-dir:进入远程主机目录。
11.cp:进入远程主机目录的父目录。
12.chmod mode file-name:将远程主机文件file-name的存取方式设置为
mode,如: chmod 777 a.out 。
13.close:中断与远程服务器的ftp会话(与open对应)。
14.cr:使用asscii方式传输文件时,将回车换行转换为回行。
15.delete remote-file:删除远程主机文件。
16.debug[debug-value]:设置调试方式, 显示发送至远程主机的每条命
令,如: deb up 3,若设为0,表示取消debug。
17.dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本
地文件local-file。
18.disconnection:同close。
19.form format:将文件传输方式设置为format,缺省为file方式。
20.get remote-file[local-file]: 将远程主机的文件remote-file传至
本地硬盘的local-file。
21.glob:设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,
同命令行的-g参数。
22.hash:每传输1024字节,显示一个hash符号(#)。
23.help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get。
24.idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。
25.image:设置二进制传输方式(同binary)。
26.lcd[dir]:将本地工作目录切换至dir。
27.ls[remote-dir][local-file]:显示远程目录remote-dir, 并存入本
地文件local-file。
28.macdef macro-name:定义一个宏,遇到macdef下的空行时,宏定义结
束。
29.mdelete[remote-file]:删除远程主机文件。
30.mdir remote-files local-file:与dir类似,但可指定多个远程文件,
如: mdir *.o.*.zipoutfile 。
31.mget remote-files:传输多个远程文件。
32.mkdir dir-name:在远程主机中建一目录。
33.mls remote-file local-file:同nlist,但可指定多个文件名。
34.mode[modename]:将文件传输方式设置为modename, 缺省为stream方
式。
35.modtime file-name:显示远程主机文件的最后修改时间。
36.mput local-file:将多个文件传输至远程主机。 电脑入门
37.newer file-name: 如果远程机中file-name的修改时间比本地硬盘同
名文件的时间更近,则重传该文件。
38.nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并
存入本地硬盘的local-file。
39.nmap[inpattern outpattern]:设置文件名映射机制, 使得文件传输
时,文件中的某些字符相互转换,如:nmap $1.$2.$3[$1,$2].[$2,$3],则
传输文件a1.a2.a3时,文件名变为a1,a2。该命令特别适用于远程主机为非UNIX
机的情况。
40.ntrans[inchars[outchars]]:设置文件名字符的翻译机制,如ntrans
1R,则文件名LLL将变为RRR。
41.open host[port]:建立指定ftp服务器连接,可指定连接端口。
42.passive:进入被动传输方式。
43.prompt:设置多个文件传输时的交互提示。
44.proxy ftp-cmd:在次要控制连接中,执行一条ftp命令, 该命令允许
连接两个ftp服务器,以在两个服务器间传输文件。第一条ftp命令必须为open,
以首先建立两个服务器间的连接。
45.put local-file[remote-file]:将本地文件local-file传送至远程主
机。
46.pwd:显示远程主机的当前工作目录。
47.quit:同bye,退出ftp会话。
48.quote arg1,arg2...:将参数逐字发至远程ftp服务器,如:
quote syst.
49.recv remote-file[local-file]:同get。
50.reget remote-file[local-file]:类似于get,但若local-file存在,
则从上次传输中断处续传。
51.rhelp[cmd-name]:请求获得远程主机的帮助。
52.rstatus[file-name]:若未指定文件名,则显示远程主机的状态,否
则显示文件状态。
53.rename[from][to]:更改远程主机文件名。
54.reset:清除回答队列。
55.restart marker:从指定的标志marker处,重新开始get或put,如:
restart 130。
56.rmdir dir-name:删除远程主机目录。
57.runique:设置文件名唯一性存储,若文件存在,则在原文件后加后缀
..1,.2等。
58.send local-file[remote-file]:同put。
59.sendport:设置PORT命令的使用。
60.site arg1,arg2...:将参数作为SITE命令逐字发送至远程ftp主机。
61.size file-name:显示远程主机文件大小,如:site idle 7200。
62.status:显示当前ftp状态。
63.struct[struct-name]:将文件传输结构设置为struct-name, 缺省时
使用stream结构。
64.sunique:将远程主机文件名存储设置为唯一(与runique对应)。
65.system:显示远程主机的操作系统类型。
66.tenex:将文件传输类型设置为TENEX机的所需的类型。
67.tick:设置传输时的字节计数器。
68.trace:设置包跟踪。
69.type[type-name]:设置文件传输类型为type-name,缺省为ascii,如:
type binary,设置二进制传输方式。
70.umask[newmask]:将远程服务器的缺省umask设置为newmask,如:
umask 3。
71.user user-name[password][account]:向远程主机表明自己的身份,
需要口令时,必须输入口令,如:user anonymous my@email。
72.verbose:同命令行的-v参数,即设置详尽报告方式,ftp服务器的所有
响应都将显示给用户,缺省为on.
73.?[cmd]:同help.
看了“ftp查询命令大全”还想看:
1. FTP命令解析
2. 通过cmd命令到ftp上下载文件
3. windows命令行怎么使用ftp
4. Linux ftp命令的使用方法有哪些
5. 如何通过cmd命令到ftp上下载文件
5. CMD里 FTP的命令都有什么
在cmd中ftp命令很多,常用的主要有:
1、ftp192.168.1.3登陆ftp。
2、dir显示远程主机目录。
3、cdremote-dir:进入远程主机目录。
4、help[cmd]:显示ftp内部命令cmd的帮助信息,如:helpget。
5、getremote-file[local-file]:将远程主机的文件remote-file传至本地硬盘的local-file(本地文件夹)。
6、putlocal-file[remote-file]:将本地文件local-file传送至远程主机。
(5)linuxftp下载文件夹命令扩展阅读:
FTP命令是Internet用户使用最频繁的命令之一,不论是在DOS还是UNIX操作系统下使用FTP,都会遇到大量的FTP内部命令。熟悉并灵活应用FTP的内部命令,可以大大方便使用者,并收到事半功倍之效。
FTP是用来在两台计算机之间传输文件,是Internet中应用非常广泛的服务之一。它可根据实际需要设置各用户的使用权限,同时还具有跨平台的特性,即在UNIX、Linux和Windows等操作系统中都可实现FTP客户端和服务器,相互之间可跨平台进行文件的传输。
因此,FTP服务是网络中经常采用的资源共享方式之一。FTP协议有PORT和PASV两种工作模式,即主动模式和被动模式。
6. linux下ftp命令详解
ftp(file transfer protocol)
功能说明:设置文件系统相关功能。
语法:ftp [-dignv][主机名称或IP地址]
补充说明:FTP是ARPANet的标准文件传输协议,该网络就是现今Internet的前身。
参数: 《Linux就该这么学》
-d 详细显示指令执行过程,便于排错或分析程序执行的情形。
-i 关闭互动模式,不询问任何问题。
-g 关闭本地主机文件名称支持特殊字符的扩充特性。
-n 不使用自动登陆。
-v 显示指令执行过程。
1. 连接ftp服务器
格式:ftp [hostname| ip-address]
a)在linux命令行下输入:
ftp 192.168.1.1
b)服务器询问你用户名和密码,分别输入用户名和相应密码,待认证通过即可。
c)也可以先输入ftp
ftp>
d)然后在输入要连接的IP
ftp>open 192.168.1.1
2. 下载文件
下载文件通常用get和mget这两条命令。
a) get
格式:get [remote-file] [local-file]
将文件从远端主机中传送至本地主机中。
如要获取远程服务器上/usr/your/1.htm,则
ftp> get /usr/your/1.htm 1.htm (回车)
b) mget
格式:mget [remote-files]
从远端主机接收一批文件至本地主机。
如要获取服务器上/usr/your/下的所有文件,则
ftp> cd /usr/your/
ftp> mget *.* (回车)
此时每下载一个文件,都会有提示。如果要除掉提示,则在mget *.* 命令前先执行:prompt off
注意:文件都下载到了linux主机的当前目录下。比如,在/usr/my下运行的ftp命令,则文件都下载到了/usr/my下。
3.上传文件
a) put
格式:put local-file [remote-file]
将本地一个文件传送至远端主机中。
如要把本地的1.htm传送到远端主机/usr/your,并改名为2.htm
ftp> put 1.htm /usr/your/2.htm (回车)
b) mput
格式:mput local-files
将本地主机中一批文件传送至远端主机。
如要把本地当前目录下所有html文件上传到服务器/usr/your/ 下
ftp> cd /usr/your (回车)
ftp> mput *.htm(回车)
7. 用linux命令 在ftp上下载多个文件,该怎么写呢谢谢!
这个是挺容易的。你可以使用help来查询可用命令。标准的情况下,mget可以接受通配符(即像shell一样使用通配符表示一类文件),这样就可以一次下载多个文件了。更高级的一些FTP客户端还可以支持下载列表等功能。你也可以使用axel或wget来使用列表以进行多个文件下载(在这种情况下应该是写成这样:ftp://username:passwd@servername/filename,具体能不能用小弟还没试过,你可以查询相关资料或者找o'reilly的书籍看看)。
8. 如何使用get命令利用FTP下载文件到本地
1、从远程ftp服务器下载文件的命令格式:
get 远程ftp服务器上当前目录下要下载的文件名。
2、附上ftp常用命令,如下所示:
FTP>open [ftpservername],和指定的远程Linux FTP服务器连接。
FTP>user [username] [password],使用指定远程Linux FTP服务器的用户登录。
FTP>pwd,显示远程Linux FTP服务器上的当前路径。
FTP>ls,列出远程Linux FTP服务器上当前路径下的目录和文件。
FTP>dir,列出远程Linux FTP服务器上当前路径下的目录和文件(同上)。
FTP>mkdir [foldname],在远程Linux FTP服务器上当前路径下建立指定目录。
FTP>rmdir [foldname],删除远程Linux FTP服务器上当前路径下的指定目录。
FTP>cd [foldname],更改远程Linux FTP服务器上的工作目录。
FTP>delete [filename],删除远程Linux FTP服务器上指定的文件。
FTP>rename [filename] [newfilename],重命名远程Linux FTP服务器上指定的文件。
FTP>close,从远程Linux FTP服务器断开但保留FTP命令参数提示。
FTP>disconnect,从远程Linux FTP服务器断开但保留FTP命令参数提示(同上)。
FTP>bye,结束和远程Linux FTP服务器的连接。
FTP>quit,结束和远程Linux FTP服务器的连接(同上)。
FTP>!,直接从远程Linux FTP服务器进入到本地shell中。
FTP>exit,(接上步)从本地shell环境中返回到远程Linux FTP服务器环境下。
FTP>!ls,列出本地机器上当前路径下的目录和文件。
FTP>lcd [foldname],更改本地机器的工作目录。
9. 用shell的linux服务器 .sh插件怎么从远程ftp服务器下载文件
//ftpput.sh
[cpp] view plain
#!/bin/sh
#FileName:ftpput.sh
#Function:从本地客户端向ftp服务器上传一个文件
#Version:V0.1
#Author:Sunrier
#Date:2012-07-20
#$#表示传递给此Shell脚本的参数个数
#-ne表示不等于
if [ $# -ne 2 ]
then
echo "Usage $0 <local_dir/filename> <remote_dir>"
exit 1
fi
#IP表示ftp的服务器ip地址
IP=127.0.0.1
#IP=192.168.6.1
#FULLNAME获取本地文件全路径名
FULLNAME=$1
#DESTDIR获取需要上传的ftp远程目录路径
DESTDIR=$2
#basename返回一个路径中的文件名部分
#如FULLNAME="/home/Sunrier/Proj/log/test.log";
#当local_filename=`basename $FULLNAME`
#最终local_filename="test.log"
local_filename=`basename $FULLNAME`
#DESTFILE表示ftp服务器的路径,以及保存后的文件名
DESTFILE=$DESTDIR/$local_filename
#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
bin
passive
cd /home/remote/log/ftpfile
put $FULLNAME $DESTFILE
quit
FTPIT
exit 0
//注释:
[cpp] view plain
#!/bin/sh
#FileName:ftpput.sh
#Function:从本地客户端向ftp服务器上传一个文件
#Version:V0.1
#Author:Sunrier
#Date:2012-07-20
#$#表示传递给此Shell脚本的参数个数
#-lt表示小于
#-eq表示等于
#-ne表示不等于
if [ $# -ne 2 ]
then
echo "Usage $0 <local_dir/filename> <remote_dir>"
exit 1
fi
#IP表示ftp的服务器ip地址
#IP=127.0.0.1
IP=192.168.6.1
#FULLNAME获取本地文件全路径名
FULLNAME=$1
#DESTDIR获取需要上传的ftp远程目录路径
DESTDIR=$2
#basename返回一个路径中的文件名部分
#如FULLNAME="/home/Sunrier/Proj/log/test.log";
#当local_filename=`basename $FULLNAME`
#最终local_filename="test.log"
local_filename=`basename $FULLNAME`
#DESTFILE表示ftp服务器的路径,以及保存后的文件名
DESTFILE=$DESTDIR/$local_filename
#-i表示在多个文件传输期间关闭交互提示
#-n表示禁止自动登录到初始连接
#<<FTPIT 和最后的 FTPIT:术语叫:当前文档here documents. here document 就是一段特殊目的的代码块,
#它使用I/O重定向的形式来将一个命令序列传递到一个交互程序或者命令中,比如ftp、cat,或者ex文本编辑器.
#本句可以理解从<<FTPIT开始以非对话模式的ftp连接,直到输入FTPIT为止的所有命令.
#当然FTPIT这个名字是可以随便取的,不一定必须是FTPIT,可以取其它的名字。
#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
#连接到指定ftp服务器上
open $IP
#连接到指定ftp服务器上,并指定端口
#open $IP $PORT
#登陆ftp服务器上的用户名和密码
#user username password
user Sunrier redhat
#bin表示以二进制方式传输
#bin等价于bi,binary等
#另一种方式传输是ascii,默认情况下,将文件传输类型设置为ASCII
bin
#主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口
#被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTP服务器的情况.
#因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过.
#因此在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作.
#passive表示设置为被动模式的FTP
passive
#cd表示更改ftp服务器上(即远程计算机)的工作目录
cd /home/remote/log/ftpfile
#lcd表示更改本地计算机的工作目录
#lcd /home/Sunrier/Proj/log/
#put local_file [ remote_file ]
#其中local_file是指定要复制的本地文件,remote_file是指定要复制的远程计算机上的文件名,
#remote_file为可选项,如果不指定的话是和本地计算机上的文件名同名.
#put表示把本地路径下的文件复制到FTP服务器(远程计算机)上设置的路径下的文件
put $FULLNAME $DESTFILE
#quit表示结束与远程计算机的FTP会话,并退出FTP.
#还有个等价的命令为bye(或by)结束与远程计算机的FTP会话并退出FTP
quit
#here document块结束
FTPIT
#正式写这个Shell脚本时,here document中的#和空行都会执行,
#所以为了消除警告最好去掉here document块中#开头的语句以及空行,
#暂时我还没有找到here document中有效的注释语句的方法.
exit 0
//ftpget.sh
[cpp] view plain
#!/bin/sh
#FileName:ftpget.sh
#Function:从ftp服务器上下载一个文件到本地计算机上
#Version:V0.1
#Author:Sunrier
#Date:2012-07-20
#$#表示传递给此Shell脚本的参数个数
#-ne表示不等于
if [ $# -ne 2 ]
then
echo "Usage $0 <remote_dir/filename> <local_dir>"
exit 1
fi
#IP表示ftp的服务器ip地址
IP=127.0.0.1
#IP=192.168.6.1
#FULLNAME获取从ftp服务器上下载的文件全路径名
FULLNAME=$1
#DESTDIR获取从ftp服务器上下载的文件所存放的本地计算机的目录路径
DESTDIR=$2
#remote_filename获取从ftp服务器上下载的文件名
remote_filename=`basename $FULLNAME`
#DESTFILE表示下载文件所存放的本地路径,以及本地保存后的文件名
DESTFILE=$DESTDIR/$remote_filename
#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
bin
cd /home/remote/log/ftpfile
get $FULLNAME $DESTFILE
quit
FTPIT
exit 0
#get remote_file [ local_file ]
#remote_file是指定要复制的文件,local_file是指定本地计算机上的文件名,
#local_file为可选项,没有指定的话则跟remote_file同名。
//20120726改进版本
[cpp] view plain
#!/bin/sh
#FileName:ftpput.sh
#Function:从本地客户端向ftp服务器上传一个文件(添加远程目录是否存在判断功能)
#Version:V0.2
#Author:Sunrier
#Date:2012-07-26
#$#表示传递给此Shell脚本的参数个数
#-ne表示不等于
if [ $# -ne 2 ]
then
echo "Usage $0 <local_dir/filename> <remote_dir>"
exit 1
fi
#IP表示ftp的服务器ip地址
IP=127.0.0.1
#IP=192.168.6.1
#FULLNAME获取本地文件全路径名
FULLNAME=$1
#DESTDIR获取需要上传的ftp远程目录路径
DESTDIR=$2
#dirname返回路径中的目录部分
#DESTDIR="/home/Sunrier/Proj/log/test.log";
#当PREDESTDIR=`dirname $DESTDIR`
#最终PREDESTDIR="/home/Sunrier/Proj/log"
PREDESTDIR=`dirname $DESTDIR`
SUFFIXDESTDIR=`basename $DESTDIR`
LOCALDIR=`dirname $FULLNAME`
#basename返回一个路径中的文件名部分
#如FULLNAME="/home/Sunrier/Proj/log/test.log";
#当local_filename=`basename $FULLNAME`
#最终local_filename="test.log"
local_filename=`basename $FULLNAME`
#DESTFILE表示ftp服务器的路径,以及保存后的文件名
DESTFILE=$DESTDIR/$local_filename
#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
dir $PREDESTDIR $LOCALDIR/tmp.txt
quit
FTPIT
#find $LOCALDIR -name "tmp.txt" -type f | xargs grep "^d.*$SUFFIXDESTDIR$"
#find . -name "tmp.txt" -type f | xargs grep "^d.*$SUFFIXDESTDIR$"
#find . ! -name "." -type d -prune -o -type f -iname "*tmp.txt" -print | xargs grep "^d.*$SUFFIXDESTDIR$"
#grep "^d.*$SUFFIXDESTDIR$" \$LOCALDIR/tmp.txt
#grep后面查找字符两边加不加引号效果相同
grep ^d.*$SUFFIXDESTDIR$ $LOCALDIR/tmp.txt >/dev/null 2>&1
#$?表示上一个命令的运行结果,0表示成功,其它值表示失败
#if [ $? != 0 ]
if [ $? -ne 0 ]
then
rm $LOCALDIR/tmp.txt
exit 1
fi
#mkdir创建远程目录
#mkdir $DESTDIR
#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
bin
passive
cd /home/remote/log/ftpfile
put $FULLNAME $DESTFILE
quit
FTPIT
rm $LOCALDIR/tmp.txt
exit 0
[cpp] view plain
注:
FTP服务器的启动:
[root@localhost ~]# service vsftpd start
为 vsftpd 启动 vsftpd: [确定]
FTP服务器的端口一般默认为21:
[root@localhost ~]# netstat -nat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:523 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:50000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:601 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
[root@localhost ~]#
在使用system执行Shell脚本时,如system("ftpput.sh"),system返回值低8位为system执行脚本所接收到的信号值,9~16位为Shell脚本所设置的exit退出值
10. linux下如何用FTP下载含有特定文件名的文件
如果命令行下载只能一个一个下,用客户端直接多个一起下;或者干脆用sftp下载就可以record* 全部下载了