因为开发平台与测试平台不是同一机器,所以要经常用FTP传输东西,不过每次都手工进行FTP太麻烦了,这样找了一下自动FTP的方法以记之。
本来想用一个输入重定向的方法来代替手工输入 形式如:ftp < ftp.in 结果总是登陆失败,原尚不十分明确。所以在网上搜了另一个方法:netrc。
在自己的home目录下建立一个权限600,名为.netrc的文件,内容是:
machine 192.168.0.1 login test password test
这样以后你每次ftp 192.168.0.1的时候,系统都会帮你以用户名test,密码test登录。
利用这个特征可以实现自动ftp。
例如你想要每天5:00到192.168.0.1机器上面获得/test目录下的文件test.txt,可以这么做:
建立一个文件ftp_cmd,内容为:
cd test
get test.txt
bye
然后使用crontab -e设置定时任务:
0 5 * * * ftp 192.168.0.1 < ftp_cmd
.netrc的一个范例:
machine 192.168.0.82 login abc password abc123
macdef init
binary
bell
hash
prompt
!clear
mget *
!clear
bye
该文件的作用是为FTP自动注册192.168.0.82服务器定义相应的账号与口令,并定义一个宏init。init宏的工作过程是:将文件传输格式类 型设为二进制(binary);在每个文件传输结束后响铃以提醒用户(bell);在文件传输过程中显示传输进度(hash);关闭交互提示开关 (prompt),以便后继的“mget *” 操作(获取远方服务器当前工作目录下的所有文件)能自动进行;在“mget *”操作的前后,执行“!clear”清屏;最后执行“bye”退出FTP。注意,上述.netrc文件应以空行结束,因为文件中定义了一个宏,而宏的定 义必须以空行结束。
可以定义一些常用的“宏”。一个宏实际上就是用户预先定义的一组FTP命令,执行一个宏等价于连续自动执行这一组命令。如果宏的名字为“init”,那么在FTP注册的最后一步完成后将自动执行init宏。