检测服务器指标-附pthon代码

目的:

通过代码的形式,获取服务器的信息,并做成一个表格。

缘由:

校招生,渣本,毕业上班,想着可能会面临定期检测多台服务器的设备状态,所以写个脚本避免后期无脑一台台ssh。

不足:

代码能够运行,暂时能达到现在所需要的效果,但是依旧有许多地方需要修改。

实现代码:

import paramiko
import xlwt
import xlrd
import re
from xlutils.copy import copy
import threading
#连接的服务器
data = [
    {'host': '192.168.129.129', 'user': 'root', 'password': '123qwe'}
]
#将要执行的命令
command = {
           '剩余内存(KB)':'cat /proc/meminfo | grep MemFree',
           '总共内存(KB)':'cat /proc/meminfo | grep MemTotal',
           '物理处理器数量':'cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l',
           '处理器核数':'cat /proc/cpuinfo | grep "cpu cores" | uniq',
           }
#创建EXCEL
def excel_menu():
    workbook = xlwt.Workbook(encoding='utf-8')
    worksheet = workbook.add_sheet('MyWorksheet',cell_overwrite_ok=True)

    worksheet.write(0, 0, label='您点检的设备')
    for i in range(0,len(data)):
        worksheet.write(i+1,0, label=data[i]['host'])
    k=0
    for i in command:
        worksheet.write(0,k+1,label=i)
        k+=1
    workbook.save('服务器点检表.xls')

#获取单个服务器的data,存入列表
def get_data(hostname,username,password):
    L=[]
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 允许连接不在know_hosts文件中的主机
    try:
        ssh.connect(hostname=hostname, username=username, password=password)
        #有疑问,到底要不要加
        for key, value in command.items():
            stdin, stdout, stderr = ssh.exec_command(value)
            res, err = stdout.read(), stderr.read()
            res = re.findall('\d', str(res, 'utf8'))
            res = int(''.join(res))
            L.append(res)
    except:
        print('请检查'+hostname+'的网络连接')

    return L


#对单个服务器数据进行excel插入
def insert_to_excel(hang,datas):
    DX = xlrd.open_workbook('服务器点检表.xls')
    w = copy(DX)
    sheet = w.get_sheet(0)
    # 打开sheet
    for i in range(0,len(datas)):
        sheet.write(hang, i+1, label=str(datas[i]))
    # 修改内容
    for i in range(0,10):
        sheet.col(i).width = 15*256
    w.save('服务器点检表.xls')
    # 保存sheet

#创建表格
excel_menu()
#行自加
hang= 0

#main函数
def run(host,user,password,hang):
    w = get_data(host,user,password)
    insert_to_excel(hang, w)



#多线程
for  ip in data:
    hang+=1
    T =threading.Thread(target=run,args=(ip['host'],ip['user'],ip['password'],hang,))
    T.start()
    T.join()

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值