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)で失敗しますか?なんで?