1. ftp自动登录批量下载文件。

#####从ftp服务器上的/home/data 到 本地的/home/databackup####
#!/bin/bash
ftp -n<<!
open 192.168.1.171
user guest 123456
binary
cd /home/data
lcd /home/databackup
prompt
mget *
close
bye
!
2. ftp自动登录上传文件。

####本地的/home/databackup to ftp服务器上的/home/data####
#!/bin/bash
ftp -n<<!
open 192.168.1.171
user guest 123456
binary
hash
cd /home/data
lcd /home/databackup
prompt
mput *
close
bye
!

3. ftp自动登录下载单个文件。
####ftp服务器上下载/home/data/a.sh to local /home/databackup####
#!/bin/bash
ftp -n<<!
open 192.168.1.171
user guest 123456
binary
cd /home/data
lcd /home/databackup
prompt
get a.sh a.sh 
close
bye
!

4. ftp自动登录上传单个文件。
####把本地/home/databachup/a.sh up ftp /home/databackup 下####
#!/bin/bash
ftp -n<<!
open 192.168.1.171
user guest 123456
binary
cd /home/data
lcd /home/databackup
prompt
put a.sh a.sh 
close
bye
!

"!"一定要在首行
小结:把以上脚本另存为文件加入到crontab中即可实现ftp自动上传、下载文件。
注解:
1. -n 不受.netrc文件的影响。(ftp默认为读取.netrc文件中的设定)
2. << 是使用即时文件重定向输入。
3. !是即时文件的标志它必须成对出现,以标识即时文件的开始和结尾。

-----------------------------------------------------------------------------------------------

在windows下非常简单,windows下的ftp客户端有一个-s参数可以带一个文件,把所有在ftp命令行下要输入的内容照原样输入到这个文件中,用ftp -s去执行就可以。例如:
open 10.60.56.90
whb
123456
get test
close
bye
把这个文件保存为autologin.txt。
E:/>ftp -s:autologin.txt
ftp> open 10.60.56.90
Connected to 10.60.56.90.
220 (vsFTPd 2.0.5)
User (10.60.56.90:(none)):
331 Please specify the password.

230 Login successful.
ftp> get test
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for test (5 bytes).
226 File send OK.
ftp: 收到 5 字节,用时 0.00Seconds 5000.00Kbytes/sec.
ftp> close
221 Goodbye.
ftp> bye

E:/>
如果是匿名登录,密码那一行留空。

在linux下,上面的方法失效。Bruce Ediger在http://www.stratigery.com//scripting.ftp.html这篇文章中详细介绍了在shell脚本中使用ftp的方法。简单总结如下:
方法一:
#!/bin/bash 
SERVER=server
USERNAME=username
PASSWORD=password
ftp -n $server <<SCRIPT 
quote USER $username
quote PASS $password
cd remote_path
lcd local_path
binary 
verbose 
get something
put something
close 
quit 
SCRIPT 
方法二:
#!/bin/bash 
SERVER=server
USERNAME=username
PASSWORD=password
ftp -n $server <<SCRIPT 
user $USERNAME $PASSWORD
cd remote_path
lcd local_path
binary 
verbose 
get something
put something
close 
quit 
SCRIPT 
方法三:使用.netrc
可以用man netrc看这个文件的配置参数。比如写如下的.netrc文件:
machine whb 
login whb 
password 123456 
 
machine node6 
login globus 
password 123456 
需要注意的是,如果在.netrc文件中使用password设置了ftp登录密码,那么除该文件所有者外,其他用户对该文件都不能有读权限,否则自动登录会失败。
[whb@jcwkyl ~]$ chmod 600 .netrc 
[whb@jcwkyl ~]$ ftp node6 
Connected to node6.jlu.edu.cn. 
220 (vsFTPd 1.1.3) 
530 Please login with USER and PASS. 
530 Please login with USER and PASS. 
KERBEROS_V4 rejected as an authentication type 
331 Please specify the password. 
230 Login successful. Have fun. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
ftp>

另外,网上有众多使用expect实现的方法,可以google到。

最新文章

  1. SpringMVC一路总结(三)
  2. selenium 3.0 beta2 初体验
  3. centos上安装php运行环境
  4. SpringMVC学习笔记(一)
  5. SQL Server 导入数据失败:无法在只读列“Id”中插入数据
  6. 后缀数组 SPOJ 694 Distinct Substrings
  7. spring三种实例化bean的方式
  8. 1、创建一个JPA project(解决“at least one user library must be selected”问题)
  9. Error (0xc0000225) installing Windows 8 R2 on VirtualBox
  10. .NET连接SAP系统专题:.NET调用RFC几种方式(一)
  11. No http handler was found for request type &#39;GET&#39;
  12. 201521123090《Java程序设计》第6周学习总结
  13. Junit4学习(五)Junit4测试套件
  14. Android应用开发allowBackup敏感信息泄露的一点反思
  15. 浅谈GlusterFS
  16. 如何设置Linux(Centos)系统定期任务(corntab详细用法)
  17. 使用PowerShell快速部署Win12R2虚拟化桌面
  18. centos系统初始化脚本
  19. 自定义Kettle数据库插件
  20. pycharm中内看内建函数的定义

热门文章

  1. 浏览器后退按钮导致jquery动态添加的select option值丢失的解决方法
  2. 2015年最新中国知网CNKI免费账号直接入口
  3. Appium —— desired_capabilities详解
  4. MonthPicker
  5. POJ1004Financial Management
  6. Oracle 10 - 数据库表
  7. 系统学习sqlserver2012 一
  8. [转] 软件定义网络(SDN) 的应运而生
  9. 分布式内存对象缓存系统Memcached-概述
  10. SRAM与SDRAM的区别