aboutsummaryrefslogtreecommitdiffstats
path: root/samples/rc.autofs.in
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>1999-03-07 22:37:52 +0000
committerH. Peter Anvin <hpa@zytor.com>1999-03-07 22:37:52 +0000
commitd3d1aba95f5a6d1b424cc61f421772482f8ee8bd (patch)
treefc52f7dc299fb2a8b88a3df9b3dfa97c9ee01e3c /samples/rc.autofs.in
parent4f18e463590cc3940c82af59ae1e792b3d90f79f (diff)
downloadautofs3-d3d1aba95f5a6d1b424cc61f421772482f8ee8bd.tar.gz
autofs3-d3d1aba95f5a6d1b424cc61f421772482f8ee8bd.tar.xz
autofs3-d3d1aba95f5a6d1b424cc61f421772482f8ee8bd.zip
Move rc.autofs to rc.autofs.in
Diffstat (limited to 'samples/rc.autofs.in')
-rw-r--r--samples/rc.autofs.in261
1 files changed, 261 insertions, 0 deletions
diff --git a/samples/rc.autofs.in b/samples/rc.autofs.in
new file mode 100644
index 0000000..2fc9391
--- /dev/null
+++ b/samples/rc.autofs.in
@@ -0,0 +1,261 @@
+#! /bin/bash
+#
+# $Id$
+#
+# rc file for automount using a Sun-style "master map".
+# We first look for a local /etc/auto.master, then a YP
+# map with that name
+#
+# On most distributions, this file should be called:
+# /etc/rc.d/init.d/autofs or /etc/init.d/autofs
+#
+
+# This is used in the Debian distribution to determine the proper
+# location for the S- and K-links to this init file.
+# The following value is extracted by debstd to figure out how to
+# generate the postinst script. Edit the field to change the way the
+# script is registered through update-rc.d (see the manpage for
+# update-rc.d!)
+#
+FLAGS="defaults 21"
+
+#
+# Location of the automount daemon
+#
+DAEMON=/usr/sbin/automount
+
+#
+# Determine which kind of configuration we're using
+#
+system=unknown
+if [ -f /etc/debian_version ]; then
+ system=debian
+ initdir=/etc/init.d
+elif [ -f /etc/redhat-release ]; then
+ system=redhat
+ initdir=/etc/rc.d/init.d
+else
+ echo "$0: Unknown system, please port and contact autofs@linux.kernel.org" 1>&2
+ exit 1
+fi
+
+if [ $system = redhat ]; then
+ . $initdir/functions
+fi
+
+test -e $DAEMON || exit 0
+thisscript="$0"
+if [ ! test -f $thisscript ]; then
+ echo "$0: Cannot find myself" 1>&2
+ exit 1
+fi
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+export PATH
+
+#
+# We can add local options here
+# e.g. localoptions='rsize=8192,wsize=8192'
+#
+localoptions=''
+
+#
+# This function will build a list of automount commands to execute in
+# order to activate all the mount points. It is used to figure out
+# the difference of automount points in case of a reload
+#
+function getmounts()
+{
+#
+# Check for local maps to be loaded
+#
+if [ -f /etc/auto.master ]
+then
+ cat /etc/auto.master | sed -e '/^#/d' -e '/^$/d'| (
+ while read dir map options
+ do
+ if [ ! -z "$dir" -a ! -z "$map" \
+ -a x`echo "$map" | cut -c1` != 'x-' ]
+ then
+ map=`echo "/etc/$map" | sed -e 's:^/etc//:/:'`
+ options=`echo "$options" | sed -e 's/\(^\|[ \t]\)-/\1/g'`
+ if [ -x $map ]; then
+ echo "$DAEMON $dir program $map $options $localoptions"
+ elif [ -f $map ]; then
+ echo "$DAEMON $dir file $map $options $localoptions"
+ else
+ echo "$DAEMON $dir `basename $map` $options $localoptions"
+ fi
+ fi
+ done
+ )
+fi
+
+#
+# Check for YellowPage maps to be loaded
+#
+if [ -e /usr/bin/ypcat ] && [ `ypcat -k auto.master 2>/dev/null | wc -l` -gt 0 ]
+then
+ ypcat -k auto.master | (
+ while read dir map options
+ do
+ if [ ! -z "$dir" -a ! -z "$map" \
+ -a x`echo "$map" | cut -c1` != 'x-' ]
+ then
+ map=`echo "$map" | sed -e 's/^auto_/auto./'`
+ if echo $options | grep -- '-t' >/dev/null 2>&1 ; then
+ mountoptions="--timeout $(echo $options | \
+ sed 's/^.*-t\(imeout\)*[ \t]*\([0-9][0-9]*\).*$/\2/g')"
+ fi
+ options=`echo "$options" | sed -e '
+ s/--*t\(imeout\)*[ \t]*[0-9][0-9]*//g
+ s/\(^\|[ \t]\)-/\1/g'`
+ echo "$DAEMON $dir yp $map $options $localoptions"
+ fi
+ done
+ )
+fi
+}
+
+#
+# Status lister.
+#
+function status()
+{
+ echo "Configured Mount Points:"
+ echo "------------------------"
+ getmounts
+ echo ""
+ echo "Active Mount Points:"
+ echo "--------------------"
+ ps ax|grep "[0-9]:[0-9][0-9] automount " | (
+ while read pid tt stat time command; do echo $command; done
+ )
+}
+
+
+#
+# Redhat start/stop function.
+#
+function redhat()
+{
+
+#
+# See how we were called.
+#
+case "$1" in
+ start)
+ # Check if the automounter is already running?
+ if [ ! -f /var/lock/subsys/automount ]; then
+ echo 'Starting automounter: '
+ getmounts | sh
+ touch /var/lock/subsys/automount
+ fi
+ ;;
+ stop)
+ kill -TERM $(/sbin/pidof /usr/sbin/automount)
+ rm -f /var/lock/subsys/automount
+ ;;
+ reload|restart)
+ if [ ! -f /var/lock/subsys/automount ]; then
+ echo "Automounter not running"
+ exit 1
+ fi
+ echo "Checking for changes to /etc/auto.master ...."
+ TMP1=`mktemp /tmp/autofs.XXXXXX` || { echo "could not make temp file" >& 2; exit 1; }
+ TMP2=`mktemp /tmp/autofs.XXXXXX` || { echo "could not make temp file" >& 2; exit 1; }
+ getmounts >$TMP1
+ ps ax|grep "[0-9]:[0-9][0-9] automount " | (
+ while read pid tt stat time command; do
+ echo "$command" >>$TMP2
+ if ! grep -q "^$command" $TMP2; then
+ kill -USR2 $pid
+ echo "Stop $command"
+ fi
+ done
+ )
+ cat $TMP1 | ( while read x; do
+ if ! grep -q "^$x" $TMP2; then
+ $x
+ echo "Start $x"
+ fi
+ done )
+ rm -f $TMP1 $TMP2
+ ;;
+ status)
+ status
+ ;;
+ *)
+ echo "Usage: $initdir/autofs {start|stop|restart|reload|status}"
+ exit 1
+esac
+}
+
+#
+# Debian start/stop functions.
+#
+function debian()
+{
+#
+# See how we were called.
+#
+case "$1" in
+ start)
+ echo -n 'Starting automounter:'
+ getmounts | while read cmd mnt rest
+ do
+ echo -n " $mnt"
+ pidfile=/var/run/automount`echo $mnt | sed 's/\//./'`.pid
+ start-stop-daemon --start --pidfile $pidfile --quiet \
+ --exec $DAEMON -- $mnt $rest
+ #
+ # Automount needs a '--pidfile' or '-p' option.
+ # For now we look for the pid ourself.
+ #
+ ps ax | grep "[0-9]:[0-9][0-9] $DAEMON $mnt" | (
+ read pid rest
+ echo $pid > $pidfile
+ echo "$mnt $rest" >> $pidfile
+ )
+ done
+ echo "."
+ ;;
+ stop)
+ echo 'Stopping automounter.'
+ start-stop-daemon --stop --quiet --signal USR2 --exec $DAEMON
+ ;;
+ reload|restart)
+ echo "Reloading automounter: checking for changes ... "
+ TMP=/var/run/automount.tmp
+ getmounts >$TMP
+ for i in /var/run/automount.*.pid
+ do
+ pid=`head -n 1 $i 2>/dev/null`
+ [ "$pid" = "" ] && continue
+ command=`tail +2 $i`
+ if ! grep -q "^$command" $TMP
+ then
+ echo "Stopping automounter: $command"
+ kill -USR2 $pid
+ fi
+ done
+ rm -f $TMP
+ $thisscript start
+ ;;
+ status)
+ status
+ ;;
+ *)
+ echo "Usage: $initdir/autofs {start|stop|restart|reload|status}" >&2
+ exit 1
+ ;;
+esac
+}
+
+if [ $system = debian ]; then
+ debian "$@"
+elif [ $system = redhat ]; then
+ redhat "$@"
+fi
+
+exit 0