perl中FTP的使用

PERL 连接FTP实现文件上传下载 这里使用的Net::FTP模块,一般安装的perl都会自带该模块,查看perl是否安装某模块使用命令:perldoc Net::FTP,如果出现文档说明,则表示该模块已安装,如果出现:No documentation found for 则表明该模块未安装,perl安装模块可以参考该文章:[添加链接描述](https://blog.youkuaiyun.com/czz1141979570/article/d... 阅读详情
#!/usr/bin/perl

#-----------------------------------------------------#
# 
# description : create and ftp subchange state file
# author      : wqq
# date        : 2012-04-30
#
#-----------------------------------------------------#
#use warnings;
use strict;
use Net::FTP;

our ($day,$mon,$yea) = (localtime(time))[3..5];
our $current_date = sprintf "%04s%02d%02d",$yea+1900,$mon+1,$day;

our $source_subchange_dir = "../backup/$current_date";
our $source_file_count = 3;
our $target_subchange_file = "ocs_subchange.unl";
our $ftp_ip = "10.2.11.52";
our $ftp_username = "mid";
our $ftp_password = "mid";
our $local_file = $target_subchange_file;
our $desc_file = "ocs_subchange.unl";
our $desc_dir = "/home/mid/test";

our %hash_state;
our %hash_time;

sub current_datetime()
{
    my($sec,$min,$hou,$day,$mon,$yea) = (localtime(time))[0..5];
    my $date_time = sprintf "%04s-%02d-%02d %02d:%02d:%02d",$yea+1900,$mon+1,$day,$hou,$min,$sec;
    return $date_time;
}

sub info()
{
  print "please check parameter!\nusage:\n\t./subchange.pl\n";
}

sub logfile()
{
  my $line = shift;
  my $exitflag = shift;
  open (LOG_FILE,">> $source_subchange_dir/log_$current_date.unl") or die ">>>>>Can't read log file $source_subchange_dir/log_$current_date.unl: $!\nPlease check...\n";
  print LOG_FILE "[".&current_datetime()."]:$line\n";
  close LOG_FILE;
  if($exitflag == 1)
  {
    exit;  
  }
}

sub check_file()
{
  my $count_file;
  my @count_file;
  if(! -d $source_subchange_dir)
  {
    &logfile(">>>>>The document $source_subchange_dir not exists!",1); 
  }else{
    $count_file = `ls $source_subchange_dir/ocs_subchange* | wc -l`;
    @count_file = `ls $source_subchange_dir/ocs_subchange*`;
    if($source_file_count != $count_file)
    {
      chomp($count_file);
      &logfile(">>>>>Current source file count: $count_file",0);
      foreach my $file (@count_file)
      {
        chomp($file);
        &logfile(">>>>>Source file: [$file] ",0);
      }
      &logfile(">>>>>Please check source file! need source file count:[$source_file_count]\n",1); 
    }
  } 
  
  foreach my $file (@count_file)
  {
    chomp($file);
    &logfile("Source file: [$file] ",0);
  }
}

#----------read userdb_ocs_subchangelog file----------#
sub read_ocs_subchangelog_file()
{
  my $line;
  my @arr;
  my $file;
  
  opendir(DIR, $source_subchange_dir) || &logfile(">>>>>Open directory $source_subchange_dir failed!",1);	
	while ($file = readdir(DIR))
	{
	  if($file =~ /^ocs_subchange/)
	  {
      my ($line);
  		open (FILE, "$source_subchange_dir/$file") || &logfile(">>>>>Can't read source file $file: $!\nPlease check...",1);
      while($line=<FILE>)
      {
        chomp($line);
        @arr = split(/\|/,$line,-1);
        chomp($arr[3]);
        
        if(exists $hash_state{$arr[0]})
        {
          if($hash_time{$arr[0]} le $arr[1])
          {
            $hash_state{$arr[0]}= $arr[3];
            $hash_time{$arr[0]}= $arr[1];  
          }
        }else{
          $hash_state{$arr[0]}= $arr[3];  
          $hash_time{$arr[0]}= $arr[1];
        }
      }
      close FILE;
    }  
  }
  close DIR;
}

#----------create subchange file----------#
sub create_subchange_file()
{
  my $isdn;
  my @arr;
  
  open TARGET_SUBCHANGE, ">> $target_subchange_file" or &logfile(">>>>>Can't read target file $target_subchange_file: $!\nPlease check...",1);
  foreach $isdn (keys %hash_state)
  {
    if(substr($hash_state{$isdn},0,1)==1)
    {
      print TARGET_SUBCHANGE "MOD LCK: ISDN=\"$isdn\", IC=FALSE, OC=FALSE, GPRSLOCK=FALSE;\n"; 
    }else{
      print TARGET_SUBCHANGE "MOD LCK: ISDN=\"$isdn\", IC=TRUE, OC=TRUE, GPRSLOCK=TRUE;\n";
    }
  }
  close TARGET_SUBCHANGE; 
}


sub ftp_subchange_file()
{

  my $ftp = Net::FTP->new($ftp_ip) or &logfile(">>>>>Can't connect to HLR [$ftp_ip].",1);
  
  &logfile("Begin input username:[$ftp_username] and password:[$ftp_password].",0);
  $ftp->login($ftp_username,$ftp_password) or &logfile(">>>>>Can't login [$ftp_ip], username or password is error!",1);
  
  $ftp->ascii();
  
  &logfile("Begin change dir to [$desc_dir].",0);
  $ftp->cwd($desc_dir) or &logfile(">>>>>Can't change dir to [$desc_dir], dir is error!",1);  

  my @file=$ftp->ls($desc_file);
  if($file[0] eq "$desc_file")
  {
    $ftp->delete($desc_file);
    &logfile("[$desc_dir/$desc_file] The file exists in the HLR:[$ftp_ip], delete it.",0);  
  }else{
    &logfile("[$desc_dir/$desc_file] The file not exists in the HLR:[$ftp_ip].",0);  
  }
  
  &logfile("Begin to put the file in the HLR:[$desc_dir/$desc_file]",0);
  $ftp->put($local_file,$desc_file) or &logfile(">>>>>Can't put the file in the HLR:[$desc_file]",1);
  
  $ftp->quit;  
}


#----------main----------#
if(@ARGV != 0)
{
  &info();  
}
else
{ 
  system("rm -rf $target_subchange_file $source_subchange_dir/log_$current_date.unl");
  
  &logfile("Begin check source file.",0);
  &check_file();
  &logfile("Check source file completed!\n",0);
  
  &logfile("Begin create subchange final file.",0);
  &read_ocs_subchangelog_file();
  &create_subchange_file();
  &logfile("Create subchange final file completed!\n");
  
  &logfile("Begin connect to HLR [$ftp_ip].",0);
  &ftp_subchange_file();
  &logfile("Ftp subchange final file completed!\n");
}


item响应事件失效、handler旧方法找不到、handler找不到sendMessage()、百度链接没响应、adb被占用、找不到连接设备、小米手机测试报错 之前在学习的时候遇到了好多小坑,好在网上好多前辈提供了很多解决方案,为了记得牢一些,也顺便把以前的一些东西总结一下。有点抱歉之前忘记记录那些参考链接,重新搜也认不大出之前看是哪一篇文章…大家把这篇文章当成转载的好了,以后一定记录好那些参考过的前辈文章链接。一、item响应事件失效ListView之类的容器控件大家都挺常用的,有时候可能会遇到这种情况,给容器设定好布局,创建好对应Adapter后,发现 阅读详情

相关推荐

FTP上传文件,读取文件中文字符,解决乱码问题

FTP上传文件,FTP解决乱码问题 解决乱码讲new String(s.getBytes("gbk"),"ISO8859-1");//其转换后还是乱码 改成国际中文标准码就行了

Perl ftp

#!/usr/bin/perl use English; use strict; use warnings; use Net::FTP; my $ftp = Net::FTP -> new("10.58.118.40", Debug => 0) or die $!; $ftp -> login("SVFUNC\\FTPuser", "dtb_dm#22") or

SHUAI-优快云 470

如何使用Perl脚本实现下载服务器端数据到客户端

Perl的实际应用,如何自动化下载服务器端数据到本地。

Perl的FTP-----get文件

<br />在Perl中,使用模块Net::FTP来使用FTP服务,<br />一般的使用步骤如下:<br />1. 使用Net::FTP的new方法来创建一个新的FTP对象。<br />2. 使用login方法登录到FTP服务器。<br />3. 使用cwd方法来切换目录。<br />4. 使用get方法来获取文件。<br />5. 使用put方法来上传文件。<br />6. 使用quit方法退出。<br />下面是linux下perl编写的ftp程序连接非21端口的例子:<br />[root@loca

zhangxinrun的专栏 3406

台达PLC使用RS485Modbus指令通信

台达PLC,RS485,Modbus RTU,从站梯形图,0X01,0X02,0X05,CRC校验

lilililimu的博客 1万+

无需Root!安卓模拟器+BurpSuite轻松搞定微信小程序抓包

本文详细介绍了如何在不root安卓设备的情况下,使用安卓模拟器和BurpSuite实现微信小程序抓包。通过夜神模拟器降级安卓版本、配置BurpSuite代理及安装证书等步骤,开发者可以轻松绕过微信的证书绑定,高效抓取小程序数据包。文章还提供了常见问题排查和高阶技巧,帮助开发者提升抓包效率。

weixin_29213655的博客 365

Perl的ftp----put文件

<br />工作需要,经常要更新一些运行包,但是每次手工去ftp,既麻烦,还浪费时间.于是就用Perl写了一个通过配置文件来自动ftp的小工具.采用perl主要是考虑它的跨平台性,当然了用python等也可以.<br />在配置文件里边可以指定主机,用户名,密码,要传输的文件等等.<br /><br /><br />代码如下:<br />#!/usr/bin/perl<br />use Net::FTP;<br />use Class::Struct;<br /><br />struct FtpInfo =

zhangxinrun的专栏 3100

Windows下Colmap编译安装全攻略:从Boost到CUDA的避坑指南

本文详细介绍了在Windows系统下编译安装Colmap三维重建工具的完整流程与实战经验。针对Boost库版本兼容性、CUDA与Visual Studio的版本匹配等常见难题提供了具体的避坑指南和解决方案,帮助开发者高效完成从环境配置到最终部署的全过程。

weixin_28235513的博客 199

Linux下的经典软件-史上最全

前言从2012年接触Linux系统以来就被Linux系统所吸引,2个月后便完全抛弃了Windows。在这2年的时间里,我尝试了很多Linux发行版: Gentoo, Fedora, Ubuntu, Debian等。在这些系统中又尝试了很多种软件,这里根据自己的使用经验并结合网上的一些资料,对Linux下常用的软件进行整理,供大家参考,希望能帮助到大家。每款软件都有它的优缺点,适合自己的才是最好的。在

分享 Go、云原生、AI Infra 相关技术 2万+

麦克斯韦电磁场理论

1)从知识先后上说:麦克斯韦方程组为理解光的传播、反射、折射等现象提供了理论基础。不理解基础,怎么能理解上层建筑。2)从如何学懂上说,把基础学习的越牢,越深刻,后续学习上层建筑就会水到渠成一些,不会越学越多疑问。而是越学越少疑问。

