我正在对 url 列表中的 ping 进行快速 rtt 比较。我想提取 ip,这样我就可以运行 whois 并获取地理位置。当我在一个以 google.com 和 facebook.com 开头的 url 列表上运行它时会发生什么,即使 ping 的输出格式相同,ip 与 google 的正则表达式匹配,但不是 facebook。下面的代码可以更好地了解正在发生的事情。
urls = ["google.com", "facebook.com"]
ip_regex = re.compile('[1-9]+\\.[1-9]+\\.[1-9]+\\.[1-9]+')
time_regex = re.compile(' [\.1-9]+/.*/.*/.* ms')
for url in urls:
output = ""
print url
ping = subprocess.Popen(["ping", "-c", "3", url], stdout=subprocess.PIPE)
while ping.poll() == None:
output += ping.stdout.read()
output += ping.stdout.read()
#DEBUG
print "OUTPUT"
print output
ip = ip_regex.findall(output)
print ip
ip = ip[0]
times = time_regex.findall(output)
print times
os.system('whois ' + ip + ' | egrep "Country|StateProv|City"')
其他人的 ip_regex 在 facebook (#2) 上是否失败?为什么?