Автор Тема: pppoe-server Debian Wheezy init.d script  (Прочетена 3415 пъти)

mystical

  • Напреднали
  • *****
  • Публикации: 326
  • Distribution: Debian, FreeBSD
  • Window Manager: XFCE
    • Профил
    • WWW
pppoe-server Debian Wheezy init.d script
« -: Apr 24, 2013, 09:01 »
Здравейте!
Искам да напиша един прост код за стартирате и изключване на PPPoE сървър.
Проблема са полетата в тъмно черно, които се предполага, че ще проверят дали има включен процес.
Когато стартирам скрипта с
bash /etc/init.d/pppoe-server
или
dash /etc/init.d/pppoe-server
няма никакви проблеми, но при старнирането на системата започва да се дъне.
Доколкото видях в Wheezy използват dash shell и би трябвало да няма проблеми.

nano /etc/init.d/pppoe-server
Цитат
Код
GeSHi (Bash):
  1. #!/bin/sh
  2.  
  3. ### BEGIN INIT INFO
  4. # Provides:          pppoe-server
  5. # Required-Start:    $network $syslog
  6. # Required-Stop:     $network $syslog
  7. # Default-Start:     2 3 4 5
  8. # Default-Stop:      0 1 6
  9. # Short-Description: Roaring Peguin PPPoE server
  10. # Description:       Roaring Peguin PPPoE server
  11. ### END INIT INFO
  12. #
  13. # Author: mystical <mystical.bg@gmail.com>
  14. #
  15.  
  16. . /lib/lsb/init-functions
  17.  
  18. NAME="pppoe-server"
  19. PROGRAM="/usr/sbin/pppoe-server"
  20. CONFIG=/etc/default/pppoe-server
  21. PIDFILE="/var/run/pppoe-server.pid"
  22. DESCR="Roaring Peguin PPPoE Server"
  23.  
  24. if [ -r /etc/default/$NAME ]; then
  25.  . /etc/default/$NAME
  26. fi
  27.  
  28. pppoe_status=`ps -e | grep -c pppoe-server`
  29.  
  30. case "$1" in
  31. start)
  32. log_daemon_msg "Starting $DESCR $NAME"
  33. if [ "$pppoe_status" = "0" ]; then
  34. start-stop-daemon --start --pidfile $PIDFILE --make-pidfile --exec $PROGRAM -- $OPTIONS
  35. log_end_msg 0
  36. else
  37. log_progress_msg "seems to be running already"
  38. log_end_msg 1
  39. fi
  40. ;;
  41. stop)
  42. log_daemon_msg "Stopping $DESCR $NAME"
  43. if [ "$pppoe_status" = "1" ]; then
  44. start-stop-daemon --stop --quiet --oknodo --exec $PROGRAM
  45. rm -f $PIDFILE
  46. log_end_msg 0
  47. else
  48. log_progress_msg "seems not to be running"
  49. log_end_msg 1
  50. fi
  51. ;;
  52. restart)
  53. $0 stop
  54. sleep 1
  55. $0 start
  56. ;;
  57. *)
  58. log_success_msg "Usage: /etc/init.d/pppoe-server {start|stop|restart}"
  59. exit 1
  60. ;;
  61. esac
  62. exit 0


chmod +x /etc/init.d/pppoe-server
insserv pppoe-server
update-rc.d pppoe-server defaults


nano /etc/default/pppoe-server
Код:
# Options, that provided to pppoe-server
OPTIONS="-I eth0 -L 10.128.0.1 -R 10.128.1.1 -k"