weixin_55255438的博客 2825

PaddleOCR 与 PaddleX 调试

本文介绍了PaddleOCR与PaddleX的安装调试过程及应用对比。首先详细说明了环境准备步骤,包括安装ccache、设置环境变量及创建conda虚拟环境,提供了精简安装和源码安装两种方式。接着展示了使用PaddleOCR进行发票和手写汉字识别的测试结果,指出部分手写识别存在误差。随后对比了两者的差异:PaddleOCR专注于OCR算法优化,PaddleX则提供全流程工具链和标准化部署方案。最后演示了如何通过PaddleX部署OCR服务,包括API启动方法和客户端调用示例,为开发者提供了两种不同场景下的O

weixin_42176639的博客 1452

java找不到对象异常_找不到对象错误

我似乎真的找到一个能帮我解决我遇到的实际问题的人 .这是我的代码:library(RNeo4j)library(tidyverse)library(stringr)library(MASS)### uncomment the next 2 lines to reconnect to server & re-query the database# setwd("~/Desktop/Dashr...

weixin_35338620的博客 2120

Windows下QT5.15.2安装MQTT模块全攻略(附分支选择避坑指南)

本文详细介绍了在Windows环境下为QT5.15.2安装MQTT模块的完整流程,包括环境准备、源码获取、编译配置及项目集成等关键步骤。特别针对分支选择、依赖项处理和常见错误提供了实用解决方案,帮助开发者高效完成MQTT模块的安装与调试,适用于物联网开发场景。

