python+shell 批量获取服务器信息并且生成excel表

来源:互联网 发布:反贪风暴 知乎 编辑:程序博客网 时间:2024/06/06 03:53

我们工作中,经常需要获取服务器的一些信息,包括软件的和硬件的。例如刚刚接收的服务器,需要批量获取信息确认硬件配置是否符合我们需求,或者维护很长时间的服务器,中间变动了很多,但是服务器信息没有更改,这个时候也需要进行信息核对等等。基于以上这些需求,我写了一个脚本,用shell批量获取远程服务器的信息保存到一个结果,然后用python进行解析,生成excel表。以下是具体步骤:

  1. 配置ssh免密码登录,或者不配置请安装sshpass工具;
  2. 安装XlsxWriter模块,python需要调用这个模块来创建和生成excel表;
  3. shell脚本,根据ip列表批量去获取所需要的信息,保存到一个文件当中;
  4. python解析结果文件,生成所需要的excel表;

以下是具体的代码:

#批量获取信息#!/bin/bashdeclare -A RESULTRESULT=()function getinfo() {IP=$1OUTIP=$(ssh root@$IP -p 36000 "ifconfig eth0 |grep -w inet |cut -d':' -f2 |cut -d' ' -f1")HOSTNAME=$(ssh root@$IP -p 36000 'hostname')RELEASE=$(ssh root@$IP -p 36000 'cat /etc/redhat-release')CPU=$(ssh root@$IP -p 36000 "cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c")PYCPU_NUM=$(ssh root@$IP -p 36000 'grep "physical id" /proc/cpuinfo |sort |uniq |wc -l')CORE=$(ssh root@$IP -p 36000 "cat /proc/cpuinfo| grep cores| uniq | awk -F ':' '{print $2}'")logical=$(ssh root@$IP -p 36000 'cat /proc/cpuinfo| grep processor| wc -l')TYPE=$(ssh root@$IP -p 36000 'dmidecode -t 1|grep "Product Name" |cut -d: -f2')OS=$(ssh root@$IP -p 36000 'head -1 /etc/issue')INNERIP=$(ssh root@$IP -p 36000 "/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d 'addr:'")ST=$(ssh root@$IP -p 36000 'dmidecode -t 1|grep "Serial Number"|head -1|cut -d : -f2')VENDOR=$(ssh root@$IP -p 36000 'dmidecode -t 1|grep "Manufacturer"')MEM=$(ssh root@$IP -p 36000 "head -1 /proc/meminfo |cut -d: -f2 |sed 's/[ \t]*//g'")MEM_NUM=$(ssh root@$IP -p 36000 'dmidecode | grep -A16 "Memory Device$" |grep Size|sort |sed "s/^[ \t]*//g"| grep -v "No Module Installed" | wc -l')DISK=$(ssh root@$IP -p 36000 'fdisk -l|grep "Disk /dev"|cut -d, -f1')eth0_speed=$(ssh root@$IP -p 36000 "ethtool eth0 |grep Speed |awk '{print $2}' |sed 's/[ \t]*//g'")eth1_speed=$(ssh root@$IP -p 36000 "ethtool eth1 |grep Speed |awk '{print $2}' |sed 's/[ \t]*//g'")RESULT+=([$HOSTNAME]="$ST, $OUTIP, $IP, $PYCPU_NUM*$CPU, $MEM, $DISK, $OS, eth0 $eth0_speed|eth1 $eth1_speed, $TYPE")}cd /home/tencent_ops/testfor ip in `cat iplist|grep -v "^$" |grep -v "^#"`;do    getinfo $ipdonefor key in $(echo ${!RESULT[*]});do    echo "${RESULT[$key]}" >> result.txtdone

ip列表如下:

#iplist10.*.*.3310.*.*.3410.*.*.3510.*.*.36

思路:定义一个shell数据,将每台服务器获取的信息保存到数组中,然后遍历数组输出到result.txt中,结果是这样的:

#result.txt C4X***, 124.*.*.*, 10.*.*.*, 2* 32  Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz, 32762784kB, Disk /dev/sda: 1199.6 GB, CentOS release 6.2 (Final), eth0 Speed:1000Mb/s|eth1 Speed:1000Mb/s,  PowerEdge R430 8W1V***, 124.*.*.*, 10.*.*.*, 2* 32  Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz, 32762784kB, Disk /dev/sda: 1199.6 GB, CentOS release 6.2 (Final), eth0 Speed:1000Mb/s|eth1 Speed:1000Mb/s,  PowerEdge R430

具体需要获取的信息和格式,可以根据自己的需求更改脚本。

接下来是python脚本解析result.txt文件

#!/usr/bin/env python# -*-coding: utf-8 -*-import xlsxwriterimport reworkbook = xlsxwriter.Workbook('chart.xlsx')worksheet = workbook.add_worksheet()title = [u'Hostname', u'Service Tag', u'WAN IP', u'LAN IP', u'CPU', u'内存', u'硬盘', u'OS', u'网卡速率', u'Model']data=[]for line in open("result.txt"):    list_info=re.split(',',line)    data.append(list_info)format = workbook.add_format()format.set_border(1)format_title = workbook.add_format()format_title.set_border(1)format_title.set_bg_color('#99ffff')format_title.set_align('center')format_title.set_bold()format_ave = workbook.add_format()format_ave.set_border(1)format_ave.set_num_format('0.00')worksheet.write_row('A1', title, format_title)#worksheet.write_column('A2', buname, format)#worksheet.write_column('A2', data[0], format)#worksheet.write_row('B2', data[0], format)row = 1col = 1for num in range(len(data)):    worksheet.write_row(row,col, data[num], format)    row += 1workbook.close()

思路:读取result.txt文件到一个数组中,然后遍历数组数据,添加到excel表对应的行和列中去。

最终生成的结果如下:
这里写图片描述

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 林蛙干怎么吃 果子干 林蛙油吃法 林蛙油功效 林蛙油的价格表 林蛙油收购 林蛙油的价格 林蛙油胶囊价格 林蛙油多少钱 长白山林蛙油功效 林蛙油胶囊 林蛙油多少钱一盒 林蛙油多少钱一克 林蛙油好处 孕妇能吃林蛙油吗 林蛙油鉴别 林蛙油礼盒 林蛙油怎样吃 林蛙油与子宫肌瘤 林蛙油报价 林蛙油的吃法大全 雪蛤林蛙油 森瑞林蛙油 林蛙油 子宫肌瘤 林蛙油什么样的好 什么是林蛙油 林蛙油怎么泡发 林蛙油品牌 林蛙油怎么提取 林蛙油白酒 林蛙油提取 林蛙油颗粒 林蛙油怎么食用 野生林蛙油价格 林蛙油饮料 林蛙油 雌激素 林蛙油哪里有卖 林蛙油包装 林蛙油生吃 林蛙油是什么东西 怎样取林蛙油