#!/bin/sh # # Written by Eloy A. Paris for Debian GNU/Linux. # PATH="/usr/sbin:/usr/bin:/sbin:/bin" DEBIAN_CONFIG=/etc/samba/debian_config NMBDPID=/var/state/samba/nmbd.pid SMBDPID=/var/state/samba/smbd.pid if [ ! -f $DEBIAN_CONFIG ]; then echo "The file $DEBIAN_CONFIG does not exist! There is something wrong" echo "with the installation of Samba on this system. Please re-install" echo "Samba." exit 1 fi # Read current Samba configuration . $DEBIAN_CONFIG reload=1 while [ $# -gt 0 ] do case "$1" in --run-from-inetd) run_from_inetd=1 shift ;; --run-as-daemons) run_from_inetd=0 shift ;; --no-reload) reload=0 shift ;; *) echo "Usage: $0 [--run-from-inetd|--run-as-daemons] [no-reload]" >&2 exit 1 ;; esac done # Make sure there are no Samba daemons (nmbd or smbd) running # if [ "$run_mode" = "from_inetd" ]; then # Samba is running from inetd - need to disable inetd before # killing the daemons. update-inetd --disable netbios-ssn update-inetd --disable netbios-ns start-stop-daemon --stop --oknodo --user root --name nmbd --quiet --pidfile $NMBDPID start-stop-daemon --stop --oknodo --user root --name smbd --quiet --pidfile $SMBDPID else # Samba is running as daemons /etc/init.d/samba stop fi if [ "x$run_from_inetd" = "x" ] then echo "Run Samba as daemons or from inetd?" echo -n "Press 'D' for to run as daemons or 'I' to run from inetd: [I] " read mode test -n "$mode" || mode="I" case "$mode" in [Dd]*) run_from_inetd=0 ;; *) run_from_inetd=1 ;; esac fi if [ "$run_from_inetd" = 1 ]; then echo "Samba will run from inetd. Run sambaconfig to reconfigure." echo "" update-inetd --enable netbios-ssn update-inetd --enable netbios-ns run_mode="from_inetd" else echo "Samba will run as daemons. Run sambaconfig to reconfigure." echo "" update-inetd --disable netbios-ssn update-inetd --disable netbios-ns run_mode="as_daemons" fi # Rebuild Debian configuration file (only thing that could have # changed so far is the variable called "run_mode". # Start the Samba daemons (take care of whether the user used the --no-reload # option and how Samba is running: from inetd or as daemons) echo "config_version=$config_version" > $DEBIAN_CONFIG echo "run_mode=$run_mode" >> $DEBIAN_CONFIG echo "smbpasswd_created=$smbpasswd_created" >> $DEBIAN_CONFIG if [ "$reload" = 0 ]; then echo "Samba will not start (--no-reload parameter provided). Please note" echo "that if you configured Samba to run from inetd, the Samba daemons" echo "will start automatically when there is traffic in the NetBIOS ports" elif [ "$run_from_inetd" = 1 ]; then echo "The --no-reload parameter was not provided so I assume you want" echo "to have the Samba daemons started. Since you are running from inetd" echo "the Samba daemosn will start automatically when there is traffic" echo "in the NetBIOS ports." else echo -n "The --no-reload parameter was not provided, start Samba now? [Y/n] " read yn test -n "$yn" || yn="Y" case "$yn" in [Nn]*) echo "Not started; to start later, do: /etc/init.d/samba start" echo -n "Press [ENTER] " read line ;; *) /etc/init.d/samba start ;; esac fi