#!/bin/sh function generate_hostname() { mac=$( ifconfig |grep eth0 | grep -io '[0-9a-f:]\{15\}[0-9a-f]\{2\}' ) mac=${mac//:} nic=${mac:6} nic=$(( 16#$nic )) let length=32 for i in 4 3 2 1 0; do let div=$length**$i let idx=$nic/$div let nic=$nic%$div if [ $idx = 0 ] ; then res=a elif [ $idx = 1 ] ; then res=b elif [ $idx = 2 ] ; then res=c elif [ $idx = 3 ] ; then res=d elif [ $idx = 4 ] ; then res=e elif [ $idx = 5 ] ; then res=f elif [ $idx = 6 ] ; then res=g elif [ $idx = 7 ] ; then res=h elif [ $idx = 8 ] ; then res=i elif [ $idx = 9 ] ; then res=j elif [ $idx = 10 ] ; then res=k elif [ $idx = 11 ] ; then res=m elif [ $idx = 12 ] ; then res=n elif [ $idx = 13 ] ; then res=p elif [ $idx = 14 ] ; then res=q elif [ $idx = 15 ] ; then res=r elif [ $idx = 16 ] ; then res=s elif [ $idx = 17 ] ; then res=t elif [ $idx = 18 ] ; then res=u elif [ $idx = 19 ] ; then res=v elif [ $idx = 20 ] ; then res=w elif [ $idx = 21 ] ; then res=x elif [ $idx = 22 ] ; then res=y elif [ $idx = 23 ] ; then res=z elif [ $idx = 24 ] ; then res=2 elif [ $idx = 25 ] ; then res=3 elif [ $idx = 26 ] ; then res=4 elif [ $idx = 27 ] ; then res=5 elif [ $idx = 28 ] ; then res=6 elif [ $idx = 29 ] ; then res=7 elif [ $idx = 30 ] ; then res=8 elif [ $idx = 31 ] ; then res=8 fi basex="$basex${res}" done old_hostname=$( cat /etc/hostname ) new_hostname=unknown-$basex if [ $old_hostname = raspberrypi3-64 ] then new_hostname=rpi3-$basex fi if [ $old_hostname = raspberrypi4-64 ] then new_hostname=rpi3-$basex fi echo $new_hostname > /etc/hostname } FLAG="/var/local/firstboot.log" if [ ! -f $FLAG ]; then echo "First boot" touch $FLAG generate_hostname generate_avahi_service reboot fi