weixin_29224589的博客 466

语言找不到igragh_盘点R语言的各种"找不到"

今天是生信星球陪你的第490天 大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~ 就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~ 这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!封面图片来自:VisualHunt.com花花写于2019-11-21R语言的盘点系列:「盘点」R语言的那些分分合合「盘点」R语言的那些拼图方法「盘点...

weixin_29646607的博客 1095

把 ABAP 经验装进 GitHub Copilot 的按需大脑,Agent Skills 如何改变 ABAP 开发

2026 年 8 月,SAP Community 上出现了一次很有代表性的 ABAP 实验。开发者把标准 Flight Model 里的复制成自己的测试类,删除原有 ABAP Unit Test,再让 GitHub Copilot Agent 为方法重新生成测试代码。真正有意思的地方并不是 Copilot 会不会写,而是开发者给 Copilot 准备了两个专门的 Agent Skills,一个负责 ABAP Unit Test 的通用规则,一个负责 ABAP Test Double Framework。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 155

YOLOv8模型轻量化实战:基于稀疏化剪枝与L1正则化的高效目标检测模型优化-附源码

本文提出一种YOLOv8轻量化方案,通过L1正则化稀疏化训练和动态阈值通道剪枝,在边缘计算场景中优化模型性能。方案分三步:首先通过L1正则诱导权重稀疏化并动态衰减系数;然后基于BN层权重统计进行通道剪枝,保留80%关键通道;最后对剪枝模型微调恢复精度。在COCO128数据集上验证,模型体积压缩40%,推理速度提升2.3倍,mAP仅下降0.4%,实现了精度与效率的平衡。该方案为移动端部署提供了可行的轻量化技术路径。

