dhcpd开源工程(三) dhcpd启动脚本

脚本设计:脚本中必须包含个函数,start(),stop(),restart(),reload(),例如,键入service dhcpd start命令,会调用start函数,restart()和reload()很简单,stop函数中kill进程,并杀出pid文件,这里主要写start函数的设计思路,先检查是否有配置文件,若没有的话,直接退出并打印信息;检查指定路径是否有租约文件,若没有,创建;检查是否有pid文件,若有的话,说明dhcpd服务已经启动,退出并打印信息;调用dhcpd启动文件,-4表示是dhcpv4,-q表示自动发现接口,-cf指定conf文件路径,-lf指定租约文件路径
内容如下
#=============dhcpd content====================
config_file=/etc/dhcpd.conf
pidfile=/var/run/dhcpd.pid
lease_file=/var/db/dhcpd.leases
./etc/rc.d/init.d/functions
./etc/sysconfig/network

if [ ! -e $config_file ]; then
    echo " No config file at $config_file"
    exit 0
fi
RETVAL=0
start(){
    if [ ! -e $lease_file  ]; then
        echo " Creating $lease_file"
        touch $lease_file
    #elif [ -f $pid_file ]; then
        #PID=`cat $pidfile`
        #echo " ISC-DHCPD already running: $PID"
        #exit 2;
    else
      echo -n $"Starting ISC-DHCPD: "
        /usr/local/sbin/dhcpd eth0 -4 -q -cf /etc/dhcpd.conf -lf /usr/local/zddi/dhcp/db/dhcpd.leases
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dhcpd
    return $RETVAL
    fi
}

stop() {
    echo -n $"Stopping ISC-DHCPD: "
    killall dhcpd
    RETVAL=$?
    echo
[ $RETVAL -eq 0 ] && rm -f /var/run/dhcpd.pid /var/lock/subsys/dhcpd
    return $RETVAL
}

restart() {
    stop
    start
}

reload() {
    echo -n $"Reloading dhcpd: "
    killproc dhcpd -USR2
    RETVAL=$?
    echo
    return $RETVAL
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
    status dhcpd
    ;;
  restart)
    restart
    ;;
  condrestart)
    [ -f /var/lock/subsys/dhcpd ] && restart || :
    ;;
  reload)
    reload
    ;;
  *)
  echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
  exit 1
esac

exit $?
#==============dhcpd content==========
service dhcpd start后效果如下

猜你喜欢

转载自blog.csdn.net/kdb_viewer/article/details/80451986