#!/bin/sh # copy to /oasis/util/shell path # chmod 755 log="logger -t usb-mount.sh -s " ${log} "变量:$1 $2" ACTION=$1 DEVBASE=$2 DEVICE="/dev/${DEVBASE}" # See if this drive is already mounted, and if so where MOUNT_POINT=$(mount | grep ${DEVICE} | awk '{ print $3 }') do_mount() { if [[ -n ${MOUNT_POINT} ]]; then ${log} "Warning: ${DEVICE} is already mounted at ${MOUNT_POINT}" exit 1 fib # Get info for this drive: $ID_FS_LABEL and $ID_FS_TYPE eval $(blkid -o udev ${DEVICE} | grep -i -e "ID_FS_LABEL" -e "ID_FS_TYPE") #ID_FS_LABEL=新加卷 #ID_FS_LABEL_ENC=新加卷 #ID_FS_TYPE=ntfs # Figure out a mount point to use # LABEL=${ID_FS_LABEL} LABEL=${DEVBASE} if grep -q " /media/${LABEL} " /etc/mtab; then # Already in use, make a unique one LABEL+="-${DEVBASE}" fi DEV_LABEL="${LABEL}" # Use the device name in case the drive doesn't have label if [ -z ${DEV_LABEL} ]; then DEV_LABEL="${DEVBASE}" fi MOUNT_POINT="/media/${DEV_LABEL}" ${log} "Mount point: ${MOUNT_POINT}" mkdir -p ${MOUNT_POINT} # # Global mount options # OPTS="rw,relatime" # # # File system type specific mount options # if [[ ${ID_FS_TYPE} == "vfat" ]]; then # OPTS+=",users,gid=100,umask=000,shortname=mixed,utf8=1,flush" # fi # if ! mount -o ${OPTS} ${DEVICE} ${MOUNT_POINT}; then # ${log} "Error mounting ${DEVICE} (status = $?)" # rmdir "${MOUNT_POINT}" # exit 1 # else # # Track the mounted drives # echo "${MOUNT_POINT}:${DEVBASE}" | cat >>"/var/log/usb-mount.track" # fi # # ${log} "Mounted ${DEVICE} at ${MOUNT_POINT}" case ${ID_FS_TYPE} in vfat) mount -t vfat -o rw,relatime,users,gid=100,umask=000,shortname=mixed,utf8=1,flush ${DEVICE} ${MOUNT_POINT} ;; ext[2-4]) mount -o noatime ${DEVICE} ${MOUNT_POINT} >/dev/null 2>&1 ;; exfat) mount -t exfat ${DEVICE} ${MOUNT_POINT} >/dev/null 2>&1 ;; ntfs) ntfs-3g ${DEVICE} ${MOUNT_POINT} ;; iso9660) mount -t iso9660 ${DEVICE} ${MOUNT_POINT} ;; *) /bin/rmdir "${MOUNT_POINT}" exit 0 ;; esac } do_umount() { if [[ -z ${MOUNT_POINT} ]]; then ${log} "Warning: ${DEVICE} is not mounted" else umount -l ${DEVICE} ${log} "Unmounted ${DEVICE} from ${MOUNT_POINT}" /bin/rmdir "${MOUNT_POINT}" sed -i.bak "\@${MOUNT_POINT}@d" /var/log/usb-mount.track fi } case "${ACTION}" in add) do_mount ;; remove) do_umount ;; *) exit 1 ;; esac