Re: IP address depending on the MAC
Javier Barroso <javibarroso@gmail.com> wrote:
> If you know which macs you will have, you can make an init script
> which generate /etc/network/interface and /etc/hostname and /etc/hosts
> the first boot and then remove itself.
You don't even need to know in advance the MACs as long as enough of
the address is unique.
> $ cat /etc/init.d/10setnetworkonlyfirstboot
> #!/bin/bash
# > mymac=$(ip add show dev eth0 | awk '/ether/ {print $2}')
# > myhost=$(awk "/$mymac/ {print \$3}")
# > myip=$(awk "/$mymac/ {print \$2}")
myhex=$(
ip add show dev eth0 | # Get the interface detail
awk '/ether/ {print toupper($2)}' | # Extract MAC
cut -d: -f6 # Get last octet (as hex)
)
mydec=$( echo "16 i $myhex p" | dc ) # Convert hex to dec
myip="192.168.1.$mydec" # Must guarantee not 0 or 255
> sed -i "s/IP/$myip" /etc/network/interfaces # and probably some
> changes in /etc/hosts
> sed -i "s/HOSTNAME/$myhost" /etc/hostname # and probably some changes
> in /etc/hosts
> rm -f /etc/init.d/10setnetworkonlyfirstboot
Rather than removing the configuration file, you could add, say,
"# Configured eth0" to /etc/network/interfaces during setup. Next time
just exit if that line exists in the file.
Chris
Reply to: