mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
| 3 | |
| 4 | ############################################################## |
| 5 | # |
| 6 | # Copyright (c) International Business Machines Corp., 2003 |
| 7 | # |
| 8 | # This program is free software; you can redistribute it and/or modify |
| 9 | # it under the terms of the GNU General Public License as published by |
| 10 | # the Free Software Foundation; either version 2 of the License, or |
| 11 | # (at your option) any later version. |
| 12 | # |
| 13 | # This program is distributed in the hope that it will be useful, |
| 14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See |
| 16 | # the GNU General Public License for more details. |
| 17 | # |
| 18 | # You should have received a copy of the GNU General Public License |
| 19 | # along with this program; if not, write to the Free Software |
Wanlong Gao | 4548c6c | 2012-10-19 18:03:36 +0800 | [diff] [blame] | 20 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 21 | # |
| 22 | # FILE : autofs1.sh |
| 23 | # USAGE : autofs1.sh <disk_partition> |
| 24 | # |
| 25 | # DESCRIPTION : A script that will test autofs on Linux system. |
| 26 | # REQUIREMENTS: |
| 27 | # 1) System with a floppy device with a floppy disk in it. |
| 28 | # 2) A spare (scratch) disk partition of 100MB or larger. |
| 29 | # |
| 30 | # HISTORY : |
| 31 | # 06/11/2003 Prakash Narayana (prakashn@us.ibm.com) |
mreed10 | 8e24726 | 2005-08-02 18:25:06 +0000 | [diff] [blame] | 32 | # 08/01/2005 Michael Reed (mreed10@us.ibm.com) |
| 33 | # - Added an check to see if a directory exists |
| 34 | # - This prevents unnessary failures |
| 35 | # - Correction to an echo statement |
| 36 | # - Added an additional error message if a floppy disk is not present |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 37 | # |
| 38 | # CODE COVERAGE: |
| 39 | # 41.46% - fs/autofs/dirhash.c |
| 40 | # 33.33% - fs/autofs/init.c |
| 41 | # 27.70% - fs/autofs/inode.c |
| 42 | # 38.16% - fs/autofs/root.c |
| 43 | # 0.00% - fs/autofs/symlink.c |
| 44 | # 43.40% - fs/autofs/waitq.c |
| 45 | # |
| 46 | ############################################################## |
| 47 | |
| 48 | |
| 49 | ############################################################## |
| 50 | # |
| 51 | # Make sure that uid=root is running this script. |
| 52 | # Validate the command line argument as a block special device. |
| 53 | # Make sure that autofs package has been installed. |
| 54 | # Make sure that autofs module is built into the kernel or loaded. |
| 55 | # |
| 56 | ############################################################## |
| 57 | |
| 58 | if [ $UID != 0 ] |
| 59 | then |
| 60 | echo "FAILED: Must have root access to execute this script" |
| 61 | exit 1 |
| 62 | fi |
| 63 | |
| 64 | if [ $# != 1 ] |
| 65 | then |
| 66 | echo "FAILED: Usage $0 <disk_partition>" |
mridge | a64d322 | 2004-02-06 16:00:20 +0000 | [diff] [blame] | 67 | echo "Example: $0 /dev/hdc1" |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 68 | exit 1 |
| 69 | else |
| 70 | disk_partition=$1 |
| 71 | if [ ! -b $disk_partition ] |
| 72 | then |
| 73 | echo "FAILED: Usage $0 <block special disk_partition>" |
| 74 | exit 1 |
| 75 | fi |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 76 | mkfs -t ext2 $disk_partition |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 77 | fi |
| 78 | |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 79 | rpm -q -a | grep autofs |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 80 | if [ $? != 0 ] |
| 81 | then |
| 82 | echo "FAILED: autofs package is not installed" |
| 83 | exit 1 |
| 84 | fi |
| 85 | |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 86 | grep autofs /proc/filesystems |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 87 | if [ $? != 0 ] |
| 88 | then |
| 89 | echo "FAILED: autofs module is not built into the kernel or loaded" |
| 90 | exit 1 |
| 91 | fi |
| 92 | |
| 93 | |
| 94 | ############################################################## |
| 95 | # |
| 96 | # Pick the floppy device name from /etc/fstab |
| 97 | # Format (mkfs -t ext2) the floppy to ext2 file system |
| 98 | # Create the /etc/auto.master |
| 99 | # Create the /etc/auto.media |
| 100 | # Create /AUTOFS directory. |
| 101 | # |
| 102 | ############################################################## |
| 103 | |
| 104 | floppy_dev=`grep floppy /etc/fstab | awk '{print $1}'` |
| 105 | |
mridge | a64d322 | 2004-02-06 16:00:20 +0000 | [diff] [blame] | 106 | echo "Found floppy device:$floppy_dev" |
| 107 | |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 108 | if [ $floppy_dev != "" ] |
| 109 | then |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 110 | /sbin/mkfs -t ext2 $floppy_dev |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 111 | if [ $? != 0 ] |
| 112 | then |
| 113 | echo "FAILED: mkfs -t ext2 $floppy_dev failed" |
mreed10 | 8e24726 | 2005-08-02 18:25:06 +0000 | [diff] [blame] | 114 | echo "Insert a disk into the floppy drive" |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 115 | exit 1 |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 116 | fi |
| 117 | fi |
| 118 | |
| 119 | if [ ! -d /AUTOFS ] |
| 120 | then |
mridge | a64d322 | 2004-02-06 16:00:20 +0000 | [diff] [blame] | 121 | mkdir -m 777 /AUTOFS |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 122 | fi |
| 123 | |
mridge | a64d322 | 2004-02-06 16:00:20 +0000 | [diff] [blame] | 124 | echo "/AUTOFS/MEDIA /etc/auto.media" > /etc/auto.master |
| 125 | echo "floppy -fstype=ext2 :$floppy_dev" > /etc/auto.media |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 126 | |
| 127 | |
| 128 | ############################################################## |
| 129 | # |
| 130 | # Verify that "/etc/init.d/autofs start|restart|stop|status|reload" |
| 131 | # command works. |
| 132 | # |
| 133 | # If fails, cleanup and exit. |
| 134 | # |
| 135 | ############################################################## |
| 136 | |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 137 | /etc/init.d/autofs start |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 138 | if [ $? != 0 ] |
| 139 | then |
| 140 | rm -rf /etc/auto.master /etc/auto.media /AUTOFS |
| 141 | echo "FAILED: "/etc/init.d/autofs start"" |
| 142 | exit 1 |
| 143 | fi |
mridge | a64d322 | 2004-02-06 16:00:20 +0000 | [diff] [blame] | 144 | echo "Resuming test, please wait..." |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 145 | sleep 15 |
| 146 | |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 147 | /etc/init.d/autofs stop |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 148 | if [ $? != 0 ] |
| 149 | then |
| 150 | rm -rf /etc/auto.master /etc/auto.media /AUTOFS |
| 151 | echo "FAILED: "/etc/init.d/autofs stop"" |
| 152 | exit 1 |
| 153 | else |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 154 | /etc/init.d/autofs start |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 155 | fi |
mridge | a64d322 | 2004-02-06 16:00:20 +0000 | [diff] [blame] | 156 | echo "Resuming test, please wait..." |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 157 | sleep 15 |
| 158 | |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 159 | /etc/init.d/autofs restart |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 160 | if [ $? != 0 ] |
| 161 | then |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 162 | /etc/init.d/autofs stop |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 163 | rm -rf /etc/auto.master /etc/auto.media /AUTOFS |
| 164 | echo "FAILED: "/etc/init.d/autofs restart"" |
| 165 | exit 1 |
| 166 | fi |
mridge | a64d322 | 2004-02-06 16:00:20 +0000 | [diff] [blame] | 167 | echo "Resuming test, please wait..." |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 168 | sleep 15 |
| 169 | |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 170 | /etc/init.d/autofs status |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 171 | if [ $? != 0 ] |
| 172 | then |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 173 | /etc/init.d/autofs stop |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 174 | rm -rf /etc/auto.master /etc/auto.media /AUTOFS |
| 175 | echo "FAILED: "/etc/init.d/autofs status"" |
| 176 | exit 1 |
| 177 | fi |
| 178 | |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 179 | /etc/init.d/autofs reload |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 180 | if [ $? != 0 ] |
| 181 | then |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 182 | /etc/init.d/autofs stop |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 183 | rm -rf /etc/auto.master /etc/auto.media /AUTOFS |
| 184 | echo "FAILED: "/etc/init.d/autofs reload"" |
| 185 | exit 1 |
| 186 | fi |
| 187 | |
| 188 | |
| 189 | ############################################################## |
| 190 | # |
| 191 | # Tryout some error code paths by: |
| 192 | # (1) Write into automount directory |
| 193 | # (2) Remove automount parent directory |
| 194 | # (3) Automount the floppy disk |
| 195 | # (4) Hit automounter timeout by sleep 60; then wakeup with error |
| 196 | # condition. |
| 197 | # |
| 198 | ############################################################## |
| 199 | |
mreed10 | 8e24726 | 2005-08-02 18:25:06 +0000 | [diff] [blame] | 200 | echo "forcing error paths and conditions..." |
mridge | a64d322 | 2004-02-06 16:00:20 +0000 | [diff] [blame] | 201 | |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 202 | mkdir /AUTOFS/MEDIA/mydir 2>&1 > /dev/null |
| 203 | rm -rf /AUTOFS 2>&1 > /dev/null |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 204 | |
| 205 | mkdir /AUTOFS/MEDIA/floppy/test |
| 206 | cp /etc/auto.master /etc/auto.media /AUTOFS/MEDIA/floppy/test |
| 207 | sync; sync |
mridge | a64d322 | 2004-02-06 16:00:20 +0000 | [diff] [blame] | 208 | echo "Resuming test, please wait..." |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 209 | sleep 60 |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 210 | mkdir /AUTOFS/MEDIA/mydir 2>&1 > /dev/null |
| 211 | rm -rf /AUTOFS 2>&1 > /dev/null |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 212 | |
| 213 | |
| 214 | ############################################################## |
| 215 | # |
| 216 | # Add an entry to the /etc/auto.master and reload. |
| 217 | # |
| 218 | ############################################################## |
| 219 | |
mridge | a64d322 | 2004-02-06 16:00:20 +0000 | [diff] [blame] | 220 | echo "/AUTOFS/DISK /etc/auto.disk" >> /etc/auto.master |
| 221 | echo "disk -fstype=auto,rw,sync :$disk_partition " > /etc/auto.disk |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 222 | /etc/init.d/autofs reload |
mridge | a64d322 | 2004-02-06 16:00:20 +0000 | [diff] [blame] | 223 | echo "Resuming test, please wait..." |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 224 | sleep 30 |
| 225 | |
mridge | a64d322 | 2004-02-06 16:00:20 +0000 | [diff] [blame] | 226 | |
| 227 | |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 228 | mkdir /AUTOFS/DISK/disk/test |
| 229 | cp /etc/auto.master /etc/auto.media /AUTOFS/DISK/disk/test |
| 230 | sync; sync |
mridge | a64d322 | 2004-02-06 16:00:20 +0000 | [diff] [blame] | 231 | echo "Resuming test, please wait..." |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 232 | sleep 60 |
| 233 | |
mreed10 | 8e24726 | 2005-08-02 18:25:06 +0000 | [diff] [blame] | 234 | |
| 235 | if [ -e /AUTOFS/DISK/disk/test ]; then |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 236 | cd /AUTOFS/DISK/disk/test |
mreed10 | 8e24726 | 2005-08-02 18:25:06 +0000 | [diff] [blame] | 237 | umount /AUTOFS/DISK/disk/ 2>&1 > /dev/null |
| 238 | if [ $? = 0 ] |
| 239 | then |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 240 | /etc/init.d/autofs stop |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 241 | rm -rf /etc/auto.master /etc/auto.media /etc/auto.disk /AUTOFS |
| 242 | echo "FAILED: unmounted a busy file system!" |
| 243 | exit 1 |
mreed10 | 8e24726 | 2005-08-02 18:25:06 +0000 | [diff] [blame] | 244 | fi |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 245 | cd |
| 246 | umount /AUTOFS/DISK/disk/ |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 247 | if [ $? != 0 ] |
mreed10 | 8e24726 | 2005-08-02 18:25:06 +0000 | [diff] [blame] | 248 | then |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 249 | /etc/init.d/autofs stop |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 250 | rm -rf /etc/auto.master /etc/auto.media /etc/auto.disk /AUTOFS |
| 251 | echo "FAILED: Could not unmount automounted file system" |
| 252 | exit 1 |
mreed10 | 8e24726 | 2005-08-02 18:25:06 +0000 | [diff] [blame] | 253 | fi |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 254 | fi |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 255 | # |
| 256 | # Mount the disk partition somewhere else and then reference automount |
| 257 | # point for disk partition. |
| 258 | # |
| 259 | mount -t ext2 $disk_partition /mnt/ |
| 260 | ls -l /AUTOFS/DISK/disk |
| 261 | umount /mnt |
| 262 | |
| 263 | |
| 264 | ####################################################### |
| 265 | # |
| 266 | # Just before exit, stop autofs and cleanup. |
| 267 | # |
| 268 | ####################################################### |
| 269 | |
Chris Dearman | 37550cf | 2012-10-17 19:54:01 -0700 | [diff] [blame] | 270 | /etc/init.d/autofs stop |
mridge | 06925cd | 2003-07-08 18:05:01 +0000 | [diff] [blame] | 271 | rm -rf /etc/auto.master /etc/auto.media /etc/auto.disk /AUTOFS |
| 272 | echo "PASSED: $0 passed!" |
| 273 | exit 0 |