#!/bin/bash dhcpd_file=/etc/udhcpd.conf interface=wlan0 do_start() { echo "starting hostap daemon" /etc/init.d/hostapd start echo "setting IP address of access point" ifconfig $interface $1 if ! grep -E -q "^interface\s+$interface" $dhcpd_file; then echo "Changing dhcpd interface to $interface" sed -r -i "s/^interface\s+.*$/interface $interface/" $dhcpd_file fi ocg-dhcpd start } do_stop() { echo "stopping hostap daemon" /etc/init.d/hostapd stop ocg-dhcpd stop } # main if [[ $# -lt 1 ]] then echo "usage: $0 start|stop|restart [access point IP address]" exit 1 elif [[ $# -eq 2 ]] then ret=1 if [[ $2 =~ ^([0-9]{1,3}\.){3,3}[0-9]{1,3}$ ]] then OIFS=$IFS IFS='.' ip=($2) IFS=$OFIS [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]] ret=$? fi if [[ ret -ne 0 ]] then echo "invalid IP address" exit 1 fi ip=$2 else ip="192.168.2.1" fi case $1 in start) do_start $ip ;; stop) do_stop ;; restart) do_stop sleep 1 do_start $ip ;; esac exit 0