1. 程式人生 > >dhcpd開源工程(三) dhcpd啟動指令碼

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後效果如下