首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

下面这段pl文件是用来解析.dat文本文件的,哪位高手帮小弟我把这段pl文件,改写成java文件,用来解析java文件

2013-06-25 
下面这段pl文件是用来解析.dat文本文件的,谁帮我把这段pl文件,改写成java文件,用来解析java文件?本帖最后

下面这段pl文件是用来解析.dat文本文件的,谁帮我把这段pl文件,改写成java文件,用来解析java文件?
本帖最后由 qiuqiu_henry 于 2013-06-05 13:38:13 编辑 下面这段pl文件是用来解析.dat文本文件的,谁帮我把这段pl文件,改写成java文件,用来解析同一个.dat文件,达到与pl文件解析同样的效果?



#!/usr/bin/perl -w
############################## check_log.pl ##############
# Version : 0.1
#通过检查dat文件查看在线行情
#created by ztt 0422
#日志文件.dat 2分钟记录一次
#使用范例
# ./check_log.pl 2000 1
#在线人数正常,时间:Fri May 31 14:22:17 2013 流量:3.323791 ,在线人数:1480
###########################################################
 
use strict;
 
my %ERRORS=('OK'=>0,'WARNING'=>1,'CRITICAL'=>2,'UNKNOWN'=>3,'DEPENDENT'=>4);
my ($year,$mon,$day)=(localtime)[5,4,3];
$year+=1900;
$mon+=1;
my $daystring=sprintf("%04u-%02u-%02u",$year,$mon,$day);
#文件格式yyyy-mm-dd.dat
my $filename="/home/monitor/data/".$daystring.".dat";
#print($dayn);

if(! $ ARGV [ 0 ]||!$ ARGV[1] )
  {print_usage();
  exit(1);
  }
my $max= $ ARGV [ 0 ];
my $min= $ ARGV [ 1 ];
if($min > $max)
{
  printf "参数错误,最小值大于最大值";
  exit $ERRORS{"UNKNOWN"};
 }
# 开始读取文件
open (INFILE,"<$filename" ) or  die "Unable to open file\n";
#open (INFILE,"c:/default.dat" ) or  die "Unable to open file\n";
binmode (INFILE);
my $buffer;
my $time=0;
my $cpu=0;my $net=0;my $usernum=0;
my $num=0;
while(read(INFILE,$buffer,28))
{
    ($time,$cpu,$net,$usernum) = unpack("L s f i",$buffer);

    $num+=1;
   #  printf "Time is %d,net is %f Number of User = %d\n", $time,$net,$usernum;
}
$time=localtime($time);
close(INFILE);
if($usernum<$min)
{
printf "在线人数异常,时间:%s 流量:%f ,在线人数:%d", $time,$net,$usernum;
exit $ERRORS{"CRITICAL"};
}
elsif($usernum>$max)
{
printf "在线人数异常高,时间:%s  流量:%f ,在线人数:%d" ,$time,$net,$usernum;
exit $ERRORS{"WARNING"};
}
else
{
printf "在线人数正常,时间:%s 流量:%f ,在线人数:%d"  ,$time,$net,$usernum;
exit $ERRORS{"OK"};
}

sub print_usage {
  print <<EOTXT;
Usage: check_log [-max maxnum] [-min minnum]
EOTXT
}
.dat perl
[解决办法]
学习一下perl就会了,很简单的。。。

引用:
下面这段pl文件是用来解析.dat文本文件的,谁帮我把这段pl文件,改写成java文件,用来解析同一个.dat文件,达到与pl文件解析同样的效果?



#!/usr/bin/perl -w
############################## check_log.pl ##############
# Version : 0.1
#通过检查dat文件查看在线行情


#created by ztt 0422
#日志文件.dat 2分钟记录一次
#使用范例
# ./check_log.pl 2000 1
#在线人数正常,时间:Fri May 31 14:22:17 2013 流量:3.323791 ,在线人数:1480
###########################################################
 
use strict;
 
my %ERRORS=('OK'=>0,'WARNING'=>1,'CRITICAL'=>2,'UNKNOWN'=>3,'DEPENDENT'=>4);
my ($year,$mon,$day)=(localtime)[5,4,3];
$year+=1900;
$mon+=1;
my $daystring=sprintf("%04u-%02u-%02u",$year,$mon,$day);
#文件格式yyyy-mm-dd.dat
my $filename="/home/monitor/data/".$daystring.".dat";
#print($dayn);

if(! $ ARGV [ 0 ]
[解决办法]
!$ ARGV[1] )
  {print_usage();
  exit(1);
  }
my $max= $ ARGV [ 0 ];
my $min= $ ARGV [ 1 ];
if($min > $max)
{
  printf "参数错误,最小值大于最大值";
  exit $ERRORS{"UNKNOWN"};
 }
# 开始读取文件
open (INFILE,"<$filename" ) or  die "Unable to open file\n";
#open (INFILE,"c:/default.dat" ) or  die "Unable to open file\n";
binmode (INFILE);
my $buffer;
my $time=0;
my $cpu=0;my $net=0;my $usernum=0;
my $num=0;
while(read(INFILE,$buffer,28))
{
    ($time,$cpu,$net,$usernum) = unpack("L s f i",$buffer);

    $num+=1;
   #  printf "Time is %d,net is %f Number of User = %d\n", $time,$net,$usernum;
}
$time=localtime($time);
close(INFILE);
if($usernum<$min)
{
printf "在线人数异常,时间:%s 流量:%f ,在线人数:%d", $time,$net,$usernum;
exit $ERRORS{"CRITICAL"};
}
elsif($usernum>$max)
{
printf "在线人数异常高,时间:%s  流量:%f ,在线人数:%d" ,$time,$net,$usernum;
exit $ERRORS{"WARNING"};
}
else
{
printf "在线人数正常,时间:%s 流量:%f ,在线人数:%d"  ,$time,$net,$usernum;
exit $ERRORS{"OK"};
}

sub print_usage {
  print <<EOTXT;
Usage: check_log [-max maxnum] [-min minnum]
EOTXT
}

热点排行