Here is a python script to convert IP addresses into hexadecimal, which may be required to name files for your bootloader if you are trying to netboot, for example. You can specify a mask if you have a large group of machines on a network (e.g. 10.1.3.2 with a mask of 24 will just give you 0x0A == 10d, while a mask of 16 gives you 0xOA01).
import re
import sys
import socket
if (not len(sys.argv) == 2):
print "Usage: ip2hex.py hostname|ip address/mask"
sys.exit(1)
try:
(in_str, mask) = sys.argv[1].split("/")
# sanity check mask
mask = int(mask)
if (mask > 32 or mask < 0):
print "Mask out of range"
sys.exit(1)
except ValueError:
mask = 0
in_str = sys.argv[1]
try:
ip_addr = socket.gethostbyname(in_str)
except:
print "Invalid address!"
sys.exit(1)
#gethostbyname really checks this for us, but you never know
ip_regex = re.compile('(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \
'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \
'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \
'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)')
ip_match = ip_regex.match(ip_addr)
if (ip_match == None):
print "Invalid address"
sys.exit(1)
hex_ip_addr = 0
for i in range(1,5):
hex_ip_addr += int(ip_match.group(i)) << (4-i)*8
fmt = "%%0%dX" % ((32 - mask) / 4)
print fmt % (hex_ip_addr >> mask)