m0_64661770的博客 479

R语言报错找不到plot_table函数

R语言报错:找不到plot_table函数的解决方案 R语言是一种强大的统计编程语言,广泛用于数据分析和数据可视化。然而,在使用R语言的过程中,尤其是初学者,有时会遇到一些常见的错误提示,比如“找不到plot_table函数”。本文将探讨如何Diagnose这一问题,并提供相关代码示例。 1. 错误的来源 导致“找不到pl...

weixin_29147539的博客 400

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

当R语言报错的各种情况(不断收集更新ing)

1.报错显示“没有某个函数”时, 因为这个mutate函数是 dplyr 包中的函数,没有加载这个包,就无法使用这个函数。 如果想知道该函数属于哪个包的话,可以搜 然后在R中加载对应的包即可!哇哦!动起手来吧! ...

Rosebud的博客 9499

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python找不到对象怎么办_你为什么总找不到对象

不知道某个时间点,你是否会对着美颜相机中的自己顾影自怜,这么帅,这么有才华,为何还找不着对象呢?这个不是我能解决的问题。今天我们要给大家解决的技术问题是“Object not found”的问题。命令行操作在文本界面工作中,经常会遇到各种找不到的问题,比如在Linux命令行中找不到命令,找不到目录文件,在R中找不到对象,找不到函数,在Perl或者python中,找不到某个变量,找不到某个函数等,这...

