iPXE discussion forum
Boot based on MAC - Printable Version

+- iPXE discussion forum (https://forum.ipxe.org)
+-- Forum: iPXE user forums (/forumdisplay.php?fid=1)
+--- Forum: General (/forumdisplay.php?fid=2)
+--- Thread: Boot based on MAC (/showthread.php?tid=7284)



Boot based on MAC - gdi2k - 2014-04-21 12:11

I would like to have clients boot from a specific server based on their MAC address. I have tried using this script:

Code:
#!ipxe

ifopen

:mac-check
iseq ${netx/mac} EC:A8:6B:F5:44:9F && goto server2 ||

:server1
imgfree
echo Attempting to boot from Server 1
kernel tftp://192.168.1.11/ltsp/i386/vmlinuz root=/dev/nbd0 init=/sbin/init-ltsp vt.handoff=7 nbdroot=192.168.1.11:ltsp_i386 || goto second
initrd tftp://192.168.1.11/ltsp/i386/initrd.img || goto second
boot ||

:server2
imgfree
echo Attempting to boot from Server 2
kernel tftp://192.168.1.12/ltsp/i386/vmlinuz root=/dev/nbd0 init=/sbin/init-ltsp vt.handoff=7 nbdroot=192.168.1.12:ltsp_i386 || goto first
initrd tftp://192.168.1.12/ltsp/i386/initrd.img || goto first
boot || goto first

But the client with MAC address EC:A8:6B:F5:44:9F still boots from server1, not server2 as it should. Where am I going wrong?


RE: Boot based on MAC - robinsmidsrod - 2014-05-19 09:13

You need to use netX, not netx.


RE: Boot based on MAC - gdi2k - 2014-05-19 11:28

Thank you! The devil's in the details Wink

Working perfectly now, magic.

Here's the script for anyone who wants to do anything similar:

Code:
#!ipxe

ifopen

:mac-check
iseq ${netX/mac} ec:a8:6b:f5:45:94 && goto server2 ||                   #PC10

:server1
imgfree
echo Attempting to boot from Server 1
kernel tftp://192.168.1.11/ltsp/i386/vmlinuz root=/dev/nbd0 init=/sbin/init-ltsp vt.handoff=7 nbdroot=192.168.1.11:ltsp_i386 || goto server2
initrd tftp://192.168.1.11/ltsp/i386/initrd.img || goto server2
boot ||

:server2
imgfree
echo Attempting to boot from Server 2
kernel tftp://192.168.1.12/ltsp/i386/vmlinuz root=/dev/nbd0 init=/sbin/init-ltsp vt.handoff=7 nbdroot=192.168.1.12:ltsp_i386 || goto server1
initrd tftp://192.168.1.12/ltsp/i386/initrd.img || goto server1
boot || goto server1