Python 抓包获取网卡字节流

分类:Python

  1. import pcap 
  2.     import dpkt 
  3.      
  4.     aaa='a' 
  5.     bbb='b' 
  6.     pc=pcap.pcap()    #注,参数可为网卡名,如eth0 
  7.     pc.setfilter('tcp port 80')    #设置监听过滤器 
  8.      
  9.     for ptime,pdata in pc:    #ptime为收到时间,pdata为收到数据 
  10.         p=dpkt.ethernet.Ethernet(pdata) 
  11.         if p.data.__class__.__name__=='IP'
  12.             ip='%d.%d.%d.%d'%tuple(map(ord,list(p.data.dst))) 
  13.             if p.data.data.__class__.__name__=='TCP'
  14.                 if p.data.data.dport==80
  15.                    #print p.data.data.data 
  16.                    sStr1 = p.data.data.data 
  17.                    sStr2 = 'Host: ' 
  18.                    sStr3 = 'Connection' 
  19.                    sStr4 = 'GET /' 
  20.                    sStr5 = ' HTTP/1.1' 
  21.                    nPos = sStr1.find(sStr3) 
  22.                    nPosa = sStr1.find(sStr5)                
  23.                    for n in range(sStr1.find(sStr2)+6,nPos-1)
  24.                        aaa=sStr1[sStr1.find(sStr2)+6:n]                
  25.                    for n in range(sStr1.find(sStr4)+4,nPosa+1):                
  26.                        bbb=sStr1[sStr1.find(sStr4)+4:n] 
  27.                    ccc=aaa+bbb 
  28.                    print ccc

磁盘 I/O 性能监控指标和调优

在介绍磁盘 I/O 监控命令前,我们需要了解磁盘 I/O 性能监控的指标,以及每个指标的所揭示的磁盘某方面的性能。磁盘 I/O 性能监控的指标主要包括:
指标 1:每秒 I/O 数(IOPS 或 tps)
对于磁盘来说,一次磁盘的连续读或者连续写称为一次磁盘 I/O, 磁盘的 IOPS 就是每秒磁盘连续读次数和连续写次数之和。当传输小块不连续数据时,该指标有重要参考意义。

指标 2:吞吐量(Throughput)
指硬盘传输数据流的速度,传输数据为读出数据和写入数据的和。其单位一般为 Kbps, MB/s 等。当传输大块不连续数据的数据,该指标有重要参考作用。

指标 3:平均 I/O 数据尺寸
平均 I/O 数据尺寸为吞吐量除以 I/O 数目,该指标对揭示磁盘使用模式有重要意义。一般来说,如果平均 I/O 数据尺寸小于 32K,可认为磁盘使用模式以随机存取为主;如果平均每次 I/O 数据尺寸大于 32K,可认为磁盘使用模式以顺序存取为主。

指标 4:磁盘活动时间百分比(Utilization)
磁盘处于活动时间的百分比,即磁盘利用率,磁盘在数据传输和处理命令(如寻道)处于活动状态。磁盘利用率与资源争用程度成正比,与性能成反比。也就是说磁盘利用率越高,资源争用就越严重,性能也就越差,响应时间就越长。一般来说,如果磁盘利用率超过 70%,应用进程将花费较长的时间等待 I/O完成,因为绝大多数进程在等待过程中将被阻塞或休眠。

指标 5:服务时间(Service Time)
指磁盘读或写操作执行的时间,包括寻道,旋转时延,和数据传输等时间。其大小一般和磁盘性能有关,CPU/ 内存的负荷也会对其有影响,请求过多也会间接导致服务时间的增加。如果该值持续超过 20ms,一般可考虑会对上层应用产生影响。

指标 6:I/O 等待队列长度(Queue Length)
指待处理的 I/O 请求的数目,如果 I/O 请求压力持续超出磁盘处理能力,该值将增加。如果单块磁盘的队列长度持续超过 2,一般认为该磁盘存在I/O性能问题。需要注意的是,如果该磁盘为磁盘阵列虚拟的逻辑驱动器,需要再将该值除以组成这个逻辑驱动器的实际物理磁盘数目,以获得平均单块硬盘的I/O 等待队列长度。

