我想写一个命令行程序,它接受一个IP地址,并返回与之相关的国家。
例如:67.99.163.76将输出'United States'。
您可以使用geocode gem。它的特性非常丰富,并且对rails和其他基于机架的框架有很好的支持。当然,您也可以在这些框架之外使用它,既可以作为api,也可以从控制台使用。控制台的一个小示例:
geocode 67.99.163.76
纬度 : 42.7684
经度 : - 78.8871
详细地址:Buffalo, NY 14260, United States
城市 : 水牛
州/省:New York邮编:14260
国家:美国
Google地图:http://maps.google.com/maps?q=42.7684,-78.8871
您可以通过查询freegeoip:
来使用标准库。require 'net/http'
require 'json'
ip = "67.99.163.76"
uri = URI.parse("http://freegeoip.net/json/#{ip}")
client = Net::HTTP.new(uri.host, uri.port)
res = JSON.parse(client.get(uri.request_uri).body)
puts res["country_name"]