三九宝宝网宝宝百科宝宝知识

资格认证:Linux系统Perl精简版netstat

11月23日 编辑 39baobao.com

[Linux资格认证:Linux操作系统的运行级别]Linux操作系统自从开始启动至启动完毕需要经历几个不同的阶段,这几个阶段就叫做runlevel,同样,当Linux操作系统关闭时也要经历另外几个不同的runlevel,下面我们就准备详细介绍一...+阅读

写作意图:

Linux系统自带的stat在很多时候抓信息会发现耗CPU很高,特别是在做一些监控系统的时候,发现如果使用了stat,监控系统本身会造成系统负载比较高,因此试着用perl写下,time测试比自带的stat更快更节省资源,考试.大提示欢迎批评,呵呵。

#!/usr/bin/perl

# Written by FinalBSD at 2008-11-20.

# The stat original written by C

# is expensive to me, so this born.

# As long as you retain this notice you

# can do whatever you want with this stuff.

# If we meet some day, and you think

# this stuff is worth it, you can

# buy me a beer in return.

use strict;

use warnings;

use Getopt::Std;

my $tcp = "/proc//tcp";

my $tcp6 = "/proc//tcp6";

my $route = "/proc//route";

my #tcpState = (

"NULL",

"ESTABLISHED" ,

"SYN_SENT",

"SYN_RECV",

"FIN_WAIT1",

"FIN_WAIT2",

"TIME_WAIT",

"CLOSE",

"CLOSE_WAIT",

"LAST_ACK",

"LISTEN",

"CLOSING"

);

my #routeType = (

"NULL",

"U", # UP

"G", # Gateway

"UG" # UP

my %opts;

getopts('nhatsrl', \%opts);

if($opts{h}) {

}

if($opts{r}) {

exit;

}

######## FUNCTION DEFINITION ######

#############################

# Get statistics Information

############################

sub tcp_info($) {

my $file = shift;

open(FH, $file) or die("$!");

my $format = "%-30s %-30s %-10s\n";

printf($format," Local Address"," Foreign Address","State");

while() {

next if /local_address/;

my #data = split;

my $state = $tcpState[hex($data[3])];

# Show listening Sockets.

if($opts{l}){

printf($format,

} else {

printf($format,

}

}

close(FH);

}

#############################

# Convert hex to int

############################

sub hextoint($) {

my $tmp = shift;

my #data;

my #ip;

my $int;

# if he ':', then it's addr:port,else just port.

if( $tmp =~ /:/ ) {

if( $tmp =~ /FFFF/ ) {

#data = split /:/, $tmp;

# break it and do convert later.

#ip = $data[0] =~ /\w{2}/g;

foreach my $index (12..15){

$ip[$index] = hex($ip[$index]);

}

$int = sprintf("%-5s %d.%d.%d.%d:%d", "tcp6",$ip[15], $ip[14], $ip[13], $ip[12], hex($data[1]));

} else {

#data = split /:/, $tmp;

#ip = $data[0] =~ /\w{2}/g;

foreach my $index (0..3){

$ip[$index] = hex($ip[$index]);

}

$int = sprintf("%-s %d.%d.%d.%d:%d", " ",$ip[3], $ip[2], $ip[1], $ip[0], hex($data[1]));

}

} else {

#ip = $tmp =~ /\w{2}/g;

foreach my $index (0..3){

$ip[$index] = hex($ip[$index]);

}

$int = sprintf("%d.%d.%d.%d", hex($ip[3]), hex($ip[2]), hex($ip[1]), hex($ip[0]));

}

return $int;

}

#############################

# Show Kernel route table

############################

sub route_info($) {

my $routefile = shift;

open(ROUTE, $routefile) or die ("Can't open route file!\n");

my $header = "Iface Destination Gateway Flags Genmask\n";

printf("%s", $header);

my $format = "%-5s %-15s %-15s %-5s %-15s\n";

while() {

next if /Iface/;

my #line = split;

my ($iface, $dest, $gw, $flags, $mask ) = ($line[0],

printf($format, $iface, $dest, $gw, $routeType[$flags], $mask );

}

close(ROUTE);

}

#############################

# Show help information

############################

sub usage {

printf("%s\n\n%-30s\n%-30s\n%-30s\n%-30s\n%-30s\n%-30s\n",

"stat written in Perl by FinalBSD.Copyright(c) 2008.",

"-n Show numeric ip and port address.",

"-r Display the kernel routing table.",

"-a Show both listening and non-listening socktes.",

"-t Show only TCP statistics.",

"-l Show only listening sockets.",

"-h Show help.",

);

exit;

}

以下为关联文档:

资格认证:JavaEE中各种打包文件和结构Ja EE中各种打包文件和结构下面介绍在Ja EE应用中常见的包的类型、结构、作用:1--EJB-JAR包:后缀为.jar,EJB模块,包含有Session Bean,Message Driver Bean,Entity Bean;管理这...

物流师职业资格认证考试规则第一章 考场规则第一条 考生在考试前15分钟,凭准考证进入指定考场,入座后将准考证放在桌面左上角。第二条 考试开始后15分钟,迟到考生不得进入考场,开考后30分钟内和考试结束...

Linux资格认证:Ubuntu下对CPU进行降频这两天CPU温度超高,为了解决这个问题,先是找了两块以前台式机上的风扇(一个CPU,一个机箱风扇),和一条USB延长线。接好以后运行了一段时间,发现效果很不明显,大概降了有1度吧,还不知...

资格认证:Vector和ArrayList哪一个更好下面我们从4个方面进行一一探讨API在由Ken Arnold等编著的《Ja Programming Language》(Addison-Wesley, June 2000)一书中有这样的描述,Vector类似于ArrayList.。所有从AP...

微软资格认证:Windows7任务栏详解微软Windows Team的Chaitanya Sareen,20日在开发blog中写了一篇文章,文中详细介绍了微软的下一代操作系统Window 7的任务栏的一些信息.从文章中我们看到了一个有革命意义的...

Linux资格认证:新手必了解DNS服务基本原理我们知道,既可以使用主机名标识一台主机,也可以使用IP地址标识。人们更愿意使用便于记忆的主机名标识符,而路由器则只愿使用长度固定并有层次结构的IP地址。我们可以通过多种...

资格认证:Ubuntu防ARP欺骗arptables现在一直用Ubuntu,很少出现跟人抢IP的事, 也就没有关心过,直到有一天,偶的IP被人用了,从网上找找了资料,发现了arptables这个东东!~思路和LNS的差不多!~~只让偶和网关间是双向通信,...

Linux资格认证:Ubuntu离线安装软件的方法由于公司上网有限制,但是可以通过其他机子上网,所以就查找了下离线安装软件的方法。大概方法是,把apt源设置成本地,但是首先要去下载最新的软件目录包,然后使用apt安装的时候会...

Linux资格认证:通向MySQL神秘王国的图形化之路MySQL GUI Tools是一套图形化桌面应用工具套装,可以用来管理MySQL服务器。该套装工具包含三个工具:MySQL Query Browser、MySQL Administrator和MySQL Migration Assistant(仅...

推荐阅读
图文推荐