i’m currently working on a wireless deployment with a requirement to use mac filtering. There are over 600 laptops being deployed to a unique location per laptop. Part of the imaging process doesan ipconfig and dumps the output to a text file which I can then use to copy/paste the hostname and mac into the Cisco 8510 wireless controller. I’m lazy, so I made a bash script to parse the ipconfig text files. I wish I knew how to do this in Windows, but I work with what I got. The script takes this input from a text file:
Windows IP Configuration
Host Name . . . . . . . . . . . . : GU0123LT01
Primary Dns Suffix . . . . . . . : guammie.com
Node Type . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : guammie.comWireless LAN adapter Wireless Network Connection:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Ralink RT5390R 802.11b/g/n 1×1 Wi-Fi Adapter
Physical Address. . . . . . . . . : B8-76-3F-25-34-4D
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : YesEthernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Realtek PCIe GBE Family Controller
Physical Address. . . . . . . . . : B4-B5-2F-8D-BF-2B
DHCP Enabled. . . . . . . . . . . : No
Autoconfiguration Enabled . . . . : Yes
IPv4 Address. . . . . . . . . . . : 10.1.0.10(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.1.0.1
DNS Servers . . . . . . . . . . . : 10.0.0.53
NetBIOS over Tcpip. . . . . . . . : Enabled
And generates this command line that I can just copy/paste into the controller:
config macfilter add B8:76:3F:25:34:4D 18 guunit-clients "unit 0123 laptop"
Here’s the script. It’s not the cleanest, but it works:
#!/bin/bash
FILES=/home/donovan/macs/*.txt
for f in $FILES
do
# take action on each file. $f store current file name
hostname="$(awk ‘/Host Name/ {c=1}c–>0’ $f | sed -n ‘/\<Host Name\>/ s/.*[[:space:]]\([[:alnum:]]\+\)$/\1/p’ | awk ‘{print substr($0,3,4)}’)"
mac="$(awk ‘/Ralink RT5390R/ {c=1;next}c–>0’ $f | awk -F ‘Physical Address. . . . . . . . . : ‘ ‘{print $2}’ | sed ‘s/\-/\:/g’)"echo "config macfilter add $mac 18 guunit-clients \"unit $hostname laptop\""
done
That’s it.