[1108] | 1 | #!/bin/bash |
---|
| 2 | # |
---|
| 3 | # netfs Mount network filesystems. |
---|
| 4 | # |
---|
| 5 | # Authors: Bill Nottingham <notting@redhat.com> |
---|
| 6 | # AJ Lewis <alewis@redhat.com> |
---|
| 7 | # Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org> |
---|
| 8 | # |
---|
| 9 | # chkconfig: 345 25 75 |
---|
| 10 | # description: Mounts and unmounts all Network File System (NFS), \ |
---|
| 11 | # SMB/CIFS (Lan Manager/Windows), and NCP (NetWare) mount points. |
---|
| 12 | ### BEGIN INIT INFO |
---|
| 13 | # Provides: $remote_fs |
---|
| 14 | ### END INIT INFO |
---|
| 15 | |
---|
| 16 | [ -f /etc/sysconfig/network ] || exit 0 |
---|
| 17 | . /etc/init.d/functions |
---|
| 18 | . /etc/sysconfig/network |
---|
| 19 | |
---|
| 20 | NFSFSTAB=`LC_ALL=C awk '!/^#/ && $3 ~ /^nfs/ && $3 != "nfsd" && $4 !~ /noauto/ { print $2 }' /etc/fstab` |
---|
| 21 | SMBFSTAB=`LC_ALL=C awk '!/^#/ && $3 == "smbfs" && $4 !~ /noauto/ { print $2 }' /etc/fstab` |
---|
| 22 | CIFSFSTAB=`LC_ALL=C awk '!/^#/ && $3 == "cifs" && $4 !~ /noauto/ { print $2 }' /etc/fstab` |
---|
| 23 | NCPFSTAB=`LC_ALL=C awk '!/^#/ && $3 == "ncpfs" && $4 !~ /noauto/ { print $2 }' /etc/fstab` |
---|
| 24 | NETDEVFSTAB=`LC_ALL=C awk '!/^#/ && $4 ~/_netdev/ && $4 !~ /noauto/ { print $1 }' /etc/fstab` |
---|
| 25 | |
---|
| 26 | NFSMTAB=`LC_ALL=C awk '$3 ~ /^nfs/ && $3 != "nfsd" && $2 != "/" { print $2 }' /proc/mounts` |
---|
| 27 | SMBMTAB=`LC_ALL=C awk '$3 == "smbfs" { print $2 }' /proc/mounts` |
---|
| 28 | CIFSMTAB=`LC_ALL=C awk '$3 == "cifs" { print $2 }' /proc/mounts` |
---|
| 29 | NCPMTAB=`LC_ALL=C awk '$3 == "ncpfs" { print $2 }' /proc/mounts` |
---|
| 30 | NETDEVMTAB=`LC_ALL=C awk '$4 ~ /_netdev/ && $2 != "/" { print $2 }' /etc/mtab` |
---|
| 31 | |
---|
| 32 | # See how we were called. |
---|
| 33 | case "$1" in |
---|
| 34 | start) |
---|
| 35 | [ ! -f /var/lock/subsys/network -a ! -f /var/lock/subsys/NetworkManager ] && exit 0 |
---|
| 36 | [ -n "$NFSFSTAB" ] && |
---|
| 37 | { |
---|
| 38 | [ ! -f /var/lock/subsys/rpcbind ] && service rpcbind start |
---|
| 39 | action $"Mounting NFS filesystems: " mount -a -t nfs,nfs4 |
---|
| 40 | } |
---|
| 41 | [ -n "$SMBFSTAB" ] && action $"Mounting SMB filesystems: " mount -a -t smbfs |
---|
| 42 | [ -n "$CIFSFSTAB" ] && action $"Mounting CIFS filesystems: " mount -a -t cifs |
---|
| 43 | [ -n "$NCPFSTAB" ] && action $"Mounting NCP filesystems: " mount -a -t ncpfs |
---|
| 44 | [ -n "$NETDEVFSTAB" ] && |
---|
| 45 | { |
---|
| 46 | if [ -f /etc/multipath.conf -a -x /sbin/multipath ]; then |
---|
| 47 | modprobe dm-multipath >/dev/null 2>&1 |
---|
| 48 | /sbin/multipath -v 0 |
---|
| 49 | if [ -x /sbin/kpartx ]; then |
---|
| 50 | /sbin/dmsetup ls --target multipath --exec "/sbin/kpartx -a" |
---|
| 51 | fi |
---|
| 52 | fi |
---|
| 53 | if [ -x /sbin/lvm ]; then |
---|
| 54 | if /sbin/lvm vgscan > /dev/null 2>&1 ; then |
---|
| 55 | action $"Setting up Logical Volume Management:" /sbin/lvm vgchange -a y |
---|
| 56 | fi |
---|
| 57 | fi |
---|
| 58 | STRING=$"Checking network-attached filesystems" |
---|
| 59 | |
---|
| 60 | echo $STRING |
---|
| 61 | fsck -A -T -R -a -t opts=_netdev |
---|
| 62 | rc=$? |
---|
| 63 | |
---|
| 64 | if [ "$rc" -eq "0" ]; then |
---|
| 65 | success "$STRING" |
---|
| 66 | echo |
---|
| 67 | elif [ "$rc" -eq "1" ]; then |
---|
| 68 | skipped "$STRING" |
---|
| 69 | echo |
---|
| 70 | fi |
---|
| 71 | |
---|
| 72 | if [ "$rc" -gt 1 ]; then |
---|
| 73 | if [ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client --ping ; then |
---|
| 74 | /usr/bin/rhgb-client --details=yes >/dev/null 2>&1 |
---|
| 75 | fi |
---|
| 76 | |
---|
| 77 | failure "$STRING" |
---|
| 78 | echo |
---|
| 79 | echo |
---|
| 80 | echo $"*** An error occurred during the file system check." |
---|
| 81 | echo $"*** Dropping you to a shell; the system will reboot" |
---|
| 82 | echo $"*** when you leave the shell." |
---|
| 83 | |
---|
| 84 | str=$"(Repair filesystem)" |
---|
| 85 | PS1="$str \# # "; export PS1 |
---|
| 86 | [ "$SELINUX" = "1" ] && disable_selinux |
---|
| 87 | sulogin |
---|
| 88 | |
---|
| 89 | shutdown -r now |
---|
| 90 | fi |
---|
| 91 | } |
---|
| 92 | touch /var/lock/subsys/netfs |
---|
[4062] | 93 | action $"Mounting other filesystems: " mount -a -t nonfs,nfs4,smbfs,cifs,ncpfs,gfs > /dev/null 2>&1 |
---|
[1108] | 94 | ;; |
---|
| 95 | stop) |
---|
| 96 | # Unmount loopback stuff first |
---|
| 97 | __umount_loopback_loop |
---|
| 98 | if [ -n "$NETDEVMTAB" ]; then |
---|
| 99 | __umount_loop '$4 ~ /_netdev/ && $2 != "/" {print $2}' \ |
---|
| 100 | /etc/mtab \ |
---|
| 101 | $"Unmounting network block filesystems: " \ |
---|
| 102 | $"Unmounting network block filesystems (retry): " |
---|
| 103 | fi |
---|
| 104 | if [ -n "$NFSMTAB" ]; then |
---|
| 105 | __umount_loop '$3 ~ /^nfs/ && $2 != "/" {print $2}' \ |
---|
| 106 | /proc/mounts \ |
---|
| 107 | $"Unmounting NFS filesystems: " \ |
---|
| 108 | $"Unmounting NFS filesystems (retry): " \ |
---|
| 109 | "-f -l" |
---|
| 110 | fi |
---|
| 111 | [ -n "$SMBMTAB" ] && action $"Unmounting SMB filesystems: " umount -a -t smbfs |
---|
| 112 | [ -n "$CIFSMTAB" ] && action $"Unmounting CIFS filesystems: " umount -a -t cifs |
---|
| 113 | [ -n "$NCPMTAB" ] && action $"Unmounting NCP filesystems: " umount -a -t ncp,ncpfs |
---|
| 114 | rm -f /var/lock/subsys/netfs |
---|
| 115 | ;; |
---|
| 116 | status) |
---|
| 117 | if [ -f /proc/mounts ] ; then |
---|
| 118 | [ -n "$NFSFSTAB" ] && { |
---|
| 119 | echo $"Configured NFS mountpoints: " |
---|
| 120 | for fs in $NFSFSTAB; do echo $fs ; done |
---|
| 121 | } |
---|
| 122 | [ -n "$SMBFSTAB" ] && { |
---|
| 123 | echo $"Configured SMB mountpoints: " |
---|
| 124 | for fs in $SMBFSTAB; do echo $fs ; done |
---|
| 125 | } |
---|
| 126 | [ -n "$CIFSFSTAB" ] && { |
---|
| 127 | echo $"Configured CIFS mountpoints: " |
---|
| 128 | for fs in $CIFSFSTAB; do echo $fs ; done |
---|
| 129 | } |
---|
| 130 | [ -n "$NCPFSTAB" ] && { |
---|
| 131 | echo $"Configured NCP mountpoints: " |
---|
| 132 | for fs in $NCPFSTAB; do echo $fs ; done |
---|
| 133 | } |
---|
| 134 | [ -n "$NETDEVFSTAB" ] && { |
---|
| 135 | echo $"Configured network block devices: " |
---|
| 136 | for fs in $NETDEVFSTAB; do echo $fs ; done |
---|
| 137 | } |
---|
| 138 | [ -n "$NFSMTAB" ] && { |
---|
| 139 | echo $"Active NFS mountpoints: " |
---|
| 140 | for fs in $NFSMTAB; do echo $fs ; done |
---|
| 141 | } |
---|
| 142 | [ -n "$SMBMTAB" ] && { |
---|
| 143 | echo $"Active SMB mountpoints: " |
---|
| 144 | for fs in $SMBMTAB; do echo $fs ; done |
---|
| 145 | } |
---|
| 146 | [ -n "$CIFSMTAB" ] && { |
---|
| 147 | echo $"Active CIFS mountpoints: " |
---|
| 148 | for fs in $CIFSMTAB; do echo $fs ; done |
---|
| 149 | } |
---|
| 150 | [ -n "$NCPMTAB" ] && { |
---|
| 151 | echo $"Active NCP mountpoints: " |
---|
| 152 | for fs in $NCPMTAB; do echo $fs ; done |
---|
| 153 | } |
---|
| 154 | [ -n "$NETDEVMTAB" ] && { |
---|
| 155 | echo $"Active network block devices: " |
---|
| 156 | for fs in $NETDEVMTAB; do echo $fs ; done |
---|
| 157 | } |
---|
| 158 | else |
---|
| 159 | echo $"/proc filesystem unavailable" |
---|
| 160 | fi |
---|
| 161 | [ -r /var/lock/subsys/netfs ] || exit 2 |
---|
| 162 | ;; |
---|
| 163 | restart) |
---|
| 164 | $0 stop |
---|
| 165 | $0 start |
---|
| 166 | ;; |
---|
| 167 | reload) |
---|
| 168 | $0 start |
---|
| 169 | ;; |
---|
| 170 | *) |
---|
| 171 | echo $"Usage: $0 {start|stop|restart|reload|status}" |
---|
| 172 | exit 1 |
---|
| 173 | esac |
---|
| 174 | |
---|
| 175 | exit 0 |
---|