赛题:
#coding=utf-8
import os
import re
def pingos(ip):
a=os.popen('ping ' +Flag3+' -c 1 -w 10')
b=a.read()
c=re.search(r"ttl=[0-9]*",b)
if c:
c=c.group()
ttl=re.search(r"[0-9]*[0-9]",c).group()
if 128
考察了re模块的基础使用,和os模块命令回显的使用
我重写后的代码:
#!/usr/bin/python3
import os
import re
def checkTTL(str_ip):
#获取ping的值
ping_command = "ping " + str(str_ip) + " -c 1" +"-w 10"
# print("ping_command:%s" %(ping_command))
ping_res = os.popen(ping_command).read(); #read()函数 获取ping后命令的回显
# print("ping_res:"+ping_res.read());
ttl_str = re.search("ttl=[0-9]*",ping_res).group()
print("ttl = %s" %(ttl_str))
ttl = re.search("[0-9]*[0-9]",ttl_str).group()
print("ttl:%s" % ttl)
#通过2次正则表达式 得到出ttl的值 然后比较ttl的值
ttl_value = int(ttl);
#print("%d" % ttl_value);
os_version ={128:'Windows NT/2000',
32:'Windows 95/98',
255:'Unix',
64:'Linux or Win7'
}
if ttl_value in os_version:
print(os_version[ttl_value])
else:
print("Other Os");
def main():
fp = open("ip.txt","r")
for i in fp.readlines():
ip = i.strip('\n')
checkTTL(ip);
if __name__ == '__main__':
main();
运行结果: