FW: Config help!

Elliott Bujan ebujan at initialplants.com
Fri Mar 31 17:03:42 UTC 2006


This is the output for ifconfig
[root at frank sbin]# ./ifconfig
eth0      Link encap:Ethernet  HWaddr 00:06:29:4E:EF:94
          inet addr:192.9.200.19  Bcast:192.9.200.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:37838828 errors:0 dropped:0 overruns:0 frame:0
          TX packets:40904687 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:4204987252 (4010.1 Mb)  TX bytes:742522594 (708.1 Mb)
          Interrupt:11 Base address:0x4000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1419445 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1419445 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:180550060 (172.1 Mb)  TX bytes:180550060 (172.1 Mb)

Eth0 is the only interface other than the loopback;  I don't have any other
interface and it is running fine.  Like I said, this config worked prior to
3 days ago and I can't think of any changes.  The only one is that we
installed a new router at one of the sites (Dallas) and they no longer need
these dhcp services but it's not configured with ip helper-address.  This is
beyond my knowledge but I'm learning as I read your responses.

  Sorry I trimmed the output, here it is:


#!/bin/sh
#
# dhcpd         This shell script takes care of starting and stopping
#               dhcpd.
#
# chkconfig: - 65 35
# description: dhcpd provide access to Dynamic Host Control Protocol.

PIDFILE=/var/run/dhcpd.pid
+ PIDFILE=/var/run/dhcpd.pid
DAEMONFILE=/usr/sbin/dhcpd
+ DAEMONFILE=/usr/sbin/dhcpd
CONFIGFILE=/etc/dhcpd.conf
+ CONFIGFILE=/etc/dhcpd.conf
LEASEFILE=/var/lib/dhcp/dhcpd.leases
+ LEASEFILE=/var/lib/dhcp/dhcpd.leases


# Source function library.
. /etc/rc.d/init.d/functions
+ . /etc/rc.d/init.d/functions
#!/bin/bash
#
# functions     This file contains functions to be used by most or all
#               shell scripts in the /etc/init.d directory.
#
# Version:      @(#) /etc/init.d/functions 1.01 26-Oct-1993
#
# Author:       Miquel van Smoorenburg, <miquels at drinkel.nl.mugnet.org>
# Hacked by:    Greg Galloway and Marc Ewing
#
#
# i18n originally by:   Arnaldo Carvalho de Melo <acme at conectiva.com.br>,
#                       Wanderlei Antonio Cavassin
TEXTDOMAIN=initscripts
++ TEXTDOMAIN=initscripts
TEXTDOMAINDIR=/etc/locale
++ TEXTDOMAINDIR=/etc/locale

# Make sure umask is sane
umask 022
++ umask 022

# First set up a default search path.
export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin"
++ export PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
++ PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin

# Get a sane screen width
[ -z "${COLUMNS:-}" ] && COLUMNS=80
++ '[' -z '' ']'
++ COLUMNS=80

if [ -f /etc/sysconfig/i18n -a -z "${NOLOCALE:-}" ] ; then
  . /etc/sysconfig/i18n
  if [ "${LANG:-}" = "ja_JP.eucJP" -a "`/sbin/consoletype`" != "pty" ]; then
    unset LANG
  elif [ "${LANG:-}" = "ko_KR.eucKR" -a "`/sbin/consoletype`" != "pty" ];
then
    unset LANG
  elif [ "${LANG:-}" = "zh_CN.GB2312" -a "`/sbin/consoletype`" != "pty" ];
then
    unset LANG
  elif [ "${LANG:-}" = "zh_TW.Big5" -a "`/sbin/consoletype`" != "pty" ];
then
    unset LANG
  else
    export LANG
  fi
fi
++ '[' -f /etc/sysconfig/i18n -a -z '' ']'
++ . /etc/sysconfig/i18n
LANG="en_US"
+++ LANG=en_US
SUPPORTED="en_US:en"
+++ SUPPORTED=en_US:en
SYSFONT="lat0-sun16"
+++ SYSFONT=lat0-sun16
SYSFONTACM="iso01"
+++ SYSFONTACM=iso01
/sbin/consoletype
+++ /sbin/consoletype
++ '[' en_US = ja_JP.eucJP -a pty '!=' pty ']'
/sbin/consoletype
+++ /sbin/consoletype
++ '[' en_US = ko_KR.eucKR -a pty '!=' pty ']'
/sbin/consoletype
+++ /sbin/consoletype
++ '[' en_US = zh_CN.GB2312 -a pty '!=' pty ']'
/sbin/consoletype
+++ /sbin/consoletype
++ '[' en_US = zh_TW.Big5 -a pty '!=' pty ']'
++ export LANG

# Read in our configuration
if [ -z "${BOOTUP:-}" ]; then
  if [ -f /etc/sysconfig/init ]; then
      . /etc/sysconfig/init
  else
    # This all seem confusing? Look in /etc/sysconfig/init,
    # or in /usr/doc/initscripts-*/sysconfig.txt
    BOOTUP=color
    RES_COL=60
    MOVE_TO_COL="echo -en \\033[${RES_COL}G"
    SETCOLOR_SUCCESS="echo -en \\033[1;32m"
    SETCOLOR_FAILURE="echo -en \\033[1;31m"
    SETCOLOR_WARNING="echo -en \\033[1;33m"
    SETCOLOR_NORMAL="echo -en \\033[0;39m"
    LOGLEVEL=1
  fi
  if [ -x /sbin/consoletype ]; then
    if [ "`consoletype`" = "serial" ]; then
      BOOTUP=serial
      MOVE_TO_COL=
      SETCOLOR_SUCCESS=
      SETCOLOR_FAILURE=
      SETCOLOR_WARNING=
      SETCOLOR_NORMAL=
    fi
  fi
