Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- DB="cloud"
- USER="root"
- PASS="redacted"
- SYSTEM_VM_IDENTITY="/root/.ssh/id_rsa.cloud"
- # validate arguments
- if [ $# -ne 2 ]; then
- echo "Usage: $0 old-address new-address"
- exit 1
- fi
- for ADDRESS in $1 $2; do
- ipcalc -c $ADDRESS
- if [ $? -ne 0 ]; then
- echo "Invalid IP address"
- exit 2
- fi
- done
- # script variables
- MYSQL_OPTS="-u$USER -p$PASS -B --disable-column-names"
- VM_OLD_ADDRESS=$1
- VM_NEW_ADDRESS=$2
- VM_OLD_ADDRESS_ESCAPED=$(echo $VM_OLD_ADDRESS | sed 's/\./\\\./g')
- VM_NEW_ADDRESS_ESCAPED=$(echo $VM_NEW_ADDRESS | sed 's/\./\\\./g')
- VM_OLD_ADDRESS_UNDERSCORE=$(echo $VM_OLD_ADDRESS | sed 's/\./_/g')
- VM_NEW_ADDRESS_UNDERSCORE=$(echo $VM_NEW_ADDRESS | sed 's/\./_/g')
- ROUTER_ADDRESS=$(mysql $MYSQL_OPTS -e "select ip4_address from nics where vm_type='DomainRouter' and ip4_address like '169.254.%';" $DB)
- # edit nics table
- mysql $MYSQL_OPTS -e "update nics set ip4_address='$VM_NEW_ADDRESS' where ip4_address='$VM_OLD_ADDRESS';" $DB
- # edit address entries on router
- ssh -i $SYSTEM_VM_IDENTITY -p 3922 root@$ROUTER_ADDRESS "sed -i 's/$VM_OLD_ADDRESS_ESCAPED/$VM_NEW_ADDRESS_ESCAPED/g' /var/lib/misc/dnsmasq.leases"
- ssh -i $SYSTEM_VM_IDENTITY -p 3922 root@$ROUTER_ADDRESS "sed -i 's/$VM_OLD_ADDRESS_ESCAPED/$VM_NEW_ADDRESS_ESCAPED/g' /etc/dhcphosts.txt"
- ssh -i $SYSTEM_VM_IDENTITY -p 3922 root@$ROUTER_ADDRESS "sed -i 's/$VM_OLD_ADDRESS_UNDERSCORE/$VM_NEW_ADDRESS_UNDERSCORE/g' /etc/dhcphosts.txt"
- # restart dnsmasq
- ssh -i $SYSTEM_VM_IDENTITY -p 3922 root@$ROUTER_ADDRESS "service dnsmasq restart"
- echo "Now reboot the VM or restart the network service in the VM so that it obtains the new address via DHCP."
Advertisement
Add Comment
Please, Sign In to add comment