用python做自动化测试--Python实现远程性能监控(2)

telnetoperate.py代码说明:

1.  __init__(self,host,prompt,account,accountPasswd,RootPasswd="")

  这里用到了多个登陆账号(account,root),原因是我们的机器开始不能直接root登陆,需要先用普通用户登陆,才能切换到root账号,所以这里出现了account, rootPasswd这2个参数,如果你的机器可以直接root账号登陆,或者你不需要切换到root账号,可以就用account, accountPasswd就可以了。

  prompt是命令行提示符,机器配置不一样,可能是$或者#,用来判断一个命令执行是否完成。


2.  send_command(self,command,sleeptime=0.5)

    这里sleeptime=0.5是为了避免很多机器性能不好,命令执行比较慢,命令还没返回,会导致获取命令后的结果失败。如果你嫌这样太慢了,可以调用的时候send_command(command,0)

3. process_is_running(self,process_name,output_string)

  在远程机器上执行ps -ef | grep process_name  | grep -v grep,判断输出结果是不是期望的 output_string, 这里使用的时候,你先手工执行下确保你这个过滤出来的进程是你期望的。这种其结果的唯一性


监控远程机器:

#simplemonitor.py

#!/usr/bin/env python
#coding=utf-8

import time
import telnetoperate



remote_server=telnetoperate.TelnetAction("192.168.23.235","#","user","passwd123")
#get cpu information
cpu=remote_server.get_output("sar 1 1 |tail -1")
memory=remote_server.get_output("top | head -5 |grep -i memory")
io=remote_server.get_output("iostat -x 1 2|grep -v '^$' |grep -vi 'dev'")
    

这样在任何一台机器上就可以实现监控远程多个机器了,信息集中化管理,方便进一步分析。如果你想cpu, memory, io独立的监控,可以多线程或者起多个监控进程,在多线程中需要注意的时候,必须对每个监控实例建立一个telnet连接,get_output是从telnet 建立的socket里面去获取数据,如果多个监控实例用同一个socket会导致数据混乱。



你可能感兴趣的:(性能测试,自动化测试,python,用Python做自动化测试,python,自动化测试,telnet)