#!/bin/bash #.Y / 70 83 / / / / 105 / / / / / / ;A4_QUER.Y #.YT 3 2 0 0 3 3 1 / / / #.H!a!0:linux//io/com/net/dhcp/THIS!0.!c # # tbrü 20sep2011; # # dhcp_ THIS : dhcp-functions # +++++++++++++++++++++++++++ # # MyHash("linux//io/com/net/dhcp/THIS") = 0x0D01 # # * for every function: # * if returned result is not commented, the function returns 0 on no-error. SCRIPTS=root/bin . /$SCRIPTS/io/con_/THIS dhcp_qHost() # ?Host # $1 : host-name. # $2, $3...: . # * write eventually ""-file. # * return "0" if file is written; else return "1". { local File0x0D01 HostName0x0D01 HostName0x0D01="$1"; shift 1 File0x0D01="/etc/dhcp/hosts.d/${HostName0x0D01}" if [ -f "$File0x0D01" ]; then echo "The File \"$File0x0D01\" already exists, do you want to" echo "overwrite it?" if ! con_YesQ; then return 1 # do not write to file. fi # else fi # else dhcp_host "$HostName0x0D01" $@ > "$File0x0D01" return 0 } dhcp_qHostBAT() # ?HostBAT # $1 : host-name. # $2, $3...: . # * write eventually ".BAT". { local File0x0D01 HostName0x0D01 HostName0x0D01="$1"; shift 1 File0x0D01="/etc/dhcp/hosts.d/${HostName0x0D01}.BAT" if [ -f "$File0x0D01" ]; then echo "The File \"$File0x0D01\" already exists, do you want to" echo "overwrite it?" if ! con_YesQ; then return 0 # do not write to file. fi # else fi # else echo "DHCP_ HOST $HostName0x0D01 $@" > "$File0x0D01" return 0 } dhcp_adjustTHIS() # $1 : host-name. # * add ""-declaration to dhcp-configuration. { local THIS_File0x0D01 THIS_File0x0D01="/etc/dhcp/hosts.d/THIS" # create temporary this-file: TempTHIS_File0x0D01="$(mktemp /etc/dhcp/hosts.d/THIS.tmp.XXXXXX)" echo "include \"/etc/dhcp/hosts.d/$1\";" >> "$THIS_File0x0D01" sort -o "$TempTHIS_File0x0D01" "$THIS_File0x0D01" # delete duplicate lines: uniq "$TempTHIS_File0x0D01" "$THIS_File0x0D01" rm -f "$TempTHIS_File0x0D01" return 0 } dhcp_HOST() # $1 : host-name. # $2, $3...: . # * add ""-declaration to dhcp-configuration. # * see "dhcp_hostUsage()". { local HostName0x0D01 HostName0x0D01="$1"; shift 1 if [ 0 -eq $# -o 0 -ne $(( $# % 2 )) ]; then # 0 or not an even # of remaining arguments. dhcp_hostUsage return 255 fi # else dhcp_qHostBAT "$HostName0x0D01" $@ if ! dhcp_qHost "$HostName0x0D01" $@; then # file has not been written. return 0 fi # else dhcp_adjustTHIS "$HostName0x0D01" service dhcpd restart return 0 } dhcp_host() # $1 : host-name. # $2, $3...: . # * print host-group-statement to stdout. { local HostName0x0D01 I0x0D01 HostName0x0D01="$1"; shift 1 echo "group" # for host-name echo " {" # = "". echo " option host-name \"$HostName0x0D01\";" # this name is set as # hostname." echo " option domain-name-servers 169.254.1.254;" I0x0D01=0 while [ 0 -ne $# ] do dhcp_host1Entry "$HostName0x0D01" $I0x0D01 "$1" "$2" shift 2 (( I0x0D01++ )) done echo " }" # /group return 0 } dhcp_host1Entry() # $1: host-name. # $2: host-index. # $3: . # $4: . # * print host-entry to stdout. { echo echo " host ${1}_${2}" # host-identifier; used to echo " {" # discern different host- # entries. echo " hardware ethernet $3;" # mandatory statement, # "" is not # found by name !!!" echo " fixed-address $4;" echo " }" return 0 } dhcp_hostUsage() { echo "Usage: DHCP_ HOST " echo "* \" := " echo " | ;\"" echo "* \" := ;\"" echo echo "* add \"\"-declaration to dhcp-configuration." return 0 }