119 lines
2.4 KiB
Bash
119 lines
2.4 KiB
Bash
|
#!/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
|