#!/bin/bash
NAME_S=smbd
DAEMON_S=/usr/sbin/$NAME_S
NAME_N=nmbd
DAEMON_N=/usr/sbin/$NAME_N
NAME_W=winbindd
DAEMON_W=/usr/sbin/$NAME_W
config_file=/etc/samba.d/smb.conf
. @SVIdir@/functions
status() {
[ -e $1 ] || return 3;
i=`cat "$1"`
state=`egrep '^State' /proc/$i/status 2>/dev/null| sed 's if [ x$state = x -o x$state = xZ ]; then
return 2 fi
return 0 }
WinbdConfig() {
local config_file=$1; shift
egrep -q '[^
found=0;
for i in /etc/pam.d/*; do
if [ ! -f $i ]; then next; fi
egrep -q '[^ done
if [ $found != 0 ]; then
egrep -q '^passwd:.*winbind' /etc/nsswitch.conf && return 1
egrep -q '^shadow:.*winbind' /etc/nsswitch.conf && return 1
egrep -q '^group:.*winbind' /etc/nsswitch.conf && return 1
fi
return 0
}
case "$1" in
start)
[ ! -e $SVIlock ] || exit 0
[ -x $DAEMON_S -a -x $DAEMON_N ] || exit 5
SVIemptyConfig $config_file && exit 6
echo -n "Starting $SVIsubsys services: "
ssd -S -n $NAME_S -x $DAEMON_S -- $OPTIONS_SMB
WinbdConfig $config_file || ssd -S -n $NAME_W -x $DAEMON_W -- $OPTIONS_WINBD
ssd -S -n $NAME_N -x $DAEMON_N -- $OPTIONS_NMB
ret=$?
echo "."
touch $SVIlock
;;
stop)
[ -e $SVIlock ] || exit 0
echo -n "Stopping $SVIsubsys services: "
ssd -K -p /var/lock/samba.d/$NAME_S.pid -n $NAME_S ssd -K -p /var/lock/samba.d/$NAME_W.pid -n $NAME_W ssd -K -p /var/lock/samba.d/$NAME_N.pid -n $NAME_N
ret=$?
echo "."
rm -f $SVIlock
;;
force-reload)
[ -e $SVIlock ] || exit 0
$0 restart
ret=$?
;;
reload)
echo -n "Reloading $SVIsubsys service configuration: "
ssd -K --signal 1 -p /var/lock/samba.d/$NAME_N.pid -n $NAME_N ssd -K --signal 1 -p /var/lock/samba.d/$NAME_W.pid -n $NAME_W ssd -K --signal 1 -p /var/lock/samba.d/$NAME_S.pid -n $NAME_S ret=$?
echo "."
;;
restart)
$0 stop
$0 start
ret=$?
;;
status)
echo -n "Checking status of $SVIsubsys service: "
status /var/lock/samba.d/$NAME_N.pid
ret=$?
if [ $ret -eq 0 ]; then
echo -n "$NAME_N "
status /var/lock/samba.d/$NAME_S.pid
ret=$?
[ $ret -eq 0 ] && echo -n "$NAME_S"
fi
echo "."
;;
*)
echo "Usage: $SVIscript {start|stop|restart|force-reload|reload|status}"
ret=2
;;
esac
exit $ret