weixin_39830012的博客 1528

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

systemctl命令找不到_你为什么总找不到对象

在学习生物信息的过程中,经常会遇到报错,而报错最多的就是找不到软件或者文件路径,这里我们都成为“对象”,至于你为何还找不着男女朋友的对象呢,这个不是我能解决的问题。今天我们要给大家解决的技术问题是“Object not found”的问题。命令行操作在文本界面工作中,经常会遇到各种找不到的问题,比如在Linux命令行中找不到命令,找不到目录文件,在R中找不到对象,找不到函数,在Perl或...

weixin_39534149的博客 5400

R语言rmarkdown knit导出的时候显示Error in eval找不到对象

现在定义变量的部分注释掉,依然可以运行,因为R语言在运行结束后不会删除产生的自定义变量,a已经在变量区了。但是Knit不行,因为他发现a没有定义过,他也不去找变量区,直接给你报错。我不知道,可能Knit过程中有自己的变量区,总之和RStudio的变量区不重合。这两段代码就是把变量区缓存的变量都清除,这样运行和Knit就等价了,因为都没有之前存在变量区的变量可以用。因此有时Rmarkdown可以运行是因为运行需要的变量在Envirnoment里面有,但是Knit的时候他找不到这个变量,就会报错。

qq_52651584的博客 5502

R语言dplyr包filter函数 Error in filter(., ) : 找不到对象的报错原因和解决办法

报错描述 当我们想使用dplyr包中的 filter 函数对指定的dataframe进行如下的行筛选时,R报错Error in filter(., ) : 找不到对象X.stage_id. ,提示我们没有这一列 outside = outside %>% filter(X.stage_id. == 203) 但事实上我们的dataframe肯定是有这一列的,那为什么报错呢,主要是因为我们同时加载了比较多的包,导致有至少两个包同时含有filter函数,于是R语言无法自动识别我们是想使用dplyr包的fi

Smilecoc的博客 5886

R语言,求大佬解答这道题为什么一直报错找不到对象‘WIF‘

(3)将数据分为训练集(70%)和测试集(30%),建立线性回归模型,分析NOC、WIF、HHT对家庭收入(HINCP)的对数的影响,并查看回归结果的概要信息,解释各部分的含义。(2)将变量HINCP、NOC转换为数值型,HHT、WIT转换为因子;# 建立线性回归模型,分析NOC、WIF、HHT对家庭收入对数的影响。(4)绘制测试集数据的点线残差图,计算均方根误差。# 将HINCP、NOC转换为数值型。# 将HHT、WIF转换为因子。# 查看回归结果的概要信息。# 预测测试集的结果。

m0_69354067的博客 678

R语言——报错:Error in (function (classes, fdef, mtable):函数‘select’标签‘“data.frame“’找不到继承方法

R语言——报错:Error in (function (classes, fdef, mtable):函数‘select’标签‘“data.frame”’找不到继承方法。

qq_45794091的博客 7626

R.styleable找不到资源或者是报错

http://blog.youkuaiyun.com/chenjianandiyi/article/details/47029329 android开发用到了自定义view的属性,  流程  自定义View的步骤:  1. attr.xml  2. 布局文件中使用  3.构造方法中获取自定义属性  4. onMeasure 其中在 第三部中  TypedArray t

qq_38719039的博客 4180
上一篇: oracle复制表数据,复制表结构
下一篇: TEMPORARY Tablespaces and TEMPFILES
wqq_721
博客等级 码龄18年 10粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值