Skip to content

搜集物理服务器光衰

3、搜集物理服务器光衰

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

1、脚本说明

2、使用方法

脚本使用前提

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

bash
importxlsxwriterimportparamikoimporttime

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

脚本需要修改的地方

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

importparamikoimporttimedeftx_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()returntxdefrx_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()returnrxi=1j=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:fork inopen(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+1i=j+1j=j+2ssh.close()workbook.close()

ip.txt

https:/业务ip//业务ip/

4、存在问题

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

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