perl模块Net::FTP使用
如何新建一个FTP对象 $ftp=Net::FTP->new($host[,%options])%options 可以对这个新建的FTP对象指定特定的选项,比如连接的超时时间等。 选项列表: Port Timeout Passive 为文件传输使用被动模式 BlockSize 传输的块长度,默认为10240 如何登录指定的FTP主机 $success=$ftp->login([$username][,$pwd][,$account]) login方法可以不加任何的参数,默认以anonymous为账户名登录,它会查找.netrc 文件来作为它的认证信息。 如何设置文件传输模式 $type=$ftp->ascii 或者 binary ascii适用于传输文本文件,这个方法返回前一个模式的值,比较的特殊。 如何得到远程FTP服务器上的当前目录 $dir=$ftp->pwd() 返回完整的工作路径 如何删除服务器上目录,如果有权限 $success=$ftp->rmdir($dir) 如何创建目录 $success=$ftp->mkdir($dir,$parents) 如果$parents为真,则会像mkdir -p这样 如何取得某目录内的文件名和目录名的短路径格式列表 @items=$ftp->ls($dir) 在标量上下文中,它返回对数组的引用。你可这样使用它$ftp->(‘-lF’) @items=$ftp->dir() 这个和上面的ls差不多。它返回长格式形式的列表,像是ls -lg的形式。 如何从服务器上下载文件 $success=$ftp->get($remote,$local,$offset) $remote可以为完整路径或者相对于当前目录的相对路径,$local可以指定下载的文件要存储的名字,即文件重命名。可以把$local设定为一个存在的文件句柄,这样下载的文件将发送到那个句柄中。比如$ftp->get(‘filename’,\*STDOUT)。$offset是为断点续传而准备的参数,也就是它在传输前会从这个位置来传输。 如何直接检索远程文件不下载到指定的文件 $file_handle=$ftp->retr($filename) 这样我们可以读取这个文件句柄。print while<$file_handle> 如何上传文件到远程服务器上 $success=$ftp->put($local,$remote_dir) 如何初始化一个文件的传输 $file_handle=$ftp->stor($filename) 如果你能够把文件从本地上传到指定的远程目录内,这个方法返回一个文件句柄,之后我们就可以通过文件句柄来写文件到远程目录的指定文件下。还有一个功能差不多的方法:appe(),从名字上看,它是追加的意思,而sotr则直接覆盖已经存在的文件。 如何返回远程文件的修改时间,如果FTP服务器支持 $modtime=$ftp->mdtm($file) 它返回从纪元元年到现在的秒数;如果文件不存或者不是普通的文件,它返回undef。 如何得到远程服务器的文件大小 $size=$ftp->size($file) 如果文件不存在或者不是普通文件,返回undef。它以字节为单位返回指定文件的长度。 如果取得FTP服务器反馈的消息 $mesage=$ftp->message() FTP以交互的形式工作,我们给FTP服务器发送一个指令,它进行解析并返回特定的消息,如 220 Serv-U FTP Server v6.4 for WinSock ready…,前面那个220指示命令完成的状态,大于500的表示FTP服务器内部的错误,400~499表示客户端的错误,200~299表示命令成功完成。通常来说我们没有成功登录到指定的FTP时,message()方法可以报告发生了什么错误。 其他要点 Net::FTP是libnet实用程序的一部分,这个软件包还包含其他的有用模块,比如Net::Time、Net::SMTP,具体可以参看http://search.cpan.org/~gbarr/,这是此软件包开发者的项目主页。在这里随便提下Net::Cmd模块。这个模块有两个主要的方法:command() 和response()。 $success=$obj->command($cmd,@args) 此方法将$cmd指定的命令发送给服务器,可以为命令加一些参数,它自动的在各参数之间加入空格进行分隔并将一个CRLF控制字符附加到命令的末尾。 $status=$obj->response() 它获取服务器对最后一次命令的响应,返回一个数字作为状态报告给我们,在失败的情况下返回undef。