什么是自动执行ftp过程的最佳方式。 我的意思是可以编写一个脚本,当执行的脚本将ftp到远程系统和取出文件与人为干预。
请build议。
我个人使用lftp ,这是高度可编写脚本(请参阅本教程 )。
当然,你也可以使用perl / ruby / python /你的首选脚本语言编写一个改编的FTP客户端。
有用于此目的的Perl包。 例如CPAN模块Net :: Lite :: FTP和Net :: FTP 。
它将允许您的脚本根据来自服务器的信息做出决定。 例如,如果文件名不是常量(可能包含date或版本号),则脚本可以在决定要下载哪个文件之前处理目录列表。
我成功地使用它来自动下载/更新大分子序列数据库。
我想你可以使用wget来做这样的事情:
WGET是免费的,所以你可以抓住并检查帮助文件
就像是:
wget -user=username -pass=password ftp://ftp.moose.com/download.zip
显然可以在脚本中使用variables
只是注意到这是solaris,所以不知道这是否工作。
我喜欢蜷曲最好的:
curl是一个使用URL语法传输文件的命令行工具,支持FTP,FTPS,HTTP,HTTPS,SCP,SFTP,TFTP,TELNET,DICT,LDAP,LDAPS和FILE。 curl支持SSL证书,HTTP POST,HTTP PUT,FTP上传,基于HTTP表单的上传,代理服务器,cookies,用户名密码authentication(Basic,Digest,NTLM,Negotiate,Kerberos …),文件传输恢复,代理隧道和大巴其他有用的技巧。
非常方便所有您的URL获取需求。
可以使用netrc(4)文件自动执行Solaris ftp命令。 macdef init是关键。 样品:
猫〜/ .netrc
机器remote-host1.domain.comloginmy-ftp-account
密码password4host1
macdef init
光盘
/ pub / DOWNLOAD获取自述文件默认login匿名密码[email protected]
你的脚本可以在调用ftp之前创buildnetrc文件。
你已经得到了很多build议,使用不同于FTP的东西。 这很公平,因为脚本FTP有点烦人,但它不一定是便携式的,也不是教你什么新东西。
实际上,通过将命令从STDIN引导到ftp来执行脚本非常简单。 这种东西适用于多种工具。
cd /target ftp -n host <<EOF USER falken PASS joshua cd place binary get file bye EOF echo 'hi! um... what'\''s this all about again? I am done.'
login部分可以通过向脚本所有者的~/.netrc文件添加信息来实现自动化。 实际上,如果你是man netrc你会学到很多关于自动化ftp 。
在Solaris上,您还可以使用期望的自动化工具。 当然你应该先安装它。 对于FTP,您可以在维基百科有关Expect的文章中find示例。
我已经为我们的需要写了一个,
#!/bin/sh
主机名= “IP-ADRESS”
端口= “21”
用户名= “serverfault”
密码= “serverfalut”
storage_path = “目的地”
current_date =“$(date +%Y%m%d)”
$参数】remotefile = “REMOTE-FILE”
ftp -in $ hostname $ port << EOF
引用用户$用户名
报价传递$密码
二进制
得到$ remotefile $ storage_path /
删除$ output_dir / output $ current_date.tar.gz
放弃
关
EOF
退出0
ncftp通常包含ncftpget和ncftpput,它们将适合包含在脚本中。 通常可以从源码构build,或者检查csw或sunfreeware。
我通常只是使用ftp和authentication文件.netrc,然后把所有东西都放进去。 例如
cat >> EOF | ftp open ftpserver mget * bye EOF
NcFTP客户端