Sha256: df622cb586e930526cda506310b0ce05c0f735472849868647f033d762404704

Contents?: true

Size: 1.96 KB

Versions: 1

Compression:

Stored size: 1.96 KB

Contents

#!/usr/bin/env ruby
#CLI program to find IP geolocation

require 'rest-client'
require 'json'
require 'optparse'


options = {}
OptionParser.new do |opts|
  opts.banner = "Usage: example.rb [options]"

  opts.on("-m", "--machine VARIABLE", "Machine Readable") do |v|
    options[:var] = v
  end
end.parse!

# Ex. ip
opt = options[:var]

# Ex. 8.8.8.8
*arg = ARGV

if opt == nil && arg == nil
  puts
  print 'IP => '
  ip = gets.chomp

  url = "http://ip-api.com/json/#{ip}"
  response = RestClient.get(url)
  info = JSON.parse(response)

  if info['status'] == 'fail'
    puts 'No IP found'
  else
    puts
    puts '============================='
    puts "| IP: #{info['query']}"
    puts "| City: #{info['city']}"
    puts "| Region: #{info['region']}"
    puts "| Country: #{info['country']}"
    puts "| ZIP: #{info['zip']}"
    puts "| ISP: #{info['isp']}"
    puts '============================='
    puts
  end
elsif opt == nil && arg != nil
  url = "http://ip-api.com/json/#{arg.join}"
  response = RestClient.get(url)
  info = JSON.parse(response)

  if info['status'] == 'fail'
    puts 'No IP found'
  else
    puts
    puts '============================='
    puts "| IP: #{info['query']}"
    puts "| City: #{info['city']}"
    puts "| Region: #{info['region']}"
    puts "| Country: #{info['country']}"
    puts "| ZIP: #{info['zip']}"
    puts "| ISP: #{info['isp']}"
    puts '============================='
    puts
  end
elsif opt != nil && arg != nil
  url = "http://ip-api.com/json/#{arg.join}"
  response = RestClient.get(url)
  info = JSON.parse(response)

  if info['status'] == 'fail'
    puts 'No IP info'
  else
    if opt == 'ip'
      puts info['query']
    elsif opt == 'city'
      puts info['city']
    elsif opt == 'region'
      puts info['region']
    elsif opt == 'country'
      puts info['country']
    elsif opt == 'zip'
      puts info['zip']
    elsif opt == 'isp'
      puts info['isp']
    else
      puts 'Bad input'
    end
  end
else
  puts 'Bad input'
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jake-scripts-1.8.2 exe/ip_geo