#!/bin/bash
############################################################################
#
# AutoMountISO:自动挂载/卸载ISO镜像
# Author:whodare#hotmail.com
#
#
# 功能 1.对于.ISO文件自动挂载,并自动开启文件浏览器浏览其内容
# 2.对于挂载点,自动完成卸载,并在必要时自动删除挂载点
#
# 整个脚本所完成的功能不需要用户的介入
#
###########################################################################
################################关键变量####################################
MOUNT_POINT="" # 挂载点
ISO_PATH="" # ISO镜像的路径
CMD="" # 挂载?卸载
###########################################################################

#根据操作对象的类型判断是挂载还是卸载
function judge()
{
if [ -d $1 ]
then #对象是目录,则进行卸载
{
CMD="umount"
MOUNT_POINT=$1
}
else #对象是文件,则进行挂载
{
# ISO_NAME=`basename $1`
# TYPE=${ISO_NAME##*.}
CMD="mount"
ISO_PATH=$1
}
fi
}
function do_umount
{
gksudo "$CMD $MOUNT_POINT" #卸载
gksudo "rm -rf $MOUNT_POINT" #删除挂载点
}

function do_mount
{
if mount|grep $ISO_PATH ##镜像已经被挂载过,则自动卸载之
then
{
zenity entity --error --title="提示" --text="文件$ISO_NAME的重复挂载被视为自动卸载"
gksudo "umount $ISO_PATH"
exit 0
}
else
{
count=0;
#寻找可用的挂载点
while df|grep -q /media/cdrom$count 2>/dev/null
do
let count=$count+1
done
#创建挂载点
MOUNT_POINT="/media/cdrom$count"
if [ ! -d $MOUNT_POINT ]
then
mkdir -p $MOUNT_POINT
fi
#挂载
gksudo "$CMD -t iso9660,udf -o ro,loop,utf8 $ISO_PATH $MOUNT_POINT"
#在文件管理器中浏览镜像的内容
nautilus $MOUNT_POINT
}
fi
}

judge "$1"
if [ $CMD = "umount" ]
then
do_umount
else
do_mount
fi
exit 0

这是一个用于自动挂载和卸载ISO镜像的bash脚本。它能根据操作的对象(文件或目录)决定是挂载还是卸载,并且在挂载后会自动打开文件浏览器浏览内容。脚本还包括了卸载后删除挂载点的功能,整个过程无需用户干预。

被折叠的 条评论
为什么被折叠?



