仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 721|回复: 8
打印 上一主题 下一主题

[其他Linux] 来讲讲:Linux体系Perl精简版netstat

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 13:58:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
linux系统的文件布置,etc/,opt/目录的内容等;
写作企图:
Linux体系自带的netstat在良多时分抓信息会发明耗CPU很高,出格是在做一些监控体系的时分,发明假如利用了netstat,监控体系自己会形成体系负载对照高,因而试着用perl写下,time测试比自带的netstat更快更节俭资本,接待品评,呵呵。
#!/usr/bin/perl
#WrittenbyFinalBSDat2008-11-20.
#ThenetstatoriginalwrittenbyC
#isexpensivetome,sothisborn.
#Aslongasyouretainthisnoticeyou
#candowhateveryouwantwiththisstuff.
#Ifwemeetsomeday,andyouthink
#thisstuffisworthit,youcan
#buymeabeerinreturn.
usestrict;
usewarnings;
useGetopt::Std;
my$tcp="/proc/net/tcp";
my$tcp6="/proc/net/tcp6";
my$route="/proc/net/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&Gateway
);
my%opts;
getopts(nhatsrl,\%opts);
if($opts{h}){
&usage();
}
if($opts{r}){
&route_info($route);
exit;
}
&tcp_info($tcp);
&tcp_info($tcp6);
######################FUNCTIONDEFINITION###########################
#############################
#GetstatisticsInformation
############################
subtcp_info($){
my$file=shift;
open(FH,$file)ordie("$!");
my$format="%-30s%-30s%-10s
";
printf($format,"LocalAddress","ForeignAddress","State");
while(<FH>){
nextif/local_address/;
my@data=split;
my$state=$tcpState[hex($data[3])];
#ShowlisteningSockets.
if($opts{l}){
printf($format,&hextoint($data[1]),&hextoint($data[2]),$state)if$state=~/LIST/;
}else{
printf($format,&hextoint($data[1]),&hextoint($data[2]),$state);
}
}
close(FH);
}
#############################
#Converthextoint
############################
subhextoint($){
my$tmp=shift;
my@data;
my@ip;
my$int;
#ifhave:,thenitsaddr:port,elsejustport.
if($tmp=~/:/){
if($tmp=~/FFFF/){
@data=split/:/,$tmp;
#breakitanddoconvertlater.
@ip=$data[0]=~/w{2}/g;
foreachmy$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;
foreachmy$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;
foreachmy$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;
}
#############################
#ShowKernelroutetable
############################
subroute_info($){
my$routefile=shift;
open(ROUTE,$routefile)ordie("Cantopenroutefile!
");
my$header="IfaceDestinationGatewayFlagsGenmask
";
printf("%s",$header);
my$format="%-5s%-15s%-15s%-5s%-15s
";
while(<ROUTE>){
nextif/Iface/;
my@line=split;
my($iface,$dest,$gw,$flags,$mask)=($line[0],&hextoint($line[1]),&hextoint($line[2]),hex($line[3]),&hextoint($line[7]));
printf($format,$iface,$dest,$gw,$routeType[$flags],$mask);
}
close(ROUTE);
}
#############################
#Showhelpinformation
############################
subusage{
printf("%s

%-30s
%-30s
%-30s
%-30s
%-30s
%-30s
",
"netstatwritteninPerlbyFinalBSD.Copyright(c)2008.",
"-nShownumericipandportaddress.",
"-rDisplaythekernelroutingtable.",
"-aShowbothlisteningandnon-listeningsocktes.",
"-tShowonlyTCPstatistics.",
"-lShowonlylisteningsockets.",
"-hShowhelp.",
);
exit;
}

</p>
不同版本的Linux命令数量不一样,这里笔者把它们中比较重要的和使用频率最多的命令。
精灵巫婆 该用户已被删除
沙发
发表于 2015-1-17 18:15:24 | 只看该作者
在系统检测不到与Linux兼容的显卡,那么此次安装就可能不支持图形化界面安装,而只能用文本模式安装等等。
爱飞 该用户已被删除
板凳
发表于 2015-1-21 09:08:12 | 只看该作者
发问的时候一定要注意到某些礼节。因为Linux社区是一个松散的组织、也不承担回复每个帖子的义务。它不是技术支持。
简单生活 该用户已被删除
地板
发表于 2015-1-30 13:03:58 | 只看该作者
目前全球有超过一百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,RedhatLinux和DebianLinux是网络管理员的理想选择。
柔情似水 该用户已被删除
5#
发表于 2015-2-6 12:45:47 | 只看该作者
如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。
乐观 该用户已被删除
6#
发表于 2015-3-5 00:08:51 | 只看该作者
永中office 2004增强版安装只需要默认安装即可使用并操作大多与win系统雷同,打印机的配置和管理,记录光盘等。
冷月葬花魂 该用户已被删除
7#
发表于 2015-3-11 21:52:23 | 只看该作者
Linux操作系统这个名词记得在很早以前就听过,但当时并不知道具体是什么样的操作系统,只知道是一个与嵌入式密切相关的操作系统。
再见西城 该用户已被删除
8#
发表于 2015-3-19 14:41:14 | 只看该作者
学习Linux系统在服务中的配置方法及使用方法。Linux在服务器中应用相当广,应对常用的apache,samba,ftp等服务器基本配置清楚了解。[重点,应巩固学习]
老尸 该用户已被删除
9#
发表于 2015-3-28 19:33:19 | 只看该作者
Linux简单,占内存少,特别是对于程序开发人员来说很方便,如果说windows的成功在于其方便用户的窗口管理界面。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-3 22:55

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表