python流量监控,python监控历程网络流量

python监控进程网络流量

rt,各位大哥,python2.7+有没有高效监控进程级网络IO的方法?不用pcap

我只需要知道固定时间间隔中,客户端软件与服务器有没有交互就可以了;

或者给我讲解一下,下面这个代码

import socket

import struct

import thread

import threading

import time

import os

net_data = {}

d_net_info = {}

lock = threading.Lock()

def print_data():

while True:

lock.acquire()

for key in net_data:

print "%s %s\n"%(key, net_data[key])

lock.release()

time.sleep(5);

def get_net_info():

net_info = os.popen('netstat -nbo').readlines()

for l in net_info[4:]:

s = l.split()

if len(s)>2:

key = "%s %s"%(s[1],s[2])

key2 = "%s %s"%(s[2],s[1])

else:

if not d_net_info.has_key(key):

d_net_info[key] = s[0]

d_net_info[key2] = s[0]

def get_packet():

HOST = socket.gethostbyname(socket.gethostname())

s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)

s.bind((HOST, 0))

s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)

s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)

net_data["unknow"] = 0

while True:

buf = s.recvfrom(65565)

port = struct.unpack('HH', buf[0][20:24])

src_ip = "%d.%d.%d.%d"%struct.unpack('BBBB', buf[0][12:16])

dest_ip ="%d.%d.%d.%d"%struct.unpack('BBBB', buf[0][16:20])

src_port = socket.htons(port[0])

dest_port = socket.htons(port[1])

data_len = len(buf[0])

key="%s:%d %s:%d"%(src_ip,src_port,dest_ip,dest_port)

if not d_net_info.has_key(key):

get_net_info()

if d_net_info.has_key(key):

key2 ="%s %s"%(key,d_net_info[key])

if net_data.has_key(key2):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值