linux指定网卡走流量,Linux实时输出指定网卡流量
理论上能正常运行ifconfig的Linux操作系统都可适用这个脚本(当然一般默认会安装perl),打印实时网卡流量和丢包数,好久前当时为了验证输出流量随手写的,多次想改得漂亮点,一直没动手,就这样吧,以免用的时候找不到
其实我还想评论自己一句:把Perl写得跟C语言新手一样,真是Perl的悲哀!!!
#!/usr/bin/perl -w
####################################
#print bps, pkt dropped per second
#Can get four nic
#HuiLi
####################################
use 5.010;
print "Sorry, please run the script with a NIC name as ARGV !\n" and exit if !@ARGV;
my $G = 1024 * 1024 * 1024;
my $M = 1024 * 1024;
my $K = 1024;
sub traffic_data {
my ($nic, $bps, $pkt) = @_;
if ($bps >= $G) {
$bps /= $G;
print "Nic $nic bps: " . substr($bps, 0, 5) . " Gbits/s dropped: $pkt pkts/s\n";
} elsif ($bps >= $M and $bps < $G) {
$bps /= $M;
print "Nic $nic bps: " . substr($bps, 0, 5) . " Mbits/s dropped: $pkt pkts/s\n";
} elsif ($bps >= $K and $bps < $M) {
$bps /= $K;
print "Nic $nic bps: " . substr($bps, 0, 5) . " Kbits/s dropped: $pkt pkts/s\n";
} elsif ($bps < $K and $bps >= 0) {
print "Nic $nic bps: " . substr($bps, 0, 5) . " bits/s dropped: $pkt pkts/s\n";
} else {
print "Nic $nic bps: " . 0 . " bits/s dropped: $pkt pkts/s\n";
}
}
sub nic_traffic {
my ($nic, $flag) = @_;
my $drop = $traffic = $pkt = $bps = 0;
state $last_traffic1 = $last_drop1 = 0;
state $last_traffic2 = $last_drop2 = 0;
state $last_traffic3 = $last_drop3 = 0;
state $last_traffic4 = $last_drop4 = 0;
open my($NIC), "ifconfig $nic |";
while(){
$drop = $1 if /\s+RX\s+packets.*dropped:(\d+)\s+.*/;
$traffic = $1 if /\s+RX\s+bytes:(\d+)/;
}
close($NIC);
if ($flag == 0){
$pkt = $drop - $last_drop1;
$bps = ($traffic - $last_traffic1) * 8;
traffic_data($nic, $bps, $pkt);
$last_traffic1 = $traffic;
$last_drop1 = $drop;
} elsif ($flag == 1){
$pkt = $drop - $last_drop2;
$bps = ($traffic - $last_traffic2) * 8;
traffic_data($nic, $bps, $pkt);
$last_traffic2 = $traffic;
$last_drop2 = $drop;
} elsif ($flag == 2){
$pkt = $drop - $last_drop3;
$bps = ($traffic - $last_traffic3) * 8;
traffic_data($nic, $bps, $pkt);
$last_traffic3 = $traffic;
$last_drop3 = $drop;
} elsif ($flag == 3){
$pkt = $drop - $last_drop4;
$bps = ($traffic - $last_traffic4) * 8;
traffic_data($nic, $bps, $pkt);
$last_traffic4 = $traffic;
$last_drop4 = $drop;
}
}
while(1){
my $flag = 0;
print "########################################################################\n";
foreach my $nic (@ARGV) {
nic_traffic($nic, $flag);
$flag = ($flag + 1) % 4;
}
select(undef, undef, undef, 1);
}
运行的时候最多可以带4个参数,也就是最多可以查看4个网口流量情况,想加参数的自行修改nic_traffic函数里的if/else,打印的第一次请无视,会减去上一秒(而上一秒根本没有)的结果,后面都是后一秒减去前一秒的数据,运行如下:
[lihui@localhost ~]# ./nic_traffic.pl eth0 xge0 xge1
#######################################################################################
Nic eth0 bps: 13.33 Kbits/s dropped: 0 pkts/s
Nic xge0 bps: 9.073 Gbits/s dropped: 0 pkts/s
Nic xge1 bps: 0 bits/s dropped: 0 pkts/s
#######################################################################################
Nic eth0 bps: 23.27 Kbits/s dropped: 0 pkts/s
Nic xge0 bps: 9.303 Gbits/s dropped: 0 pkts/s
Nic xge1 bps: 0 bits/s dropped: 0 pkts/s
#######################################################################################
Nic eth0 bps: 11.57 Kbits/s dropped: 0 pkts/s
Nic xge0 bps: 9.494 Gbits/s dropped: 0 pkts/s
Nic xge1 bps: 0 bits/s dropped: 0 pkts/s
#######################################################################################
Nic eth0 bps: 9.187 Kbits/s dropped: 0 pkts/s
Nic xge0 bps: 9.360 Gbits/s dropped: 0 pkts/s
Nic xge1 bps: 0 bits/s dropped: 0 pkts/s
#######################################################################################
Nic eth0 bps: 10.39 Kbits/s dropped: 0 pkts/s
Nic xge0 bps: 9.490 Gbits/s dropped: 0 pkts/s
Nic xge1 bps: 0 bits/s dropped: 0 pkts/s
#######################################################################################
Nic eth0 bps: 13.14 Kbits/s dropped: 0 pkts/s
Nic xge0 bps: 9.370 Gbits/s dropped: 0 pkts/s
Nic xge1 bps: 0 bits/s dropped: 0 pkts/s
linux指定网卡走流量,Linux实时输出指定网卡流量相关推荐
- linux 限制带宽命令,Linux服务器限制网络带宽流量速率(限制应用程序和指定网卡的流量)
linux 限制带宽命令,Linux服务器限制网络带宽流量速率 一.限制应用程序的网络流量速率 1.trickle介绍 2.如何判断trickle对应用程序是否有效? 3.Linux安装Trickle ...
- linux 限制带宽命令,在 Linux 中限制网络带宽使用(限制指定程序和指定网卡的流量)...
在本文中,我将为你描述两种在 Linux 中限制网络流量速率的不同方法. 在 Linux 中限制一个应用的速率 限制网络流量速率的一种方法是通过一个名为 trickle的命令行工具.通过在程序运行时, ...
- 多网卡下如何配置指定IP走某个路由器(适用于外网不通,但是钉钉服务器通的情况)...
# 多网卡下如何配置指定IP走某个路由器(适用于外网不通,但是钉钉服务器通的情况) ## 如何查看一个进程建立的网络连接,方式一 - 查看进程pid `ps -ef|grep dingtalk` - ...
- python连接linux服务器并使用命令_python基于paramiko模块实现远程连接Linux虚拟机(服务器)并执行指定命令返回输出结果...
对于开发者来说,windows是我们接触最多的操作系统了,但是Linux是我们必不可少的一项重要技能,很多服务或者应用都需要在Linux下运行,掌握Linux系统的基本使用也是非常重要的,今天有一个需 ...
- 【Linux 内核】线程调度示例一 ② ( 获取指定调度策略的最大和最小优先级 | 代码示例 )
文章目录 一.获取指定调度策略的最大和最小优先级函数 二.获取指定调度策略的最大和最小优先级代码示例 一.获取指定调度策略的最大和最小优先级函数 Linux 内核中 , 通过下面 222 个函数 , ...
- 利用iptables来配置linux禁止所有端口登陆和开放指定端口
原文地址:http://www.2cto.com/Article/201109/103089.html 利用iptables来配置linux禁止所有端口登陆和开放指定端口 1.关闭所有的 INPUT ...
- Linux用某一用户创建文件,Linux创建用户,并赋予管理指定目录的权限
Linux创建用户,并赋予管理指定目录的权限 一.创建用户 1.创建用户: useradd 用户名 2.设置密码: passwd userName 随后会提示输入密码 二.赋予权限 Linux给用户和 ...
- Linux系统下授权MySQL账户访问指定数据库和数据库操作
Linux系统下授权MySQL账户访问指定数据库 需求: 1.在MySQL中创建数据库mydata 2.新建MySQL账户admin密码123456 3.赋予账户admin对数据库mydata具有完全 ...
- Python 3.10版本及其依赖项 Linux下源码编译 安装到指定路径/目录
Python 3.10版本及其依赖项 Linux下源码编译 安装到指定路径/目录 安装需求 准备工作 Python及其依赖项 libffi glibc GDBM mpdecimal bz2 xz re ...
- linux怎么运行脚本文件路径,关于linux中执行脚本或程序时指定的路径
假设/mnt/bin 目录下存在一个名为 hello.sh 的可执行文件. 1. 若当前目录是 /mnt/bin ,可以使用 ./hello.sh 来执行这个可执行文件,但是使用 hello.sh 就 ...
最新文章
- HDLBits 系列(21)LFSR(线性反馈移位寄存器)
- Python访问MySQL数据库
- Maven——Maven概述
- Primer c++ 第5版pdf
- “模板”学习笔记(7)-----数组模板+对象数组举例
- 【设计模式】之原型模式详解与应用(五)
- Matlab中fit函数的局限以及其解决方案
- 有关于成长的七个关键词
- [组合] UOJ#308. 【UNR #2】UOJ拯救计划
- 六月回顾 | 盛夏已至,不负每一次期待
- 组网胖模式_胖瘦AP组网优劣对比
- Beyond Compare4中文版免费版上线
- 响应式网站建设有什么优势?
- HDU 6595 Everything Is Generated In Equal Probability(概率+组合数)
- 【智能路由器】openwrt创建用户软件包
- ext3分区修复linux,ext3文件系统超级块损坏修复
- Qt自制简易好看的日志系统
- mysql内数据离散化,R语言数据预处理操作——离散化(分箱)
- CRSNet: Dilated Convolutional Neural Networks for Underatanding the Highly Congested Scenes
- 1069 微博转发抽奖 (极简)