热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用脚本实时显示Linux网络流量

文章标题:用脚本实时显示Linux网络流量。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类
在GUI下面,有一大把的工具可以显示网络流量,那么,命令行下面怎么办?

显然办法是有的,比如,ifconfig,会有这样的输出:
          RX bytes:1224128649 (1.1 GiB)  TX bytes:34114947 (32.5 MiB)

过一会再看,数值有所变化,两者的差值就是过去一段时间的流量。可是,这也太不人性化了……

正所谓自己动手,丰衣足食,我们自己来写一个脚本,实时显示并刷新!

脚本如下,还是哪句话,本人功力有限,写脚本的原则是够用就好。
#!/bin/bash

if [ -n "$1" ]; then
  eth_name=$1
else
  eth_name="eth0"
fi

i=0

send_o=`ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'`
recv_o=`ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}'`
send_n=$send_o
recv_n=$recv_o

while [ $i -le 100000 ]; do
  send_l=$send_n
  recv_l=$recv_n
  sleep 1
  send_n=`ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'`
  recv_n=`ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}'`
  i=`expr $i + 1`
  send_r=`expr $send_n - $send_l`
  recv_r=`expr $recv_n - $recv_l`
  total_r=`expr $send_r + $recv_r`
  send_ra=`expr \( $send_n - $send_o \) / $i`
  recv_ra=`expr \( $recv_n - $recv_o \) / $i`
  total_ra=`expr $send_ra + $recv_ra`
  sendn=`ifconfig $eth_name | grep bytes | awk -F \( '{print $3}' | awk -F \) '{print $1}'`
  recvn=`ifconfig $eth_name | grep bytes | awk -F \( '{print $2}' | awk -F \) '{print $1}'`
  clear
  echo  "Last second  :   Send rate: $send_r Bytes/sec  Recv rate: $recv_r Bytes/sec  Total rate: $total_r Bytes/sec"
  echo  "Average value:   Send rate: $send_ra Bytes/sec  Recv rate: $recv_ra Bytes/sec  Total rate: $total_ra Bytes/sec"
  echo  "Total traffic after startup:    Send traffic: $sendn  Recv traffic: $recvn"
done

该脚本(假设名叫traffic)默认显示eth0的流量,如果你有多个网卡,请将网卡作为参数传进去,比如:
./traffic  eth1

运行结果如下:

推荐阅读
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 每种编程语言都有其独特的完成任务的方式,这也说明了为什么有这么多语言可供选择。在JimHall的《不同的编程语言如何完成相同的事情》文章中,他演示了13种不同的语言如何使用不同的语 ... [详细]
  • Linux bash 命令行下实现可视化文件或文件夹浏览
    Linuxbash命令行下实现可视化文件或文件夹浏览  有时候部署环境,需要配置文件路径或者载入相应的配置文件。这种情况下,如果用传统的手动修改配置的方式配置,会比较容易出意外(比 ... [详细]
  • Linux中tput命令怎么用
    这篇文章主要介绍Linux中tput命令怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux常用命令tput命令将通过ter ... [详细]
  • 如何在Windows上使用Gitee创建远程仓库
    本文详细记录了在Windows系统上使用Gitee创建远程仓库的步骤,帮助解决无法注册GitHub的问题。 ... [详细]
  • 阿里云服务器搭建详解——Ubuntu
    由于自己电脑配置跟不上,双系统一开,整个电脑就会变得非常卡顿,所以决定在阿里云买一个云服务器。听朋友说,学生买的话是非常便宜 ... [详细]
  • 解决 PRVF-5637 错误的方法
    本文详细介绍了如何解决 PRVF-5637 错误,通过修改 nslookup 脚本,确保系统能够正常运行。 ... [详细]
  • 本文介绍了如何创建和运行一个简单的 Bash 脚本,包括创建脚本文件、编写输出指令、赋予执行权限和运行脚本的基本步骤。 ... [详细]
  • 在 Mac 上配置 NDK
    本文详细介绍了如何在 Mac 上配置 Android NDK,包括设置环境变量和解决常见问题的方法。 ... [详细]
  • LDAP服务器配置与管理
    本文介绍如何通过安装和配置SSSD服务来统一管理用户账户信息,并实现其他系统的登录调用。通过图形化交互界面配置LDAP服务器,确保用户账户信息的集中管理和安全访问。 ... [详细]
  • Git Bash 配置 SSH 免密登录及 Gitee SSH 密钥设置
    本文详细介绍了如何在 Git Bash 中配置 SSH 免密登录,并将生成的 SSH 密钥添加到 Gitee 账户中,以实现无需每次输入密码即可进行代码推送。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • Docker 中创建 CentOS 容器并安装 MySQL 进行本地连接
    本文详细介绍了如何在 Docker 中创建 CentOS 容器,并在容器中安装 MySQL 以实现本地连接。文章内容包括镜像拉取、容器创建、MySQL 安装与配置等步骤。 ... [详细]
author-avatar
我才是陈墨_773
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有