#!/usr/bin/env ruby require 'net/http' FAKEDNS_URL="http://my_server:4567/" INTERFACE="eth0" IFCONFIG_CMD="/sbin/ifconfig" HOSTNAME_CMD="hostname" hostname = `#{HOSTNAME_CMD}`.strip ifinfo = `#{IFCONFIG_CMD} #{INTERFACE}` if ifinfo !~ /HWaddr\s+([0-9A-Za-z:]+)/ raise "no mac address in ifinfo:\n" + ifinfo end mac = $1 if ifinfo !~ /inet\s+addr:([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/ raise "no ip address in ifinfo:\n" + ifinfo end ip = $1 puts "FakeDNS: posting host '#{hostname}' ip '#{ip}' at mac '#{mac}' to server at #{FAKEDNS_URL}" res = Net::HTTP.post_form(URI.parse(FAKEDNS_URL), {'mac' => mac, 'name' => hostname, 'ip' => ip}) case res when Net::HTTPSuccess puts "Posted OK." else puts "Posting IP address failed:" puts res.body end