用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会导致数据混乱。



  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值