123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- #!/bin/bash
- # copy to /casaOS/util/shell path
- # chmod 755
- log="logger -t usb-mount.sh -s "
- ACTION=$1
- DEVBASE=$2
- DEVICE="/dev/${DEVBASE}"
- # See if this drive is already mounted, and if so where
- MOUNT_POINT=$(lsblk -l -p -o name,mountpoint | grep ${DEVICE} | awk '{print $2}')
- do_mount() {
- if [ -n "${MOUNT_POINT}" ]; then
- ${log} "Warning: ${DEVICE} is already mounted at ${MOUNT_POINT}"
- exit 1
- fi
- # 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 " /DATA/USB_Storage_${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="/DATA/USB_Storage_${DEV_LABEL}"
- ${log} "Mount point: ${MOUNT_POINT}"
- mkdir -p ${MOUNT_POINT}
- # MOUNT_POINT="/DATA/USB_Storage1"
- # arr=("/DATA/USB_Storage1" "/DATA/USB_Storage2" "/DATA/USB_Storage3" "/DATA/USB_Storage4" "/DATA/USB_Storage5" "/DATA/USB_Storage6" "/DATA/USB_Storage7" "/DATA/USB_Storage8" "/DATA/USB_Storage9" "/DATA/USB_Storage10" "/DATA/USB_Storage11" "/DATA/USB_Storage12")
- # for folder in ${arr[@]}; do
- # #如果文件夹不存在,创建文件夹
- # if [ ! -d "$folder" ]; then
- # mkdir -p ${folder}
- # MOUNT_POINT=$folder
- # break
- # fi
- # done
- # ${log} "Mount point: ${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
- #/bin/kill -9 $(lsof ${MOUNT_POINT})
- umount -l ${DEVICE}
- ${log} "Unmounted ${DEVICE} from ${MOUNT_POINT}"
- if [ "`ls -A ${MOUNT_POINT}`" = "" ]; then
- /bin/rm -fr "${MOUNT_POINT}"
- fi
- sed -i.bak "\@${MOUNT_POINT}@d" /var/log/usb-mount.track
- fi
- }
- case "${ACTION}" in
- add)
- do_mount
- ;;
- remove)
- do_umount
- ;;
- *)
- exit 1
- ;;
- esac
|