免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6229 | 回复: 14
打印 上一主题 下一主题

{求助}perl FTP 上传文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-26 15:04 |只看该作者 |倒序浏览
求一份脚本,
实现的功能是:将本地的文件夹下的文件上传至FTP服务器,此脚本每10分钟运行一次,上次运行上传过的文件本次就不要上传了,脚本运行时只上传新生成的文件

谁有这方面类型的脚本,不胜感激。

或者提供一个可行的思路 ,谢谢了,新人求助。

论坛徽章:
0
2 [报告]
发表于 2014-03-26 15:15 |只看该作者
本帖最后由 ytphrx 于 2014-03-26 15:17 编辑

起用TK定時器,10分鐘執行一次上傳子程序就可以了。
$widget->after(TimeValue, \&SubProduceName)
sub SubProduceName
{
上傳內容。。。。判斷是否需要上傳,可以使用另外一個文件記錄上傳過的資料。
}

论坛徽章:
0
3 [报告]
发表于 2014-03-26 15:33 |只看该作者
有没有完整点的代码,完全不知道perl里面怎么用TK定时器啊回复 2# ytphrx


   

论坛徽章:
0
4 [报告]
发表于 2014-03-26 17:40 |只看该作者
UP  着急啊

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
5 [报告]
发表于 2014-03-26 18:15 |只看该作者
用cron 10分钟调一次 不就好了
把要上传的文件放在一个目录
上传完毕的mv到另一个目录
sh都可以搞定

论坛徽章:
0
6 [报告]
发表于 2014-03-26 18:24 |只看该作者
本帖最后由 ytphrx 于 2014-03-26 18:24 编辑

#!/usr/local/bin/perl
use Tk;
use Tk::Font;
my $mw = Tk::MainWindow->new(-title=>"Timer");
$mw->geometry("100x100");
my $id;
my $button=$mw->Button(-text=>"Timer repeat",-command=>\&subprodece1)->pack;
my $button1=$mw->Button(-text=>"Timer cancel",-command=>\&subproduce)->pack;
$id1=$button1->afterIdle(sub{print "\nidle subproduce"});
MainLoop;
sub subproduce
{
print $button1->afterInfo($id);
$id->cancel;
}
sub subprodece1
{
$id=$button1->repeat(60000,sub{print "\nrepeat"});
}


说明:
本例点击按钮Timer repeat时创建一个不断重复计时的定时器,每当计时结束时就调用执行一次子程序输出字符串到标准输出设备上。当点击按钮Timer cancel时会输出指定定时器的相关信息如下例子:
Tk::Callback=ARRAY(0x478e1d4) 60000 repeat
其信息第一项是定时器调用的子程序引用,第二项是定时器的计时时间,第三项是定时器的种类。

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
7 [报告]
发表于 2014-03-26 22:27 |只看该作者
这脚本是在什么系统上运行? 每十分钟运行一次是说的cron job还是schedule task? 或者是脚本一直在运行,只是每十分钟做一次上传?

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
8 [报告]
发表于 2014-03-27 01:39 |只看该作者
本帖最后由 rubyish 于 2014-03-26 22:01 编辑

用cron 10分钟调一次
code 没有测试,不知道是否正确
read:
http://perldoc.perl.org/Net/FTP.html
  1. #!/usr/bin/perl
  2. # use 5.018;
  3. use Net::FTP;

  4. my $dir   = '/tmp';
  5. my $updir = '/pub';
  6. my $FTP   = 'some.host.name';
  7. my $usr   = 'abc';
  8. my $pass  = 'hello';
  9. my @files = glob "$dir/*";
  10. system "touch $dir/.putlog" unless -e "$dir/.putlog";

  11. open my $fh, '+<', "$dir/.putlog";
  12. my %ok = map { chomp; $_, 1 } <$fh>;
  13. my @up = grep { !$ok{$_} } @files;

  14. exit unless @up;
  15. print $fh "$_$/" for @up;
  16. close $fh;

  17. # http://perldoc.perl.org/Net/FTP.html
  18. print "ftp begin\n";

  19. my $ftp = Net::FTP->new( $FTP, Debug => 0 )
  20.   or die "Cannot connect to $FTP: $@";

  21. $ftp->login( $usr, $pass )
  22.   or die "Cannot login ", $ftp->message;
  23. $ftp->cwd($updir)
  24.   or die "Cannot change working directory ", $ftp->message;
  25. for my $f (@up) {
  26.     $ftp->put($f) or die "put failed ", $ftp->message;
  27. }

  28. $ftp->quit;
复制代码

论坛徽章:
0
9 [报告]
发表于 2014-03-27 08:09 |只看该作者
本帖最后由 ytphrx 于 2014-03-27 08:16 编辑

回复 7# stanley_tam

启动脚本,会出现一个主界面,点击设置定时器的按钮,不要关闭脚本,每隔6s调用一次子程序,你想做什么就把功能放在子程序中就可以了。另外一个按钮用于取消定时器。定时器以毫秒为单位,我设置了60000,不对,才1分钟,你可以多设置一点时间,测试结果。可以运行在win32系统或者xwindow系统。
或者你也可以试验一下8楼的建议,看看哪个合适。

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
10 [报告]
发表于 2014-03-27 09:36 |只看该作者
sorry, 我的错。偶问的楼主{:3_203:} 回复 9# ytphrx


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP