+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides: samba
+# Required-Start: $network $local_fs $remote_fs
+# Required-Stop: $network $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Should-Start: slapd cups
+# Should-Stop: slapd cups
+# Short-Description: start Samba daemons (nmbd and smbd)
+### END INIT INFO
+
+
+# Defaults
+RUN_MODE="daemons"
+
+# Reads config file (will override defaults above)
+[ -r /etc/default/samba ] && . /etc/default/samba
+
+PIDDIR=/var/run/samba
+NMBDPID=$PIDDIR/nmbd.pid
+SMBDPID=$PIDDIR/smbd.pid
+
+# clear conflicting settings from the environment
+unset TMPDIR
+
+# See if the daemons are there
+test -x /usr/sbin/nmbd -a -x /usr/sbin/smbd || exit 0
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start)
+ log_daemon_msg "Starting Samba daemons"
+ # Make sure we have our PIDDIR, even if it's on a tmpfs
+ install -o root -g root -m 755 -d $PIDDIR
+
+ if [ -n `which testparm` ]
+ then
+ NMBD_DISABLED=`testparm -s --parameter-name='disable netbios' 2>/dev/null`
+ fi
+ if [ "$NMBD_DISABLED" != 'Yes' ]; then
+ log_progress_msg "nmbd"
+ if ! start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/nmbd -- -D
+ then
+ log_end_msg 1
+ exit 1
+ fi
+ fi
+
+ if [ "$RUN_MODE" != "inetd" ]; then
+ log_progress_msg "smbd"
+ if ! start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/smbd -- -D; then
+ log_end_msg 1
+ exit 1
+ fi
+ fi
+
+ log_end_msg 0
+ ;;
+ stop)
+ log_daemon_msg "Stopping Samba daemons"
+ log_progress_msg "nmbd"
+
+ start-stop-daemon --stop --quiet --pidfile $NMBDPID
+ # Wait a little and remove stale PID file
+ sleep 1
+ if [ -f $NMBDPID ] && ! ps h `cat $NMBDPID` > /dev/null
+ then
+ # Stale PID file (nmbd was succesfully stopped),
+ # remove it (should be removed by nmbd itself IMHO.)
+ rm -f $NMBDPID
+ fi
+
+ if [ "$RUN_MODE" != "inetd" ]; then
+ log_progress_msg "smbd"
+ start-stop-daemon --stop --quiet --pidfile $SMBDPID
+ # Wait a little and remove stale PID file
+ sleep 1
+ if [ -f $SMBDPID ] && ! ps h `cat $SMBDPID` > /dev/null
+ then
+ # Stale PID file (nmbd was succesfully stopped),
+ # remove it (should be removed by smbd itself IMHO.)
+ rm -f $SMBDPID
+ fi
+ fi
+
+ log_end_msg 0
+
+ ;;
+ reload)
+ if [ "$RUN_MODE" != "inetd" ]; then
+ log_daemon_msg "Reloading /etc/samba/smb.conf" "smbd only"
+
+ start-stop-daemon --stop --quiet --signal HUP --pidfile $SMBDPID
+
+ log_end_msg 0
+ fi
+ ;;
+ restart|force-reload)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ status)
+ status="0"
+ NMBD_DISABLED=`testparm -s --parameter-name='disable netbios' 2>/dev/null`
+ if [ "$NMBD_DISABLED" != "Yes" ]; then
+ status_of_proc -p $NMBDPID /usr/sbin/nmbd nmbd || status=$?
+ fi
+ if [ "$RUN_MODE" != "inetd" ]; then
+ status_of_proc -p $SMBDPID /usr/sbin/smbd smbd || status=$?
+ fi
+ if [ "$NMBD_DISABLED" = "Yes" -a "$RUN_MODE" = "inetd" ]; then
+ status="4"
+ fi
+ exit $status
+ ;;
+ *)
+ echo "Usage: /etc/init.d/samba {start|stop|reload|restart|force-reload|status}"
+ exit 1
+ ;;
+esac
+
+exit 0