最近接到一个需求,要批量解析100多个域名,以及telnet端口是否通。如果一个个用telnet和dig/nslookup,累都累死了,于是考虑用python实现。
这里我的思路是用telnetlib建立对象,试着telnet,通了可直接获取IP解析,不通,则通过socket一个功能获取IP解析。(有人推荐dnspython模块,这个是类似dig的功能,但是实践发现很多域名拿不到解析)
import pandas as pd
import os
import telnetlib
import socket
#读取Excel
df=pd.read_excel('domain.xlsx')
domain_item=df.columns[0] #域名列
port_item=df.columns[1] #端口列
result=[]
for i in df.index:
domain=df.loc[i][domain_item] #读取域名
port=int(df.loc[i][port_item]) #读取端口
tc=telnetlib.Telnet()
try:
tc.open(domain,port,1) #检测telnet端口
except Exception as e:
status="不通"
try:
IP=socket.getaddrinfo(domain,port)[0][-1][0] #获取域名解析
except Exception as e:
print(e)
IP='unknown'
else:
status="通"
IP=tc.get_socket().getpeername()[0] #获取域名解析
tc.close()
line=[num,domain,port,status,IP] #本行的数据
result.append(line) #纳入本行数据到result
#生成DataFrame 导出结果excel
df=pd.DataFrame(result,columns=['域名','端口','通否','IP'])
df.to_excel('result.xlsx',index=False)