#!/bin/sh # ctdb event script for Samba PATH=/bin:/usr/bin:$PATH . /etc/ctdb/functions loadconfig ctdb cmd="$1" shift [ "$CTDB_MANAGES_SAMBA" = "yes" ] || exit 0 case $cmd in startup) # wait for all shared directories to become available smb_dirs=`testparm -st 2> /dev/null | egrep '^\s*path = ' | cut -d= -f2` ctdb_wait_directories "Samba" $smb_dirs # make sure samba is not already started service smb stop > /dev/null 2>&1 service winbind stop > /dev/null 2>&1 # start Samba service. Start it reniced, as under very heavy load # the number of smbd processes will mean that it leaves few cycles for # anything else nice service smb start service winbind start # wait for the Samba tcp ports to become available smb_ports=`testparm -stv 2> /dev/null | egrep '\s*smb ports =' | cut -d= -f2` ctdb_wait_tcp_ports "Samba" $smb_ports ;; takeip) # nothing special for Samba ;; releaseip) # nothing special for Samba ;; recovered) # nothing special for Samba exit 0 ;; shutdown) # shutdown Samba when ctdb goes down service smb stop service winbind stop ;; monitor) testparm -st 2>&1 | egrep '^WARNING|^ERROR|^Unknown' && { echo "`date` ERROR: testparm shows smb.conf is not clean" exit 1 } smb_dirs=`testparm -st 2> /dev/null | egrep '^\s*path = ' | cut -d= -f2` ctdb_check_directories "Samba" $smb_dirs smb_ports=`testparm -stv 2> /dev/null | egrep '\s*smb ports =' | cut -d= -f2` ctdb_check_tcp_ports "Samba" $smb_ports ;; esac # ignore unknown commands exit 0