理论上能正常运行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实时输出指定网卡流量相关推荐

  1. linux 限制带宽命令,Linux服务器限制网络带宽流量速率(限制应用程序和指定网卡的流量)

    linux 限制带宽命令,Linux服务器限制网络带宽流量速率 一.限制应用程序的网络流量速率 1.trickle介绍 2.如何判断trickle对应用程序是否有效? 3.Linux安装Trickle ...

  2. linux 限制带宽命令,在 Linux 中限制网络带宽使用(限制指定程序和指定网卡的流量)...

    在本文中,我将为你描述两种在 Linux 中限制网络流量速率的不同方法. 在 Linux 中限制一个应用的速率 限制网络流量速率的一种方法是通过一个名为 trickle的命令行工具.通过在程序运行时, ...

  3. 多网卡下如何配置指定IP走某个路由器(适用于外网不通,但是钉钉服务器通的情况)...

    # 多网卡下如何配置指定IP走某个路由器(适用于外网不通,但是钉钉服务器通的情况) ## 如何查看一个进程建立的网络连接,方式一 - 查看进程pid `ps -ef|grep dingtalk` - ...

  4. python连接linux服务器并使用命令_python基于paramiko模块实现远程连接Linux虚拟机(服务器)并执行指定命令返回输出结果...

    对于开发者来说,windows是我们接触最多的操作系统了,但是Linux是我们必不可少的一项重要技能,很多服务或者应用都需要在Linux下运行,掌握Linux系统的基本使用也是非常重要的,今天有一个需 ...

  5. 【Linux 内核】线程调度示例一 ② ( 获取指定调度策略的最大和最小优先级 | 代码示例 )

    文章目录 一.获取指定调度策略的最大和最小优先级函数 二.获取指定调度策略的最大和最小优先级代码示例 一.获取指定调度策略的最大和最小优先级函数 Linux 内核中 , 通过下面 222 个函数 , ...

  6. 利用iptables来配置linux禁止所有端口登陆和开放指定端口

    原文地址:http://www.2cto.com/Article/201109/103089.html 利用iptables来配置linux禁止所有端口登陆和开放指定端口 1.关闭所有的 INPUT ...

  7. Linux用某一用户创建文件,Linux创建用户,并赋予管理指定目录的权限

    Linux创建用户,并赋予管理指定目录的权限 一.创建用户 1.创建用户: useradd 用户名 2.设置密码: passwd userName 随后会提示输入密码 二.赋予权限 Linux给用户和 ...

  8. Linux系统下授权MySQL账户访问指定数据库和数据库操作

    Linux系统下授权MySQL账户访问指定数据库 需求: 1.在MySQL中创建数据库mydata 2.新建MySQL账户admin密码123456 3.赋予账户admin对数据库mydata具有完全 ...

  9. Python 3.10版本及其依赖项 Linux下源码编译 安装到指定路径/目录

    Python 3.10版本及其依赖项 Linux下源码编译 安装到指定路径/目录 安装需求 准备工作 Python及其依赖项 libffi glibc GDBM mpdecimal bz2 xz re ...

  10. linux怎么运行脚本文件路径,关于linux中执行脚本或程序时指定的路径

    假设/mnt/bin 目录下存在一个名为 hello.sh 的可执行文件. 1. 若当前目录是 /mnt/bin ,可以使用 ./hello.sh 来执行这个可执行文件,但是使用 hello.sh 就 ...

最新文章

  1. HDLBits 系列(21)LFSR(线性反馈移位寄存器)
  2. Python访问MySQL数据库
  3. Maven——Maven概述
  4. Primer c++ 第5版pdf
  5. “模板”学习笔记(7)-----数组模板+对象数组举例
  6. 【设计模式】之原型模式详解与应用(五)
  7. Matlab中fit函数的局限以及其解决方案
  8. 有关于成长的七个关键词
  9. [组合] UOJ#308. 【UNR #2】UOJ拯救计划
  10. 六月回顾 | 盛夏已至,不负每一次期待
  11. 组网胖模式_胖瘦AP组网优劣对比
  12. Beyond Compare4中文版免费版上线
  13. 响应式网站建设有什么优势?
  14. HDU 6595 Everything Is Generated In Equal Probability(概率+组合数)
  15. 【智能路由器】openwrt创建用户软件包
  16. ext3分区修复linux,ext3文件系统超级块损坏修复
  17. Qt自制简易好看的日志系统
  18. mysql内数据离散化,R语言数据预处理操作——离散化(分箱)
  19. CRSNet: Dilated Convolutional Neural Networks for Underatanding the Highly Congested Scenes
  20. 1069 微博转发抽奖 (极简)

热门文章

  1. 聊聊NPS-提升用户体验的终极问题
  2. Python面向对象基础(下)—Python Day9
  3. 计算机的颜色英语怎么说,颜色的英文是什么怎么说
  4. 多开夜神模拟器adb连接
  5. 英语魔法师之语法俱乐部 | 笔记2 | 初级句型—简单句 | Chapter1—基本句型及补语
  6. 【Python】监控GPU温度
  7. c51单片机音乐门铃C语言程序,51单片机音乐门铃的设计
  8. 大数据 与 云计算 的关系
  9. 两阶段最小二乘法原理_什么是两阶段最小二乘法(2sls)?
  10. 联发科MTK工程模式(中文对照版本)和测试模式指令