title: How to resolve an IP address to an organization (with caching)
body: <p>I would like to resolve IP(v4) addresses to owner organizations, from the registry of IP address allocations.  To do it, I don't want to become an expert in whois protocols and templates or the structure of the registries themselves.  I just want a function that takes an IP address (allocated anywhere in the world) and returns a short string like "IBM Corporation".  The same thing I would find by typing "whois n.n.n.n" and eyeballing the result.  Reverse DNS is not what I want.  Should be free software and run on Linux.</p>
  
  <p>Incredibly to me, I can't find this.  The whois program (on Debian) and other user-oriented front-ends give me a result for any IP address, but in all sorts of raw formats.  I've found whois libraries that parse results, but they seem to assume I'm a whois expert and know which registry has the records for my query.  I think the pieces just need to be put together, but nobody seems to have done it.  Have I missed something, or is it easier than I think?</p>
  
  <p>As a bonus, I would like to maintain a cache of these lookups.  The cache should store the network range for whois results so that it returns a hit for another IP address in the same network.  Ideally, the cache should perform better than a linear search as it grows.</p>
  
  <p>The purpose?  I would find this incredibly helpful for analyzing server logs.  Reverse DNS is mostly useless thse days, but I would still like some idea of who's responsibly for requests.</p>