系统环境:CENTOS6,CENTOS7,把要检查的IP地址写在ips.txt,并做好ssh认证
主要检查服务器的CPU,内存,磁盘空间的使用百分比等信息,除了检查根目录以外,还检查了/application分区的使用情况,并打印到EXCEL
# -*- coding: utf-8 -*- import os,sys reload(sys) sys.setdefaultencoding('utf8') import paramiko import xlsxwriter import time def sshexeccmd(ip): tmplist = {} tmplist["ip"]=ip tmplist["diskall"]=None tmplist["diskuse"]=None tmplist["cpuuse"]=None tmplist["momeryall"]=None tmplist["momeryuse"]=None tmplist["appall"]=None tmplist["appuse"]=None try: ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # pkey = paramiko.RSAKey.from_private_key_file('/home/super/.ssh/id_rsa', password='yourpassword') pkey = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa') ssh.connect(hostname=ip,port=22,username='root',pkey=pkey) # stdin, stdout, stderr = ssh.exec_command(cmd) stdindiskall, stdoutdiskall, stderrdiskall = ssh.exec_command("df -hP | awk '/\/$/ {print $2}'") stdindisk, stdoutdisk, stderrdisk = ssh.exec_command("df -hP | awk '/\/$/ {print $5}' | sed s'/%//'") stdindcpu, stdoutcpu, stderrcpu = ssh.exec_command("top -bn1 | awk '/Cpu/{print $2,$3,$4}' | sed 's/[a-z]//g' | sed 's/ //g' | awk -F',' '{print $1+$2+$3}'") stdinmomeryall, stdoutmomeryall, stderrmomeryall = ssh.exec_command("free -m | awk '{print $2}' | awk 'NR==2{print}'") stdinmomery, stdoutmomery, stderrmomery = ssh.exec_command("free | sed -n '2p' |awk '{printf ($2-$7)/$2*100}'") stdinappsall, stdoutappsall, stderrappsall = ssh.exec_command("df -hP /application | awk '{print $2}' | awk 'NR==2{print}'") stdinapps, stdoutapps, stderrapps = ssh.exec_command("df -hP /application | awk '{print $5}' | sed s'/%//' | awk 'NR==2{print}'") #print ip+ " "+(stdoutdiskall).read().replace("\n", "")+" " +(stdoutdisk.read()).replace("\n", "")+" "+(stdoutcpu.read()).replace("\n", "")+" "+(stdoutmomeryall.read()).replace("\n", "")+" "+(stdoutmomery.read())+\ # " " + (stdoutappsall).read().replace("\n", "") + " " + (stdoutapps).read().replace("\n", "") # print(stderr.read()) tmplist["ip"]=ip tmplist["diskall"]=(stdoutdiskall).read().replace("\n", "") tmplist["diskuse"]=(stdoutdisk.read()).replace("\n", "") tmplist["cpuuse"]=(stdoutcpu.read()).replace("\n", "") tmplist["momeryall"]=(stdoutmomeryall.read()).replace("\n", "") tmplist["momeryuse"]=(stdoutmomery.read()) tmplist["appall"]=(stdoutappsall).read().replace("\n", "") tmplist["appuse"]=(stdoutapps).read().replace("\n", "") print tmplist return tmplist ssh.close() except Exception,e: print e return tmplist def trywexrestr(lists): nowtime=time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))+"" bookurl="systems"+nowtime+'info.xlsx' #filenames=nowtime+'info.xlsx' workbook1 = xlsxwriter.Workbook(bookurl) worksheet = workbook1.add_worksheet() title=[u'IP地址',u'根目录大小',u'根目录使用百分比',u'CPU使用率',u'内存总量',u'内存使用率',u'application大小'\ ,u'application使用率'] format=workbook1.add_format() worksheet.set_column(0,15,20) format.set_bold() worksheet.write_row('A1',title,format) row=1 for a in lists: worksheet.write(row,0,a["ip"]) worksheet.write(row,1,a["diskall"]) worksheet.write(row,2,a["diskuse"]) worksheet.write(row,3,a["cpuuse"]) worksheet.write(row,4,a["momeryall"]) worksheet.write(row,5,a["momeryuse"]) worksheet.write(row,6,a["appall"]) worksheet.write(row,7,a["appuse"]) row=row+1 workbook1.close() def readinfo(): myfile=open('ips.txt','r') listall=[] for line in myfile: #con=line.split() ip=line.strip() tmplist=sshexeccmd(ip) listall.append(tmplist) return listall listall=readinfo() trywexrestr(listall)