python根据服务器sn号查询DELL服务器型号、出厂时间、过保时间
思路:根据请求url返回的html进行处理,获取对应的信息
相关url
1、自助查询
https://www.dell.com/support/home/cn/zh/cnbsd1/
2、指定sn号查询(GET请求)
https://www.dell.com/support/home/cn/zh/cnbsd1/product-support/servicetag/ 加上sn号
3、服务器详情页面(POST请求,需要提交"serviceTag"值,可从第二个url返回的html中获取)
https://www.dell.com/support/components/dashboard/cn/zh/cnbsd1/Warranty/GetWarrantyDetails
用法
D:盘根目录创建txt文档,名为sn.txt;存入svn清单,执行后会生成snlist文件,包含sn-型号-出厂-过保日期
其他自定义目录可自行修改
import requests,re,time
from requests.exceptions import RequestException
base_url='https://www.dell.com/support/home/cn/zh/cnbsd1/product-support/servicetag/'
def Get_Page(url): #根据sn号获取返回页面try:response = requests.get(url)if response.status_code == 200:return response.textreturn Noneexcept RequestException:return None
def Get_Info(s_code): #根据返回码,获取信息url_params = {"serviceTag":s_code}info_url='https://www.dell.com/support/components/dashboard/cn/zh/cnbsd1/Warranty/GetWarrantyDetails'r1=requests.post(info_url,data=url_params)h1=r1.textp_date=re.compile("<td>(\d+) (\d+)月 (\d+)</td>")p_in_date=re.compile('<td><b>(.*)(\d{2}) (\d+)月 (\d+)</b></td>')date2='error'if h1:c=h1.split("\n")for i in c:if '<td>NBD' in i: #检测下一个工作日服务(优先级以上门服务器日期为准)n=c.index(i)# date1=p_date.findall(c[n+1])date2=p_date.findall(c[n+2])elif '%s</b></td>'%sn in i:n = c.index(i)date1=p_in_date.findall(c[n+1])# print(date1)if date2=='error': #因为服务器型号不用,包含的服务不同,所以下面做了较多的判断for i in c:if '<td>POW' in i: #检查部件保修服务n = c.index(i)date2 = p_date.findall(c[n + 2])elif '<td>4' in i: #检查24小时上门n = c.index(i)date2 = p_date.findall(c[n + 2])if date2=='error':date2=[('error','error','error')] #返回错误数据in_date = ((date1[0][3] + '-' + date1[0][2] + '-' + date1[0][1])) # 格式化日期out_date = ((date2[0][2] + '-' + date2[0][1] + '-' + date2[0][0]))else:in_date = ((date1[0][3] + '-' + date1[0][2] + '-' + date1[0][1])) # 格式化日期out_date = ((date2[0][2] + '-' + date2[0][1] + '-' + date2[0][0]))return in_date,out_date
class DELLINFO():def __init__(self,sn):self.sn=sndef Get_Dellinfo(sn): # 主程序html1 = Get_Page(base_url + sn)if html1:p1 = re.compile('servicetag/(.*)/overview"')p2 = re.compile('<h1 class="mb-3 mb-lg-1 text-center text-lg-left position-relative word-break">(.*)</h1>')r1 = p1.findall(html1) # 过滤获取返回码r2 = p2.findall(html1)if r1 and len(r1) == 1:date = Get_Info(r1[0])if r2 and len(r2) == 1:server_mode = r2[0]return server_mode, datewith open('D:\sn.txt','r',encoding='utf-8') as f:for i in f:sn=i.strip()info=DELLINFO.Get_Dellinfo(sn)if len(info)==2:server_mode=info[0]server_in_date=info[1][0]server_out_date=info[1][1]info_detail=sn+'\t'+server_mode+'\t'+server_in_date+'\t'+server_out_date+'\n'print(server_mode)print(server_in_date)print(server_out_date)with open('D:snlist.txt','a',encoding='utf-8') as ff:ff.write(info_detail)
多线程版本
import requests,re,time
from requests.exceptions import RequestException
from concurrent.futures import ThreadPoolExecutor
import threading
base_url='https://www.dell.com/support/home/cn/zh/cnbsd1/product-support/servicetag/'
def Get_Page(url): #根据sn号获取返回页面try:response = requests.get(url)if response.status_code == 200:return response.textreturn Noneexcept RequestException:return Nonedef Get_Info(s_code,sn): #根据返回码,获取信息url_params = {"serviceTag":s_code}info_url='https://www.dell.com/support/components/dashboard/cn/zh/cnbsd1/Warranty/GetWarrantyDetails'r1=requests.post(info_url,data=url_params)h1=r1.textp_date=re.compile("<td>(\d+) (\d+)月 (\d+)</td>")p_in_date=re.compile('<td><b>(.*)(\d{2}) (\d+)月 (\d+)</b></td>')date2='error'if h1:c=h1.split("\n")for i in c:if '<td>NBD' in i: #检测下一个工作日服务(优先级以上门服务器日期为准)n=c.index(i)# date1=p_date.findall(c[n+1])date2=p_date.findall(c[n+2])elif '%s</b></td>'%sn in i:n = c.index(i)date1=p_in_date.findall(c[n+1])# print(date1)if date2=='error': #因为服务器型号不用,包含的服务不同,所以下面做了较多的判断for i in c:if '<td>POW' in i: #检查部件保修服务n = c.index(i)date2 = p_date.findall(c[n + 2])elif '<td>4' in i: #检查24小时上门n = c.index(i)date2 = p_date.findall(c[n + 2])if date2=='error':date2=[('error','error','error')] #返回错误数据in_date = ((date1[0][3] + '-' + date1[0][2] + '-' + date1[0][1])) # 格式化日期out_date = ((date2[0][2] + '-' + date2[0][1] + '-' + date2[0][0]))else:in_date = ((date1[0][3] + '-' + date1[0][2] + '-' + date1[0][1])) # 格式化日期out_date = ((date2[0][2] + '-' + date2[0][1] + '-' + date2[0][0]))return in_date,out_date
def write_data(server_mode,date,sn):server_mode = server_modeserver_in_date = date[0]server_out_date = date[1]info_detail = sn + '\t' + server_mode + '\t' + server_in_date + '\t' + server_out_date + '\n'print(server_mode)print(server_in_date)print(server_out_date)with open('D:snlist.txt', 'a', encoding='utf-8') as ff:ff.write(info_detail)class DELLINFO():def __init__(self,sn):self.sn=sndef Get_Dellinfo(sn): # 主程序html1 = Get_Page(base_url + sn)if html1:p1 = re.compile('servicetag/(.*)/overview"')p2 = re.compile('<h1 class="mb-3 mb-lg-1 text-center text-lg-left position-relative word-break">(.*)</h1>')r1 = p1.findall(html1) # 过滤获取返回码r2 = p2.findall(html1)if r1 and len(r1) == 1:date = Get_Info(r1[0],sn)if r2 and len(r2) == 1:server_mode = r2[0]write_data(server_mode,date,sn)if __name__=='__main__':t_list = []sn_list=[]pool=ThreadPoolExecutor(10)# freeze_support()with open('D:\sn.txt','r',encoding='utf-8') as f:for i in f.readlines():sn_list.append(i.strip())t = threading.Thread(target=DELLINFO.Get_Dellinfo, args=(i.strip(),))t_list.append(t)t.start()for t in t_list:t.join()
python根据服务器sn号查询DELL服务器型号、出厂时间、过保时间相关推荐
- 华为服务器sn号查询网站,linux 查询服务器sn号
linux 查询服务器sn号 内容精选 换一换 对于Linux弹性云服务器,磁盘分区与磁盘设备名称完全对应.本节以Red Hat Enterprise Linux 7的图形界面为例,介绍查询Linux ...
- 华为服务器sn号查询网站,linux 查询服务器sn
linux 查询服务器sn 内容精选 换一换 Linux云服务器变更规格时,可能会发生磁盘挂载失败的情况,因此,变更规格后,需检查磁盘挂载状态是否正常.本节操作介绍变更规格后检查磁盘挂载状态的操作步骤 ...
- 华为服务器sn号如何修改,linux 查询服务器sn号
linux 查询服务器sn号 内容精选 换一换 在Linux服务器安装Mind Studio后,单击界面Help>Documents,会弹出联机帮助界面,如图1所示,若单击目录后,内容无法刷新. ...
- 虚拟化查看服务器sn,linux 查看服务器sn号
linux 查看服务器sn号 内容精选 换一换 该操作只在跨AZ部署HA场景下才需要执行.EVS无法实现跨AZ磁盘共享,所以在跨AZ部署HA场景中,需要规划三台弹性云服务器,在每台云服务器上各绑定一块 ...
- 服务器SN信息,命令查看服务器SN号
今天工作的时候,为了检查一台服务器的序列号,没必要在跑到机房里了,所以在系统下就可以看机器序列号了.如下: 1.linux取序列号: 命令执行:dmidecode |grep "Serial ...
- 服务器mac地址查询修改,服务器mac地址查询修改
服务器mac地址查询修改 内容精选 换一换 OBS Browser+是一款用于访问和管理对象存储服务的图形化工具,支持通过配置内网DNS服务器地址的方式,使在华为云上的Windows ECS通过内网直 ...
- dell 服务器 加ssd硬盘,DELL服务器加SSD硬盘.doc
DELL服务器加SSD硬盘.doc (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 Dell r420服务器加SSD固态硬盘1,带 ...
- 戴尔服务器设置文件存储,DELL服务器RAID配置详细教程-20210730001009.pdf-原创力文档...
DELL服务器 RAID 配置教程 在启动电脑的时候按 CTRL+R 进入 RAID 设置见面如下图 名称解释: Disk?Group :磁盘组,这里相当于是阵列,例如配置了一个 RAID5 ,就是一 ...
- DELL R510服务器RAID配置,Dell服务器硬RAID配置
DELL服务器硬RAID的制作 1. 进入RAID管理界面 2. RAID创建 3. RAID删除 1. 进入RAID管理界面 服务器开机,看到Press Ctrl-C to start Dell 6 ...
- dell服务器报错信息,DELL 服务器LED屏报错信息 2012版
DELL 服务器LED屏报错信息 error. Contact support E2110 置中. 请参阅内存模块一般安装原 则.请参阅获得帮助. Multibit Error on DIMM 插槽& ...
最新文章
- word下设置多个起始页面
- 我对分布式多中心架构的几点看法
- 如何用ABAP代码的方式弹出SPRO里的customizing activity
- Codeforces 1323 div2题解ABC
- 使用ASM 4处理Java类文件–第一部分:世界,您好!
- Unix/Linux环境C编程入门教程(27) 内存那些事儿
- 新买的衣服一定要洗吗?不洗就穿对身体不好吗?
- redis技术分享ppt_技术分享丨华为鲲鹏架构Redis知识二三事
- 在传统以太网中,为什么要有最小帧长度和最大帧长度的限制
- ADB命令和Monkey命令
- 阿里巴巴矢量图标库批量添加图标
- python源码剖析_Python源码剖析
- VMware Workstation Pro v16.1.0虚拟机下载安装过程
- c语言药店管理系统设计,药店管理系统
- 交通信息工程 实验四:交通仿真实验(一)
- 服务器常见基本故障+排查方法,很实用!
- $‘\r‘: 未找到命令的问题解决
- F-Train Wreck_2021牛客暑期多校训练营10
- 三位数求解:已知xyz+yzz=n,其中n是一个正整数,x、y、z都是数字(0-9),编写一个程序求出x、y、z分别代表什么数字。若无解,则输出“No Answer” 注意:xyz和yzz表示一个三
- DOM初探(14)——查看滚动条的滚动距离
热门文章
- Tool for FMEA
- 网络拓扑 令牌环网 以太网_以太网连接中网络拓扑的类型及其框架 以太网技术...
- iMX6 SoloX千兆以太网Linux PHY驱动调试
- Java多线程编程核心技术 (pdf完整版)
- Oracle数据库数据恢复方法
- 14-循环队列实现(C语言)
- python程序设计 清华大学出版社 pdf下载-清华大学出版社-图书详情-《Python程序设计教程》...
- win10主题美化(单)
- 中标麒麟使用centos源_中标麒麟操作系统yum源配置
- 如何查看文件的md5值