#   -I if_name     -- Specify interface (default eth0.)
#   -T timeout     -- Specify inactivity timeout in seconds.
#   -C name        -- Set access concentrator name.
#   -m MSS         -- Clamp incoming and outgoing MSS options.
#   -L ip          -- Set local IP address.
#   -l             -- Increment local IP address for each session.
#   -R ip          -- Set start address of remote IP pool.
#   -S name        -- Advertise specified service-name.
#   -O fname       -- Use PPPD options from specified file
#                     (default /etc/ppp/pppoe-server-options).
#   -p fname       -- Optain IP address pool from specified file.
#   -N num         -- Allow 'num' concurrent sessions.
#   -o offset      -- Assign session numbers starting at offset+1.
#   -f disc:sess   -- Set Ethernet frame types (hex).
#   -s             -- Use synchronous PPP mode.
#   -X pidfile     -- Write PID and lock pidfile.
#   -q /path/pppd  -- Specify full path to pppd.
#   -Q /path/pppoe -- Specify full path to pppoe.
#   -k             -- Use kernel-mode PPPoE.
#   -u             -- Pass 'unit' option to pppd.
#   -r             -- Randomize session numbers.
#   -d             -- Debug session creation.
#   -x n           -- Limit to 'n' sessions/MAC address.
#   -P             -- Check pool file for correctness and exit.
#   -i             -- Ignore PADI if no free sessions.
#   -h             -- Print usage information.
« Последна редакция: Apr 24, 2013, 14:04 от mystical »
Активен

Ако не можеш да градиш, поне не руши!

mystical

  • Напреднали
  • *****
  • Публикации: 326
  • Distribution: Debian, FreeBSD
  • Window Manager: XFCE
    • Профил
    • WWW
Re: pppoe-server Debian Wheezy init.d script
« Отговор #1 -: Apr 24, 2013, 14:01 »
В Debian dash shell  идва като подразбиращ се интерпретатор, за което разработчиците имат основания. Но за сметка на bash разполага с ограничени възможности. След много опити разбрах, че резултата от ps -e | grep -c pppoe-server може да бъде много неочакван, поради което реших да пробвам с start-stop-daemon. За сега изглежда, че работи нормално. Ето и кода, ако някой реши да го плозва:

Код
GeSHi (Bash):
  1. #!/bin/sh
  2.  
  3. ### BEGIN INIT INFO
  4. # Provides:          pppoe-server
  5. # Required-Start:    $network $syslog
  6. # Required-Stop:     $network $syslog
  7. # Default-Start:     2 3 4 5
  8. # Default-Stop:      0 1 6
  9. # Short-Description: Roaring Peguin PPPoE server
  10. # Description:       Roaring Peguin PPPoE server
  11. ### END INIT INFO
  12. #
  13. # Author: mystical <mystical.bg@gmail.com>
  14. #
  15.  
  16. . /lib/lsb/init-functions
  17.  
  18. NAME="pppoe-server"
  19. PROGRAM="/usr/sbin/pppoe-server"
  20. CONFIG=/etc/default/pppoe-server
  21. PIDFILE="/var/run/pppoe-server.pid"
  22. DESCR="Roaring Peguin PPPoE Server"
  23.  
  24. if [ -r /etc/default/$NAME ]; then
  25.  . /etc/default/$NAME
  26. fi
  27.  
  28. case "$1" in
  29. start)
  30. log_daemon_msg "Starting $DESCR $NAME"
  31. if /sbin/start-stop-daemon --start --quiet --exec $PROGRAM --test; then
  32. /sbin/start-stop-daemon --start --pidfile $PIDFILE --make-pidfile --exec $PROGRAM -- $OPTIONS
  33. log_end_msg 0
  34. else
  35. log_progress_msg "seems to be running already"
  36. log_end_msg 1
  37. fi
  38. ;;
  39. stop)
  40. log_daemon_msg "Stopping $DESCR $NAME"
  41. if /sbin/start-stop-daemon --stop --quiet --exec $PROGRAM --test; then
  42. /sbin/start-stop-daemon --stop --quiet --oknodo --exec $PROGRAM
  43. rm -f $PIDFILE
  44. log_end_msg 0
  45. else
  46. log_progress_msg "seems not to be running"
  47. log_end_msg 1
  48. fi
  49. ;;
  50. restart)
  51. $0 stop
  52. sleep 1
  53. $0 start
  54. ;;
  55. *)
  56. log_success_msg "Usage: /etc/init.d/pppoe-server {start|stop|restart}"
  57. exit 1
  58. ;;
  59. esac
  60. exit 0
« Последна редакция: Apr 24, 2013, 14:05 от mystical »
Активен

Ако не можеш да градиш, поне не руши!