指标 7:等待时间(Wait Time)
指磁盘读或写操作等待执行的时间,即在队列中排队的时间。如果 I/O 请求持续超出磁盘处理能力,意味着来不及处理的 I/O 请求不得不在队列中等待较长时间。

通过监控以上指标,并将这些指标数值与历史数据,经验数据以及磁盘标称值对比,必要时结合 CPU、内存、交换分区的使用状况,不难发现磁盘 I/O潜在或已经出现的问题。但如果避免和解决这些问题呢?这就需要利用到磁盘 I/O性能优化方面的知识和技术。限于本文主题和篇幅,仅列出一些常用的优化方法供读者参考:

1.调整数据布局,尽量将 I/O 请求较合理的分配到所有物理磁盘中。
2.对于 RAID 磁盘阵列,尽量使应用程序 I/O 等于条带尺寸或者为条带尺寸的倍数。并选取合适的 RAID 方式,如 RAID10,RAID5。
3.增大磁盘驱动程序的队列深度,但不要超过磁盘的处理能力,否则,部分 I/O 请求会因为丢失而重新发出,这将降低性能。
4.应用缓存技术减少应用存取磁盘的次数,缓存技术可应用在文件系统级别或者应用程序级别。
5.由于多数数据库中已包括经优化后的缓存技术,数据库 I/O 宜直接存取原始磁盘分区(raw partition)或者利用绕过文件系统缓存的 DIO 技术(direct IO)
6.利用内存读写带宽远比直接磁盘 I/O 操作性能优越的特点,将频繁访问的文件或数据置于内存中。

Linux shell常用快捷键

分类:Shell下面是一些shell的常用快捷键,快捷键玩熟悉了在一定程度上是可以提高工作效率:

Ctrl + a 切换到命令行开始
Ctrl + e 切换到命令行末尾
Ctrl + l 清除屏幕内容
Ctrl + u 清除光标之前的内容
Ctrl + k 清除光标之后的内容
Ctrl + h 类似于退格键
Ctrl + r 在历史命令中查找 (这个非常好用,输入关键字就调出以前的命令了)
Ctrl + c 终止命令
Ctrl + d 退出shell
Ctrl + z 转入后台运行..

ALT键比较少用,因为很多地方与远程登陆工具是有冲突的..

Alt + f 切换光标前的字母
Alt + b 切换光标后的字母

Linux 特殊权限SUID,SGID,SBIT详解

分类:RedHat大家都知道文件和目录的权限最常见的有三个.可读(r)..可写(w)..可执行(x)..它们的级别分别是4..2..1..我们有时也会发现有些文件所属主的权限上带有一个s的标志位.目录的所属组上也带有s标志位.很多人不理解这是为什么….下面我们举例来看一下…

#ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 19876 Jul 17 2006 /usr/bin/passwd

这个文件的所属主的x标志位上变成了s,这时称为set uid ..简写就是suid..其实这个文件属性也没有特殊的含义..当这个s标志位出现在一些脚本上时,它就有意义了…比方说我我们有一个脚本名为sum.sh.这个脚本的权限如下:

-rwsrwxr-x 1 root root 117 Feb 6 20:46 sum.sh

这个脚本的所属主和所属组为root.我们当然可以以root的用户的身份执行它..我们还可以看见它的所属主的标志位上有个s..其他人有读取和执行的权限.假如我们现在有个普通用户名为redhat..现在切换到redhat..执行此脚本..表面上我们看是执行成功了..其实我们是借助root用户的身份来执行它..而不是redhat..这就是suid的特性….

继续阅读 »

Linux 10个最酷的单行命令

分类:RedHat

sudo !!

以 root 帐户执行上一条命令。

python -m SimpleHTTPServer

利用 Python 搭建一个简单的 Web 服务器,可通过 http://$HOSTNAME:8000 访问。

:w !sudo tee %

在 Vim 中无需权限保存编辑的文件。

继续阅读 »


返回顶部