简单的perl脚本

来源:互联网 发布:网络视频推广方案 编辑:程序博客网 时间:2024/05/17 14:24
#!/usr/bin/perluse strict;##以下为变量区,请自行修改my $his_name="";my $File_Path="/public/release/log/DataDisconn/";my $Bak_Path="/public/release/log/DataDisconn/bak/";my $His_Path="/public/release/log/DataDisconn/log/";my $Log_Path="/public/release/log/DataDisconn/log/";my $file_mode="DataDisconn";my $Ora_Str="dic_tongbu_wuhan/dic_tongbu_wuhan\@HB_XIAOGAN";my $Ora_Str_HB="dic_tongbu_hubei/dic_tongbu_hubei\@HB_XIAOGAN";my $SMS_Str="dic_sms/dic_sms\@DXPT1";my ($sec,$min,$hour,$day,$mon,$year,$weekday,$yeardate,$savinglightday);##以上为变量区while (1){        &MakeHisFile;        &SearchFile;        sleep 60;}sub GetTime{        ($sec,$min,$hour,$day,$mon,$year,$weekday,$yeardate,$savinglightday) = (localtime(time));        $sec = ($sec < 10)? "0$sec":$sec;        $min = ($min < 10)? "0$min":$min;        $hour = ($hour < 10)? "0$hour":$hour;        $day = ($day < 10)? "0$day":$day;        $mon = ($mon < 9)? "0".($mon+1):($mon+1);        $year += 1900;}sub SearchFile{        &Log("Search In [$File_Path] !");        opendir FP,$File_Path;        my @files = readdir FP;        closedir FP;        &Log("With File Mode [$file_mode] !");  @files = grep {/^$file_mode/} @files;        foreach my $file(@files)        {                &Log("File [$File_Path$file] !");                               &ReadFile($File_Path.$file);                &Log("Move [$File_Path$file] to [$Bak_Path$file] !");                rename "$File_Path$file","$Bak_Path$file";        }}sub ReadFile{        open FH,"<",$_[0];        my @line = <FH>;        close FH;        foreach my $line(@line)        {                my $user = (split(/\|/,$line))[1];                my $num = (split(/\|/,$line))[2];                my $latn_id = (split(/\|/,$line))[3];                my $error_code = (split(/\|/,$line))[4];                my $user_type = (split(/\|/,$line))[5];                &SearchInHis($user,$num,$latn_id,$user_type);        }}sub MakeHisFile{        &GetTime;        $his_name = $His_Path."Close_$year$mon.his";        open FH, ">>" , $his_name;        close FH;}sub SearchInHis{        my $user = $_[0];        my $num = $_[1];        my $latn_id = $_[2];        my $user_type = $_[3];        open FH, "<", $his_name;        my @his = <FH>;        close FH;        if (grep {/^$user\|/} @his )        {                &Log("$user is exist !");        }        else        {        if ($latn_id == 1001 )        {                ToSqlPlus($user,$num,$latn_id,$user_type);                }                else                {                ToSqlPlusHB($user,$num,$latn_id,$user_type);                }                &WriteToHis($user);        }}sub WriteToHis{        my $user = $_[0];        &GetTime;        open FH, ">>" , $his_name;        print FH "$user|$year$mon$day$hour$min$sec\n";        close FH;}sub Log{        &GetTime;        open FH ,">>", $Log_Path."Close_$year$mon$day.log";        print FH "$hour:$min:$sec -- $_[0]\n";        close FH;}sub ToSqlPlus{        my $user = $_[0];        my $num = $_[1];        my $latn_id = $_[2];        my $user_type = $_[3];        &Log("To Disconn [$user]!");        if($user_type == "01")        {               `sqlplus $Ocs_Str <<EOF        insert into dic_sd4.tb_ecp_inf_bill (id, begin_date, end_date, begin_hour, end_hour, channel_type, totel, to_addr, title, send_content, activity_id, priority, flag, state, is_long, sent_bg_time, fromtel, send_type, sys_code, latn_id,need_resport) values (dic_sd4.SEQ_BILL_INFO.NEXTVAL, trunc(sysdate), trunc(sysdate), 0, 24, 1, $num, 'wulz\@tydic.com', '4G断网提醒', '尊敬的用户,您的套餐外上网流量已经使用15GB,达到封顶断网流量(15G),如想继续使用请登录湖北电信网厅hb.189.cn,或到当地电信营业厅办理申请。下载天翼客服客户端http://kefu.189.cn/aURBF3 可实时掌握流量使用情况。', 13990, 3, 1, -1, 0, sysdate, '10001', 'SUB', '513', $latn_id,1);        commit;EOF`;}        `sqlplus $Ora_Str <<EOF        exec ls65_sid.pro_20g_for_ocs($user);        commit;EOF`;}sub ToSqlPlusHB{my $user = $_[0];        my $num = $_[1];        my $latn_id = $_[2];        my $user_type = $_[3];        &Log("To Disconn [$user]!");        if($user_type == "01")        {               `sqlplus $Ocs_Str <<EOF        insert into dic_sd4.tb_ecp_inf_bill (id, begin_date, end_date, begin_hour, end_hour, channel_type, totel, to_addr, title, send_content, activity_id, priority, flag, state, is_long, sent_bg_time, fromtel, send_type, sys_code, latn_id,need_resport) values (dic_sd4.SEQ_BILL_INFO.NEXTVAL, trunc(sysdate), trunc(sysdate), 0, 24, 1, $num, 'wulz\@tydic.com', '4G断网提醒', '尊敬的用户,您的套餐外上网流量已经使用15GB,达到封顶断网流量(15G),如想继续使用请登录湖北电信网厅hb.189.cn,或到当地电信营业厅办理申请。下载天翼客服客户端http://kefu.189.cn/aURBF3 可实时掌握流量使用情况。', 13990, 3, 1, -1, 0, sysdate, '10001', 'SUB', '513', $latn_id,1);        commit;EOF`;}        `sqlplus $Ora_Str_HB <<EOF        exec ls65_sid2.pro_20g_for_ocs($user);        commit;EOF`;}

1 0