Skip to content

Instantly share code, notes, and snippets.

@shanonvl
Last active August 11, 2017 01:22
Show Gist options
  • Save shanonvl/070522765d0dd9bdd7fb6478720a714f to your computer and use it in GitHub Desktop.
Save shanonvl/070522765d0dd9bdd7fb6478720a714f to your computer and use it in GitHub Desktop.
VMWare Fusion 8 - Configure Static IP
#!/bin/bash
#
# Configures a static IP for a VMware Fusion (currently 8.0) virtual machine
#
# Usage:
#
# sudo ./vmware-static-ip.sh <path-to-vmwarevm-dir>
# eg. sudo ./vmware-static-ip.sh "/Volumes/Data/Virtual Machines/plusamp-ubuntu-16.04-amd64-docker.vmwarevm"
#
START_IP=100
VMROOT="$1"
VMX=$(find "$VMROOT" -name "*.vmx")
MAC=$(grep 'ethernet0.address =' "$VMX" | awk '{print $3}' | cut -d\" -f2)
[[ "$MAC" == "" ]] && echo "Could not determine MAC address for VM..." && exit 1
echo "MAC Address: $MAC"
NETWORKING_ROOT="/Library/Preferences/VMware Fusion"
NETWORKING_CONF="$NETWORKING_ROOT/networking"
[[ ! -f "$NETWORKING_CONF" ]] && echo "Could not access networking at: $NETWORKING_CONF..." && exit 1
VMNET8_SUBNET=$(grep 'VNET_8_HOSTONLY_SUBNET' "$NETWORKING_CONF" | awk '{print $3}')
echo "vmnet8 Subnet: $VMNET8_SUBNET"
VMNET8_ROOT="$NETWORKING_ROOT/vmnet8"
DHCPD_CONF="$NETWORKING_ROOT/vmnet8/dhcpd.conf"
[[ ! -f "$DHCPD_CONF" ]] && echo "Could not access vmnet8 dhcpd.conf at: $DHCPD_CONF..." && exit 1
grep -q "$MAC" "$DHCPD_CONF" && echo "This MAC address is already present in $DHCPD_CONF..." && exit 1
BASE_IP=$(echo $VMNET8_SUBNET | cut -d. -f1-3)
IP="$BASE_IP.$START_IP"
while grep -q "fixed-address $IP" "$DHCPD_CONF" ; do
echo "IP Taken: $IP"
IP="$BASE_IP.$((`echo $IP | cut -d. -f4` + 1))"
done
echo "Using IP: $IP"
CONF=$(cat<<EOS
## VM Path: $VMROOT
host vm-static-${MAC//:/-} {
hardware ethernet $MAC;
fixed-address $IP;
}
EOS)
cat<<EOS
Appending to $DHCPD_CONF:
$CONF
EOS
echo "$CONF" >> "$DHCPD_CONF"
# Restart services...
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --configure
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --stop
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --start
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment