AIX: rc.samba
rc.samba for smbd
This is an advanced new version ;-)
I have separated everything in functions, therefore actions may be put together from these modules as required (less repeat).
The script is still incomplete, as there was a problem logging start and stop actions. I will fix it someday...
The name service, nmbd is not handled in this script!
#!/usr/bin/ksh
#
# Samba control script
# (c) LGee
#
# Variables specific to the Samba installation
x_libpath=/usr/local/lib
x_smbpath="/usr/local/bin:/usr/local/sbin"
x_smbconf=/usr/local/etc/smb.conf
x_smbdpid=/usr/local/var/locks/smbd-smb.conf.pid
export LIBPATH="$x_libpath"
export PATH=/usr/bin:/usr/sbin:$x_smbpath
x_action="$1"
x_user=$(logname)
## Functions
log_result()
{
logger -t samba action: "$x_action" user: "$x_user": "$x_result"
}
log_restart()
{
logger -t samba action: restart \(stop/start\) user: "$x_user": see the following lines
}
rc_start()
{
smbd -D -s "$x_smbconf" -d 1 \
&& echo "\nSamba was started successfully\n" \
|| echo "\nERROR: failed to start Samba\n"
}
rc_stop()
{
kill -TERM $(<"$x_smbdpid") 2> /dev/null \
&& echo "\nSamba was stopped successfully\n" \
|| echo "\nERROR: Samba stop failed (is it running?)\n"
}
rc_status()
{
smbcontrol -s "$x_smbconf" $(<"$x_smbdpid") ping > /dev/null \
&& echo "\nSamba is running\n" \
|| echo "\nSamba is NOT running\n"
}
rc_reload()
{
kill -HUP $(<"$x_smbdpid") 2> /dev/null \
&& echo "\nSamba was reloaded successfully\n" && x_result=success \
|| echo "\nERROR: Samba reload failed (is it running?)\n" && x_result=failure
logger -t samba action: "$x_action" user: "$x_user": "$x_result"
}
## Main
case "$x_action" in
checkconf)
testparm -s -f "$x_smbconf"
;;
status)
rc_status
;;
start)
rc_start
log_result
;;
stop)
rc_stop
log_result
;;
restart)
log_restart
rc_stop
log_result
rc_start
log_result
;;
reload)
rc_reload
;;
*)
echo "\nUsage: "$0" checkconf|status|start|stop|restart|reload\n"
esac
...
This is a simple initial version; scroll down for a newer, better one.
#!/usr/bin/ksh
#
# Samba control script
# (c) LGee
#
# Variables specific to the Samba installation
x_libpath=/usr/local/lib
x_smbpath="/usr/local/bin:/usr/local/sbin"
x_smbconf=/usr/local/etc/smb.conf
x_smbdpid=/usr/local/var/locks/smbd-smb.conf.pid
export LIBPATH="$x_libpath"
export PATH=/usr/bin:/usr/sbin:$x_smbpath
#x_user=$(who -m | read username junk; echo $username || echo UNKNOWN)
x_user=$(logname)
case "$1" in
checkconf)
testparm -s -f "$x_smbconf"
;;
status)
# smbstatus -s "$x_smbconf"
smbcontrol -s "$x_smbconf" $(<"$x_smbdpid") ping > /dev/null \
&& echo "\nSamba is running\n" \
|| echo "\nSamba is NOT running\n"
;;
start)
smbd -D -s "$x_smbconf" -d 1 \
&& ( echo "\nSamba was started successfully\n" ; x_result=success ) \
|| ( echo "\nERROR: failed to start Samba\n" ; x_result=failure )
logger -t samba Samba start attempt through user "$x_user": "$x_result"
;;
reload)
kill -HUP $(<"$x_smbdpid") 2> /dev/null \
&& ( echo "\nSamba was reloaded successfully\n" ; x_result=success ) \
|| ( echo "\nERROR: Samba reload failed (is it running?)\n" ; x_result=failure )
logger -t samba Samba reload attempt through user "$x_user": "$x_result"
;;
*)
echo "\nUsage: "$0" checkconf|status|start|stop|reload\n"
esac