ftp自动下载脚本

主动模式和被动模式转自http://my.oschina.net/binny/blog/17469

#!/bin/bash
ftp -i -n -v IP << EOF     

#-i 关闭交互模式

#-n 关闭自动登录功能

#-v 程序运行时显示详细的处理信息

user * *
lcd /tmp
passive   被动模式
prompt off  关闭交互确认
binary
cd test01/
mget *
close
bye
EOF

===========================================================================================================================

今天让整个ftp的下载脚本,只能下载文件后来又百度了一下能不能直接下载目录- - :

 

使用wget下载整个FTP目录

 

#wget ftp://IP:PORT/* --ftp-user=xxx --ftp-password=xxx -r -c

 

备注:星号*必须有,否则下载下来的就一个文件index.html
-r参数就是用来目录下载的
-c是使用断点续传,服务器要支持

 

可以写到shell脚本中,后台执行。

 

#!/bin/sh
wget ftp://IP:PORT/* --ftp-user=xxx --ftp-password=xxx -r -c

 

保存为wget.sh,并赋予可执行权限

 

# chmod +x wget.sh

 

后台执行这个脚本,在命令后加“&”即可

 

./wget.sh &

 

如果希望把执行结果输出到文件的话,前面加 nohup,默认输出文件名为 nohup.out

 

nohup ./wget.sh &

 

如果要限速的话,加上--limit-rate=100k,代表限速100k,-c是断点续传的意思。

弄了半天还是linux命令强大啊 

转自http://www.kevinick.com/archives/?article-401.html

 

============================================================================================

expect写的ftp的脚本 纯属为了好看

#!/bin/bash
expect <<END
spawn ftp IP
expect ":root*" {send "*\n"}
expect "Password" {send "*\n"}
expect "ftp>" {send "cd test01\n"}
expect "ftp>" {send "lcd /tmp\n"}
expect "ftp>" {send "prompt off\n"}
expect "ftp>" {send "mget *\n"}
expect "ftp>" {send "bye"}
END

又复习了下ftp的知识着重又看了下ftp的主动模式和被动模式:

1.FTP的PORT(主动模式)和PASV(被动模式)

    (1) PORT(主动模式)

    PORT中文称为主动模式,工作的原理: FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据,原理如下图:

 

2) PASV(被动模式)

    PASV是Passive的缩写,中文成为被动模式,工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输

2.两种模式的比较

     从上面的运行原来看到,主动模式和被动模式的不同简单概述为: 主动模式传送数据时是“服务器”连接到“客户端”的端口;被动模式传送数据是“客户端”连接到“服务器”的端口。

    主动模式需要客户端必须开放端口给服务器,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。

    被动模式只需要服务器端开放端口给客户端连接就行了

posted @ 2016-03-18 15:03  cool4ever  阅读(3612)  评论(0编辑  收藏  举报