From fab4c085eb9309930e9d46e83136422756cdf6ef Mon Sep 17 00:00:00 2001 From: ache Date: Mon, 15 Jan 2018 04:25:36 +0100 Subject: Rename DHCP --- autoDHCP.sh | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100755 autoDHCP.sh (limited to 'autoDHCP.sh') diff --git a/autoDHCP.sh b/autoDHCP.sh new file mode 100755 index 0000000..f6e144d --- /dev/null +++ b/autoDHCP.sh @@ -0,0 +1,110 @@ +#!/bin/env bash + +interface=""; +server="dhcpd" +ip="10.5.5.11" +range="/24" + +# Todo : List interface ✓ +# Select first ✓ +# Select dhcpd or dnsmasq ✓ +# Select ip range ✓ +# Select ip ✓ +# Help ✓ +# Install from Makefile ✓ + +# Default interface is the first non-wireless interfaces (sorted alpha-num) + +if [ "$1" == "dns" ] ; then + server="dnsmasq" + shift +fi + +if [ "$1" == "help" -o "$1" == "-h" -o "$1" == "--help" ] ; then + echo 'Usage : autoDHCP [interface] [ip/range] [dns]' + echo '' + echo 'You also put the server type at the start of the command' + echo 'Ex :' + echo '> autoDHCP wlp3s0 10.5.5.11/24' + echo '> autoDHCP eth0 192.168.0.1 dns' + echo '> autoDHCP dns eth0 192.168.0.1/30' +fi + + + +if [ "$1" ] ; then + interface="$1" + echo "Interface set to ${interface}" +fi + +if [ "$2" ] ; then + if [[ "$2" =~ .*/.* ]] ; then + ip=$(echo $2 | cut -d'/' -f1) + range="`echo $2 | cut -d'/' -f2 `" + echo "Range set to ${range}" + else + ip="$2" + fi + echo "Ip set to ${ip}" +fi + +if [ "$3" == "dns" ] ; then + server="dnsmasq" +fi + + + + + + + +function guess_nowifi { + for i in `ls /sys/class/net/`; do + if [ ! -d "/sys/class/net/$i/wireless" ] ; then + if [ "$interface" ] ; then + if [[ "$i" < "$înterface" ]] ; then + interface="$i" + fi + else + interface="$i" + fi + fi + done +} + + + +if [ -z "$interface" ] ; then + guess_nowifi +fi + +sudo ip l set "$interface" up +sudo ip a r "${ip}/${range}" dev "$interface" + +if [ "$server" == "dhcpd" ] ; then + sudo /usr/bin/dhcpd -4 -q -pf /run/dhcpd4.pid "$interface" +elif [ "$server" == "dnsmasq" ] ; then + + echo 'Configure dnsmasq' + + ip_start=$(echo "${ip}" | sed 's/\(\([0-9]\{1,3\}\.\)\{3\}\)[0-9]\{1,3\}/\1/') + ip_start_tmp=$(echo "${ip}" | sed 's/\(\([0-9]\{1,3\}\.\)\{3\}\)//') + ip_start_tmp=$((ip_start_tmp+1)) + + dhcp_range=$(echo ${ip_start}{$ip_start_tmp\,,254}),12h + echo "$dhcp_range" + + cat <<< $( + echo " + interface=${interface} + listen-address=${ip} + bind-interfaces + dhcp-range=${dhcp_range}" + ) > /tmp/dnsmasq.conf + sudo dnsmasq --conf-file=/tmp/dnsmasq.conf + +else + echo "Server name ${server} unknow" +fi + +echo 'Should be ready ;)' -- cgit v1.2.3