linux查看某个ip流量--思路一例

简介:

  在我之前的文章中分享过“实时”查看Linux某些网卡流量的小脚本,今天再分享一个查看本机到具体某个ip间的流量的思路。我有这个需求是因为:我们的存储是Dell存储设备通过nfs协议供多台业务机挂载使用,而我有必要了解每台机器和Dell存储之间的流量。

  其实,如果仅仅是要看这个流量,iftop这个软件就很好,通过其自身的选项就能满足了,不需要再做什么额外的工作。

  我的情况是:由于nfs客户机众多,而且虽是挂载一台存储设备但挂载点ip却不一样,并且我想把这个作为一个监控项放到zabbix里,所以我就需要用shell对iftop做进一步的“封装”,以便能够“通用”些且更好的和zabbix结合。

注意:iftop需要root权限,而zabbix-agent一般是以zabbix用户运行且通过zabbix-server调用agent端的自定义脚本时是没有终端(tty)的,这里就需要修改sudo的配置文件了,允许zabbix用户远程执行命令的过程中执行sudo操作。


脚本内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/sh
#在zabbix上监控各机器与nfs server之间的流量
#by ljk 20160803
 
 
net= '192.168.1.*'     #内网网段
nfs_subnet= '192.168.1.2[0-9]{2}'     #nfs所在ip的正则
#获取nfs server的真实ip,前提是每台server无论几个挂载点,都只从一个ip挂载
nfs_ip=$( df  -h| egrep  "$nfs_subnet:" | awk  -F :  '{print $1}' | sort | uniq )
 
cd  /etc/sysconfig/network-scripts
for  dev  in  $( ls  ifcfg-*| awk  -F -  '{print $2}' ); do
     ip addr show $dev| grep  '192.168.1.*'  > /dev/null     #判断哪个网卡有内网网段ip
     if  [ $? - eq  0 ]; then
         using_dev=$dev     #拥有内网ip的网卡名赋予变量using_dev
         break
     fi
done
 
if  "$1"  ==  "request"  ]; then
     result=$( sudo  iftop -i $using_dev -n -t -s 10 2> /dev/null  egrep  -B 1 $nfs_ip| awk  '$(NF-4)=="=>" {print $(NF-1)}' )
 
elif  "$1"  ==  "response"  ]; then
     result=$( sudo  iftop -i $using_dev -n -t -s 10 2> /dev/null  egrep  -B 1 $nfs_ip| awk  '$(NF-4)=="<=" {print $(NF-1)}' )
fi
 
#下面部分是为了适用于zabbix而做的一些额外的工作
#iftop出来的结果为(6.60Mb 208Kb 320b等),将其结果整合进zabbix时要去掉这些单位并对数值做转换(zabbix里我统一用b做单位,只给zabbix传数值)
if  [ -z  "$result"  ]; then
     echo  0
else
     num=$( echo  $result| tr  -d  "a-zA-Z" )
     unit=` echo  ${result: -2:1}`
     case  $unit  in
         [kK])  echo  "$num*1024" | bc ;;
         [mM])  echo  "$num*1024*1024" | bc ;;
         [gG])  echo  "$num*1024*1024*1024" | bc ;;
            *)  echo  "$num"
     esac
fi





     本文转自kai404 51CTO博客,原文链接:http://blog.51cto.com/kaifly/1840121 ,如需转载请自行联系原作者

相关文章
|
2月前
|
Shell Linux 网络安全
linux系统防CC攻击自动拉黑IP增强版(Shell脚本)
linux系统防CC攻击自动拉黑IP增强版(Shell脚本)
21 0
|
2月前
|
网络协议 Ubuntu Linux
Linux 动态/静态配置ip网卡信息
Linux 动态/静态配置ip网卡信息
49 0
|
9天前
|
Ubuntu 网络协议 Linux
|
10天前
|
JSON 网络协议 Linux
Linux ip命令:网络的瑞士军刀
【4月更文挑战第25天】
17 1
|
12天前
|
网络协议 Linux 开发工具
|
14天前
|
监控 Linux 网络安全
Linux服务器如何查询连接服务器的IP
【4月更文挑战第17天】Linux服务器如何查询连接服务器的IP
14 1
|
15天前
|
Ubuntu Linux
Linux(Ubuntu)系统临时IP以及静态IP配置(关闭、启动网卡等操作)
请注意,以上步骤是在临时基础上进行配置的。如果要永久保存静态IP地址,通常还需要修改 `/etc/network/interfaces`文件,以便在系统重启后保持配置。同时,确保备份相关配置文件以防止出现问题。
31 1
|
16天前
|
Linux 网络安全
【Linux】如何修改为固定ip和增加端口
【Linux】如何修改为固定ip和增加端口
8 1
|
17天前
|
Linux
【Linux】虚拟机ip端口如何固定
【Linux】虚拟机ip端口如何固定
9 0
|
17天前
|
Linux
Linux(23) Linux 4G模块不能获取IP排查思路
Linux(23) Linux 4G模块不能获取IP排查思路
35 0