这是一个以前自己写的简单的多进程版本的扫描主机的小程序,运用ping然后TTL大于64的为windows主机,小于64的为linux主机
以下为代码
import os
from multiprocessing import Process
import re
#多进程版本
def myfunc(ip):
cmd="ping %s -w 1000 -n 1"%ip
r2=os.popen(cmd).read()
result=re.search(r"TTL=(\d+)",r2)
if result:
if int(result.group(1))>64:
print(ip,"---WINDOWS主机")
else:
print(ip,"---LINUX主机")
else:
pass
if __name__=="__main__":
host=input("请输入一个域名或IP:")
if re.search(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",host):
host=host.strip()
else:
r1=os.popen("ping %s -w 1000 -n 1"%host).read()
try:
host=re.search(r"\[(.+)\]",r1).group(1)
except:
print("输入有误或网络没有连接,请重新输入!")
exit()
for i in range(1,256):
ip=re.sub(r"\d+$",str(i),host)
p=Process(target=myfunc,args=(ip,))
p.start()