#! /bin/sh # Copyright (c) 1999-2014 SUSE Linux Products GmbH, Nuernberg, Germany. # All rights reserved. # # Author: Thomas Fehr, 1999-2001 # Lars Mueller , 2002-2014 # Bjoern Jacke 2004 # # /etc/init.d/cifs # and its symbolic link # /usr/sbin/rccifs # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # ### BEGIN INIT INFO # Provides: cifs # Required-Start: $network $syslog # Should-Start: nfs nmb # Required-Stop: $network $syslog # Should-Stop: nfs nmb # Default-Start: 3 5 # Default-Stop: 0 1 2 6 # Short-Description: Import remote CIFS file systems # Description: Import remote CIFS file systems ### END INIT INFO # To access CIFS servers beyond the network broadcast domain it may be # necessary to also activate the nmb service. Also see section 'cifs # and nmb service' in /usr/share/doc/packages/samba/README.SUSE . /etc/rc.status rc_reset LC_ALL=en_US SMB_CONF="/etc/samba/smb.conf" CIFS_STATE_FILE="/run/cifs.state" SLEEP=1 TIMEOUT=10 grep -q " cifs " /proc/mounts test $? -eq 0 && cifs_used=yes || cifs_used=no case "$1" in start) grep -q '^[[:space:]]*[^#].*[[:space:]]cifs[[:space:]]' /etc/fstab rc=$? if [ ${rc} -ne 0 ]; then echo -n >&2 "No filesystem of type cifs active in /etc/fstab. " rc_status -s exit 6 fi echo -n "Mount CIFS File Systems " timer=${TIMEOUT} JOBS="none" printdot="" while [ "${JOBS}" ] && [ ${timer} -gt 0 ]; do if [ -z "${printdot}" ]; then echo -en "\nfrom /etc/fstab " mount -at cifs >/dev/null & PID=$! fi test -e /proc/$PID || JOBS="" if [ "${JOBS}" ]; then timer=$[${timer}-1] echo -n "." sleep ${SLEEP} printdot="yes" fi done test "${printdot}" && echo -n " " if [ "${JOBS}" -a ${timer} -eq 0 ]; then echo -n >&2 " Error: timeout while mount. " rc_failed fi rc_status -v touch ${CIFS_STATE_FILE} ;; stop) echo -n "Umount CIFS File Systems " if [ "${cifs_used}" = "yes" ]; then # # Unmount in background due to possible long timeouts # timer=${TIMEOUT} JOBS="none" printdot="" while [ "${JOBS}" ] && [ ${timer} -gt 0 ]; do if [ -z "${printdot}" ]; then umount -at cifs & PID=$! fi test -e /proc/$PID || JOBS="" if [ "${JOBS}" ]; then timer=$[${timer}-1] echo -n "." sleep ${SLEEP} printdot="yes" fi done test "${printdot}" && echo -n " " if [ "${JOBS}" -a ${timer} -eq 0 ]; then echo -n >&2 " Error: timeout while umount. " rc_failed fi fi rc_status -v ;; try-restart|condrestart) if test "$1" = "condrestart"; then echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}" fi $0 status if test $? = 0; then $0 restart else rc_reset fi rc_status ;; force-reload|restart) $0 stop $0 start rc_status ;; reload) echo -n "Reload mounted CIFS File Systems " rc_failed 3 rc_status -v ;; status) echo -n "Checking for mounted CIFS File Systems " if [ "${cifs_used}" = "yes" ]; then mount -t cifs | while read service on mountpoint type vfstype rest; do echo echo -n "${service} on ${mountpoint} type ${vfstype} " done else rc_failed 3 fi rc_status -v ;; probe) test ${CIFSTAB} -nt ${CIFS_STATE_FILE} -o \ ${SMB_CONF} -nt ${CIFS_STATE_FILE} && echo restart ;; *) echo "Usage: $0 {start|stop|status|force-reload|reload|restart|reload|probe}" exit 1 ;; esac rc_exit