用python做测试--Python实现远程性能监控
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, 这里使用的时候,你先手工执行下确保你这个过滤出来的进程是你期望的。这种其结果的唯一性
监控远程机器:
#易做图monitor.py
[python]
#!/usr/bin/env python
#coding=utf-8
import time
import telnetoperate
remote_server=telnetoperate.TelnetAction("192.168.23.235","#","user","passwd123")
#get cpu information www.zzzyk.com
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会导致数据混乱。
补充:Web开发 , Python ,