fi
++ '[' -z '' ']'
++ '[' -f /etc/sysconfig/init ']'
++ . /etc/sysconfig/init
# color => new RH6.0 bootup
# verbose => old-style bootup
# anything else => new style bootup without ANSI colors or positioning
BOOTUP=color
+++ BOOTUP=color
# column to start "[  OK  ]" label in
RES_COL=60
+++ RES_COL=60
# terminal sequence to move to that column. You could change this
# to something like "tput hpa ${RES_COL}" if your terminal supports it
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
+++ MOVE_TO_COL=echo -en \033[60G
# terminal sequence to set color to a 'success' color (currently: green)
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
+++ SETCOLOR_SUCCESS=echo -en \033[1;32m
# terminal sequence to set color to a 'failure' color (currently: red)
SETCOLOR_FAILURE="echo -en \\033[1;31m"
+++ SETCOLOR_FAILURE=echo -en \033[1;31m
# terminal sequence to set color to a 'warning' color (currently: yellow)
SETCOLOR_WARNING="echo -en \\033[1;33m"
+++ SETCOLOR_WARNING=echo -en \033[1;33m
# terminal sequence to reset to the default color.
SETCOLOR_NORMAL="echo -en \\033[0;39m"
+++ SETCOLOR_NORMAL=echo -en \033[0;39m
# default kernel loglevel on boot (syslog will reset this)
LOGLEVEL=3
+++ LOGLEVEL=3
# Set to anything other than 'no' to allow hotkey interactive startup...
PROMPT=yes
+++ PROMPT=yes
++ '[' -x /sbin/consoletype ']'
consoletype
+++ consoletype
++ '[' pty = serial ']'

if [ "${BOOTUP:-}" != "verbose" ]; then
   INITLOG_ARGS="-q"
else
   INITLOG_ARGS=
fi
++ '[' color '!=' verbose ']'
++ INITLOG_ARGS=-q

# Check if $pid (could be plural) are running
checkpid() {
        while [ "$1" ]; do
           [ -d /proc/$1 ] && return 0
           shift
        done
        return 1
}


# A function to start a program.
daemon() {
        # Test syntax.
        local gotbase=
        local base= user= nice= bg= pid
        nicelevel=0
        while [ "$1" != "${1##[-+]}" ]; do
          case $1 in
            '')    echo $"$0: Usage: daemon [+/-nicelevel] {program}"
                   return 1;;
            --check)
                   base=$2
                   gotbase="yes"
                   shift 2
                   ;;
            --check=?*)
                   base=${1#--check=}
                   gotbase="yes"
                   shift
                   ;;
            --user)
                   user=$2
                   shift 2
                   ;;
            --user=?*)
                   user=${1#--user=}
                   shift
                   ;;
            [-+][0-9]*)
                   nice="nice -n $1"
                   shift
                   ;;
            *)     echo $"$0: Usage: daemon [+/-nicelevel] {program}"
                   return 1;;
          esac
        done

        # Save basename.
        [ -z "$gotbase" ] && base=${1##*/}

        # See if it's already running. Look *only* at the pid file.
        pid=`pidfileofproc $base`

        [ -n "${pid:-}" ] && return

        # make sure it doesn't core dump anywhere; while this could mask
        # problems with the daemon, it also closes some security problems
        ulimit -S -c 0 >/dev/null 2>&1

        # Echo daemon
        [ "${BOOTUP:-}" = "verbose" ] && echo -n " $base"

        # And start it up.
        if [ -z "$user" ]; then
           $nice initlog $INITLOG_ARGS -c "$*"
        else
           $nice initlog $INITLOG_ARGS -c "su -s /bin/bash - $user -c
\"$*\""
        fi
        [ "$?" -eq 0 ] && success $"$base startup" || failure $"$base
startup"
}

# A function to stop a program.
killproc() {
        RC=0
        # Test syntax.
        if [ "$#" -eq 0 ]; then
                echo $"Usage: killproc {program} [signal]"
                return 1
        fi

        notset=0
        # check for second arg to be kill level
        if [ "$2" != "" ] ; then
                killlevel=$2
        else
                notset=1
                killlevel="-9"
        fi

        # Save basename.
        base=${1##*/}

        # Find pid.
        pid=`pidofproc $1`
        if [ -z "${pid:-}" ] ; then
                pid=`pidofproc $base`
        fi

        # Kill it.
        if [ -n "${pid:-}" ] ; then
                [ "$BOOTUP" = "verbose" ] && echo -n "$base "
                if [ "$notset" -eq "1" ] ; then
                       if checkpid $pid 2>&1; then
                           # TERM first, then KILL if not dead
                           kill -TERM $pid
                           usleep 100000
                           if checkpid $pid && sleep 1 &&
                              checkpid $pid && sleep 3 &&
                              checkpid $pid ; then
                                kill -KILL $pid
                                usleep 100000
                           fi
                        fi
                        checkpid $pid
                        RC=$?
                        [ "$RC" -eq 0 ] && failure $"$base shutdown" ||
success $"$base shutdown"
                        RC=$((! $RC))
                # use specified level only
                else
                        if checkpid $pid >/dev/null 2>&1; then
                                kill $killlevel $pid
                                RC=$?
                                [ "$RC" -eq 0 ] && success $"$base
$killlevel" || failure $"$base $killlevel"
                        fi
                fi
        else
            failure $"$base shutdown"
            RC=1
        fi

        # Remove pid file if any.
        if [ "$notset" = "1" ]; then
            rm -f /var/run/$base.pid
        fi
        return $RC
}

# A function to find the pid of a program. Looks *only* at the pidfile
pidfileofproc() {
        local base=${1##*/}
        local pid

        # Test syntax.
        if [ "$#" = 0 ] ; then
                echo $"Usage: pidfileofproc {program}"
                return 1
        fi

        # First try "/var/run/*.pid" files
        if [ -f /var/run/${base}.pid ] ; then
                local line p pid=
                read line < /var/run/${base}.pid
                for p in $line ; do
                       [ -z "${p//[0-9]/}" -a -d /proc/$p ] && pid="$pid $p"
                done
                if [ -n "${pid:-}" ] ; then
                        echo $pid
                        return 0
                fi
        fi
}

# A function to find the pid of a program.
pidofproc() {
        base=${1##*/}

        # Test syntax.
        if [ "$#" = 0 ] ; then
                echo $"Usage: pidofproc {program}"
                return 1
        fi

        # First try "/var/run/*.pid" files
        if [ -f /var/run/${base}.pid ] ; then
                local line p pid=
                read line < /var/run/${base}.pid
                for p in $line ; do
                       [ -z "${p//[0-9]/}" -a -d /proc/$p ] && pid="$pid $p"
                done
                if [ -n "${pid:-}" ] ; then
                        echo $pid
                        return 0
                fi
        fi

        # Next try "pidof"
        pidof -o $$ -o $PPID -o %PPID -x $1 || \
        pidof -o $$ -o $PPID -o %PPID -x ${base}
}

status() {
        local base=${1##*/}
        local pid

        # Test syntax.
        if [ "$#" = 0 ] ; then
                echo $"Usage: status {program}"
                return 1
        fi

        # First try "pidof"
        pid=`pidof -o $$ -o $PPID -o %PPID -x $1 || \
             pidof -o $$ -o $PPID -o %PPID -x ${base}`
        if [ "$pid" != "" ] ; then
                echo $"${base} (pid $pid) is running..."
                return 0
        fi

        # Next try "/var/run/*.pid" files
        if [ -f /var/run/${base}.pid ] ; then
                read pid < /var/run/${base}.pid
                if [ "$pid" != "" ] ; then
                        echo $"${base} dead but pid file exists"
                        return 1
                fi
        fi
        # See if /var/lock/subsys/${base} exists
        if [ -f /var/lock/subsys/${base} ]; then
                echo $"${base} dead but subsys locked"
                return 2
        fi
        echo $"${base} is stopped"
        return 3
}

echo_success() {
  [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
  echo -n "[  "
  [ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS
  echo -n $"OK"
  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
  echo -n "  ]"
  echo -ne "\r"
  return 0
}

echo_failure() {
  [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
  echo -n "["
  [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
  echo -n $"FAILED"
  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
  echo -n "]"
  echo -ne "\r"
  return 1
}

echo_passed() {
  [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
  echo -n "["
  [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
  echo -n $"PASSED"
  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
  echo -n "]"
  echo -ne "\r"
  return 1
}

# Log that something succeeded
success() {
  if [ -z "${IN_INITLOG:-}" ]; then
     initlog $INITLOG_ARGS -n $0 -s "$1" -e 1
  else
     # silly hack to avoid EPIPE killing rc.sysinit
     trap "" SIGPIPE
     echo "$INITLOG_ARGS -n $0 -s \"$1\" -e 1" >&21
     trap - SIGPIPE
  fi
  [ "$BOOTUP" != "verbose" ] && echo_success
  return 0
}

# Log that something failed
failure() {
  rc=$?
  if [ -z "${IN_INITLOG:-}" ]; then
     initlog $INITLOG_ARGS -n $0 -s "$1" -e 2
  else
     trap "" SIGPIPE
     echo "$INITLOG_ARGS -n $0 -s \"$1\" -e 2" >&21
     trap - SIGPIPE
  fi
  [ "$BOOTUP" != "verbose" ] && echo_failure
  return $rc
}

# Log that something passed, but may have had errors. Useful for fsck
passed() {
  rc=$?
  if [ -z "${IN_INITLOG:-}" ]; then
     initlog $INITLOG_ARGS -n $0 -s "$1" -e 1
  else
     trap "" SIGPIPE
     echo "$INITLOG_ARGS -n $0 -s \"$1\" -e 1" >&21
     trap - SIGPIPE
  fi
  [ "$BOOTUP" != "verbose" ] && echo_passed
  return $rc
}

# Run some action. Log its output.
action() {
  STRING=$1
  echo -n "$STRING "
  shift
  initlog $INITLOG_ARGS -c "$*" && success $"$STRING" || failure $"$STRING"
  rc=$?
  echo
  return $rc
}

# returns OK if $1 contains $2
strstr() {
  [ "$1" = "$2" ] && return 0
  slice=${1#*$2*}
  [ "$slice" = "$1" ] && return 1
  return 0
}

# Confirm whether we really want to run this service
confirm() {
  local YES=$"yY"
  local NO=$"nN"
  local CONT=$"cC"

  while : ; do
      echo -n $"Start service $1 (Y)es/(N)o/(C)ontinue? [Y] "
      read answer
      if strstr "$YES" "$answer" || [ "$answer" = "" ] ; then
         return 0
      elif strstr "$CONT" "$answer" ; then
         return 2
      elif strstr "$NO" "$answer" ; then
         return 1
      fi
  done
}

# Source networking configuration.
. /etc/sysconfig/network
+ . /etc/sysconfig/network
NETWORKING=yes
++ NETWORKING=yes
HOSTNAME=frank
++ HOSTNAME=frank
GATEWAY=192.9.200.253
++ GATEWAY=192.9.200.253
SUBNET=255.255.255.0
++ SUBNET=255.255.255.0
. /etc/sysconfig/dhcpd
+ . /etc/sysconfig/dhcpd
DHCPDARGS=eth0
++ DHCPDARGS=eth0

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
+ '[' yes = no ']'

[ -f ${DAEMONFILE} ] || exit 0
+ '[' -f /usr/sbin/dhcpd ']'
[ -f ${CONFIGFILE} ] || exit 0
+ '[' -f /etc/dhcpd.conf ']'
[ -f ${LEASEFILE} ] || exit 0
+ '[' -f /var/lib/dhcp/dhcpd.leases ']'

RETVAL=0
+ RETVAL=0
prog="dhcpd"
+ prog=dhcpd

start() {
        # Start daemons.
        echo -n $"Starting $prog: "
        daemon ${DAEMONFILE} -cf ${CONFIGFILE} -lf ${LEASEFILE} ${DHCPDARGS}
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dhcpd
        return $RETVAL
}

stop() {
        # Stop daemons.
        echo -n $"Shutting down $prog: "
        killproc dhcpd
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/dhcpd
        return $RETVAL
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload)
        stop
        start
        RETVAL=$?
        ;;
  condrestart)
        if [ -f /var/lock/subsys/dhcpd ]; then
            stop
            start
            RETVAL=$?
        fi
        ;;
  status)
        status dhcpd
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        exit 1
esac
+ start
+ echo -n 'Starting dhcpd: '
Starting dhcpd: + daemon /usr/sbin/dhcpd -cf /etc/dhcpd.conf -lf
/var/lib/dhcp/dhcpd.leases eth0
+ local gotbase=
+ local base= user= nice= bg= pid
+ nicelevel=0
+ '[' /usr/sbin/dhcpd '!=' /usr/sbin/dhcpd ']'
+ '[' -z '' ']'
+ base=dhcpd
pidfileofproc $base
++ pidfileofproc dhcpd
++ local base=dhcpd
++ local pid
++ '[' 1 = 0 ']'
++ '[' -f /var/run/dhcpd.pid ']'
++ local line p pid=
++ read line
++ '[' -z '' -a -d /proc/11375 ']'
++ pid= 11375
++ '[' -n ' 11375' ']'
++ echo 11375
++ return 0
+ pid=11375
+ '[' -n 11375 ']'
+ return
+ RETVAL=0
+ echo

+ '[' 0 -eq 0 ']'
+ touch /var/lock/subsys/dhcpd
+ return 0

exit $RETVAL
+ exit 0
[root at frank sbin]#



-----Original Message-----
From: dhcp-users-bounce at isc.org [mailto:dhcp-users-bounce at isc.org] On Behalf
Of Simon Hobson
Sent: Friday, March 31, 2006 10:51 AM
To: dhcp-users at isc.org
Subject: RE: FW: Config help!

Elliott Bujan wrote:

>+ daemon /usr/sbin/dhcpd -cf /etc/dhcpd.conf -lf 
>/var/lib/dhcp/dhcpd.leases eth0

This is the key line. It is starting the server to listen only on 
eth0 - so you must have a subnet to match eth0.

If you want to use anything other than eth0 then you'll need to edit 
the config file for the script - probably something like 
/etc/default/dhcpd (I could tell you exactly, but that's part of the 
shell output you've trimmed).

Simon


______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email 
______________________________________________________________________


______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email 
______________________________________________________________________


More information about the dhcp-users mailing list