python监控网卡流量、CPU使用率

def os_get_data(host,user,password):
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh_client.connect(host, 22, user, password)
    std_in_net, std_out_net, std_err_net = ssh_client.exec_command('cat /proc/net/dev')
    std_in_cpu, std_out_cpu, std_err_cpu = ssh_client.exec_command('cat /proc/stat | grep "cpu "')

    stdout_net = std_out_net.read().decode()
    stderr_net = std_err_net.read().decode()

    stdout_cpu = std_out_cpu.read().decode()
    stderr_cpu = std_err_cpu.read().decode()

    if stderr_net != "":
        print(stderr_net)
    else:
        list_net = stdout_net.split('\n')
        for each_net in list_net:
            if each_net.find('eth0') > 0:
                list_eth0 = each_net.split(":")[1]
                recv = float(list_eth0.split()[0])
                send = float(list_eth0.split()[8])

        list_eth0 = list_net[3].split(":")[1]
        recv = float(list_eth0.split()[0])
        send = float(list_eth0.split()[8])

    if stderr_cpu != "":
        print(stderr_cpu)
    else:
        cpu_time_list = re.findall('\d+', stdout_cpu)
        cpu_idle = cpu_time_list[3]
        total_cpu_time = 0
        for t in cpu_time_list:
            total_cpu_time = total_cpu_time + int(t)
    return (recv, send ,total_cpu_time,cpu_idle)

# 网卡流量,CPU使用率
def os_get_info(host,user,password):
    # 第一次采集
    recv_first,send_first,total_cpu_time1,cpu_idle1 = os_get_data(host,user,password)
    time.sleep(1)
    # 第二次采集
    recv_second,send_second,total_cpu_time2,cpu_idle2 = os_get_data(host,user,password)

    recv_data = round((recv_second - recv_first)/1024,2)
    send_data = round((send_second - send_first)/1024,2)

    cpu_usage = round(1 - (float(cpu_idle2) - float(cpu_idle1)) / (float(total_cpu_time2) - float(total_cpu_time1)), 2)

    return(recv_data,send_data,cpu_usage)

if __name__ == '__main__':
    print os_get_info('192.168.48.10','root','oracle')

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值