这是今天所用的 Net::FTP模块,由于这次所需要编写的脚本比较复杂,我把每个需求写到每个脚本里,然后在把每个脚本的功能,作为一个函数在整合到一起,下面是代码

#!/usr/bin/perl

use warnings;
use strict;
use Net::FTP;
use Log::Log4perl qw(get_logger); #use log4perl model

use Date::Simple ('date');
use File::Glob ':glob';#directory operation model

my $host="192.168.25.214";
my $usrname="root";
my $pwd="passwd";
my $path="/root/test/tttt";
my @ftpfilenames;
my @ppth;

&ftpdownload($host,$usrname,$pwd,$path);
print "ok!\n";

sub ftpdownload
{
my $newerr = 0;
my ($host,$username,$pwd,$path)=@_;
my $ftp = Net::FTP->new($host,Debug =>0) or $newerr=1;
if($newerr)
  {
  print "create ftp sever fail\n";
  return 0;
  }
$ftp->login($username,$pwd) or $newerr=1;
if($newerr)
  {
  print "login ftp sever fail\n";
  return 0;
  }
$ftp->cwd($path) or $newerr=1;
if($newerr)
  {
  print "change the path $path fail\n";
  return 0;
  }
$ftp->binary() or $newerr=1;
if($newerr)
  {
  print "change binary fail\n";
  return 0;
  }
#@ppth = $ftp->ls($path);

#foreach(@ppth)

# {

# my $ppath = $_;

# $ftp->cwd($ppath) or $newerr=1;

# if($newerr)

# {

# print "change! $ppath fail\n";

# return 0;

# }

# }

$ftp->binary() or $newerr=1;
if($newerr)
  {
  print "change binary fail\n";
  return 0;
  }

@ftpfilenames = $ftp->ls();

#my $oriname;

#my $getresult = $ftp->get($oriname);

foreach(@ftpfilenames)
  {
   my $filename = $_;
   my $oriname= $filename;
   my $getresult ="";
   my $destname = "$host\_$oriname";
   $getresult = $ftp->get($oriname,$destname);
  if(defined($getresult))
     {
      print "get $oriname success from $host\n";
     }
  else
    {
     print "get $oriname fail from $host\n";
    }
  }
$ftp->quit;
}

今天最大的体会就是发现

use warnings;
use strict;
这两行真的很重要,以后不可以不加它们了!

简单的Net::FTP模块的简单应用相关推荐

  1. 使用python下载文件的简单示例_Python FTP 下载文件 简单示例

    简单的FTP下载 ,不加任何异常判断. import os from ftplib import FTP ftp_addr = '10.10.0.1' f=FTP(ftp_addr) f.login( ...

  2. ftp协议及简单配置

    在我们的学习和生活,FTP服务器可谓充斥了我们的生活,比如我们交作业时的ftp服务器,是不是很方便呢!所以今天就来研究一下ftp服务器吧. ftp协议是一种非常古老的协议.古老到他的安全性在现在已经不 ...

  3. Discuz! X2.5 添加自定义数据调用模块(简单方法)

    转:http://521-wf.com/archives/46.html Discuz! X2.5 添加自定义数据调用模块(简单方法) Discuz!X系列的diy功能还是相当不错的,在对其进行二次开 ...

  4. python操作微信电脑版_Python使用itchat模块实现简单的微信控制电脑功能示例

    本文实例讲述了Python使用itchat模块实现简单的微信控制电脑功能.分享给大家供大家参考,具体如下: #!/usr/bin/python #coding=UTF-8 import request ...

  5. python 微信模块_Python使用itchat模块实现简单的微信控制电脑功能示例

    本文实例讲述了python使用itchat模块实现简单的微信控制电脑功能.分享给大家供大家参考,具体如下: #!/usr/bin/python #coding=UTF-8 import request ...

  6. python requests 示例_Python Requests模块的简单示例

    这篇文章主要为大家详细介绍了Python Requests模块的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! ...

  7. 思源黑体ttf_模块模板 | 简单方法替换将TTF格式字体转换为Magisk模块

    注  意 本模块还处于测试阶段,不保证完全稳定,欢迎大家下载测试.如介意请不要使用. 由topjohnwu开发的Magisk(又称「面具」)工具由于其「systemless」的便捷特性已经受到越来越多 ...

  8. boost::proto模块实现简单的算术表达式求值器的测试程序

    boost::proto模块实现简单的算术表达式求值器的测试程序 实现功能 C++实现代码 实现功能 boost::proto模块实现简单的算术表达式求值器的测试程序 C++实现代码 #include ...

  9. boost::contract模块实现简单queue的测试程序

    boost::contract模块实现简单queue的测试程序 实现功能 C++实现代码 实现功能 boost::contract模块实现简单queue的测试程序 C++实现代码 #include & ...

最新文章

  1. endnote咋手动输入文献_EndNote 如何在 Word 中手动输入引文
  2. Android 相机,视频录制
  3. 2016年8月份学习总结,读书《书都不会读,你还想成功》
  4. Linear_algebra_02_行列式
  5. C++ Fermat‘s little theorem费马小定理寻找模逆实现算法(附完整源码)
  6. 编程php分析器,如何编程访问分析器数据
  7. 欢迎您参加_ADT技术培训营
  8. 异常处理——namenode启动成功但是没有namenode进程
  9. mysql登录不了_登录不了MySQL的解决方法
  10. javascript表格可以输入数据_最火8套测量自动计算表格,输入数据直接得结果,效率提升80%...
  11. Jquery-数组删除元素
  12. IS-IS快速收敛调优配置实例
  13. 通俗易懂的LDA模型
  14. 人才培养的金字塔模型
  15. 优动漫PAINT入门宝典(应用篇)——颜色配置文件
  16. LCD液晶显示屏颜色显示波长研究与总结?
  17. HTML5 + Canvas + 广度优先搜索(BFS) 编写lol连连看
  18. pycharm远程连接服务器中的docker容器的配置
  19. 熊谱翔:变化的RT-Thread 不变的初心
  20. 汇聚150万开发者,华为云致力于成为最佳应用构建平台

热门文章

  1. android清理缓存动画、天气APP、购物下单选择器、阅读APP、饿了么demo等源码
  2. linux C/C++内存检测
  3. 用java实现邮件发送验证码
  4. linux 源码安装 Nginx
  5. is_numeric 检测变量是否为数字或数字字符串
  6. Careercup | Chapter 3
  7. linux下启动某个进程
  8. 美国CISA 列出300个已遭利用漏洞,督促组织机构及时修复
  9. 惠普OMEN游戏本驱动曝内核级漏洞,影响数百万Windows 计算机
  10. 微软披露首个由中国发现的蠕虫级漏洞 奇安信代码安全实验室获致谢