跳到主要内容

搜集物理服务器光衰

方法1:python搜集物理服务器光衰并导入excel-2021.04.15(测试成功)

1、脚本说明

2、使用方法

脚本使用前提

(1)保证python环境已经安装了相应的软件包;

import xlsxwriter
import paramiko
import time

(2)且具备可远程ssh到目标机器的环境;

脚本需要修改的地方

  • 修改为本次服务器要收集光衰的网卡名:

//注意,这个脚本目前只能搜集服务器上的2个网卡的光衰,如何想要搜集更多网卡的话,可以再搜集一次或者更改脚本;(后续改进)

img

  • 修改ssh相关信息

img

  • 填写本次涉及的ip信息

#注意,这个脚本,如果其中ip有不通情况,会自动跳过,然后执行下一个目标的。(我感觉是这个语句的作用)

img

img

img

  • 验证输出结果是否符合预期

img

img

image-20231123164912797

3、脚本位置

2023.11.24-范例:搜集物理服务器光衰并导入excel-2021.04.15(测试成功)

image-20231124101050258

LinuxCollectLight.py

https://onedayxyy.cn/scripts/linux_collect_eth_light/LinuxCollectLight.py

import xlsxwriter
import paramiko
import time

def tx_cut(net_port):
#stdin, stdout, stderr = ssh.exec_command("ifconfig | grep "+ net_port +" | awk -F \" \" \'{print $5}\'")
stdin, stdout, stderr = ssh.exec_command("ethtool -m "+ net_port+" | grep \"Laser output power\" | head -1 | awk -F \'\/\' \'{print $2}\'")
tx = stdout.read().decode()
return tx

def rx_cut(net_port):
#stdin, stdout, stderr = ssh.exec_command("ifconfig | grep "+ net_port +" | awk -F \" \" \'{print $5}\'")
stdin, stdout, stderr = ssh.exec_command("ethtool -m "+ net_port +" | grep \"Receiver signal\"| awk -F \'/\' \'{print $2}\'")
rx = stdout.read().decode()
return rx


i=1
j=2
#要搜集光衰的网卡名:
net_port="ens7f0"
net_port1="ens9f0"

#k=218
#ip="10.130.27."
workbook = xlsxwriter.Workbook('D:/chartport.xlsx') #输出光衰表格目录
worksheet = workbook.add_worksheet()
title = [u'ip',u'net_port',u'linux RX',u'linux TX']
format=workbook.add_format()
format.set_border(1)
format_title=workbook.add_format()
format_title.set_border(1)
format_title.set_bg_color('#cccccc')
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)

#while k<221:
for k in open(r'E:/ip.txt'): #要搜集的目标linux机器ip地址存放文件
#ip = ip+str(k)
ip=k.split("/")[1]
print(ip)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=ip, port=22, username='root', password='password')


worksheet.write(i,0 ,ip)
worksheet.write(j,0 ,ip)
worksheet.write(i,1 ,net_port)
worksheet.write(j,1 ,net_port1)
worksheet.write(i,3 ,tx_cut(net_port))
worksheet.write(i,2 ,rx_cut(net_port))
worksheet.write(j,3 ,tx_cut(net_port1))
worksheet.write(j,2 ,rx_cut(net_port1))
time.sleep(1)
#ip="10.130.27."
#k=k+1
i=j+1
j=j+2
ssh.close()
workbook.close()

ip.txt

https://onedayxyy.cn/scripts/linux_collect_eth_light/ip.txt

/业务ip/
/业务ip/
/业务ip/

4、存在问题

  • 如何一次搜集更多的网卡光衰??;

//注意,这个脚本目前只能搜集服务器上的2个网卡的光衰,如何想要搜集更多网卡的话,可以再搜集一次或者更改脚本;(后续改进)

img

方法2:shell脚本收集方法

CollectServerGuangShuai_20190121_hg.sh

https://onedayxyy.cn/scripts/linux_collect_eth_light/CollectServerGuangShuai_20190121_hg.sh

echo -e ens10f0 tx:"\t"`ethtool -m ens10f0 | grep "Laser output power"| head -1 | awk -F '/' '{print $2}'` > /root/fabric
echo -e ens10f0 rx:"\t"`ethtool -m ens10f0 | grep "Receiver signal"| awk -F '/' '{print $2}'` >> /root/fabric
echo -e ens10f1 tx:"\t"`ethtool -m ens10f1 | grep "Laser output power"| head -1 | awk -F '/' '{print $2}'` >> /root/fabric
echo -e ens10f1 rx:"\t"`ethtool -m ens10f1 | grep "Receiver signal"| awk -F '/' '{print $2}'` >> /root/fabric