GMountISO V0.6,还是写着玩的用来在gnome环境里挂载iso的短脚本,打包成deb
还是自己写的小小脚本,用来挂载iso文件、卸载卷 的小脚本。 就算是0.6版了吧~~~~
写这个脚本,完全是出于学习,脚本中还有很多不足的地方有待改进。然而,我比较懒,先凑合着用吧,等到把最近的项目拿下以后再来好好学学scripting。
验证过,标准的mdf文件也可以挂载的,因为,按照脚本的写法,只要是用 file 命令得到的结果里包含 iso 9660 的文件,都可以用本脚本挂载。
点 这里 下载deb包,由于BlogJava只能上传zip/rar格式,所以又被压缩成了zip。以前也曾试着弄过deb包,结果初始化脚本没有写对,害得一位试用的兄弟卸载不了,在此,再次向那位兄弟表示歉意。这下,干脆就直接把脚本扔到/usr/bin里面了,可以随便卸载了。
#!/bin/bash
##################################################################################
#
# GMountISO 一个挂载iso文件的小脚本
# 作者:xiaosilent
# Email:[email protected]
# 版本: 0.6
# 依赖:zenity
# 用法:
# 1 , 图形界面下,在iso文件上右击选择打开方式,在命令栏里找到GMountISO,启动脚本
# 2 .1终端下,直接执行脚本,和图形界面下一样
# 2 .2终端下,gmountiso iso_path mount_path 直接完成挂载
#
##################################################################################
################### 定义变量 ##########################################
ISO_PATH = $ 1 #iso文件路径,从第一个参数里获取
MOUNTPOINT = $ 2 #挂载点,第二个参数
CHOSED_FUNCTION = "" #功能选择,挂载/卸载
ISMOUNTED = "" #挂载点是否已经被占用
################### 一些功能模块 #######################################
###功能选择 挂载/卸载
function choosefunction(){
CHOSED_FUNCTION = `zenity --title = " 选择要执行的操作 " --list --width = 100 --radiolist --column = " 是否选中 " --column = " 操作类型 " TRUE " 挂载新卷 " FALSE " 卸载旧卷 " `
if [ "$?" -eq "1" ]
then
echo " 没有选择,直接退出 "
exit 0
fi
}
###获取ISO文件的路径
function getISOPath(){
if [ "$ISO_PATH" = "" ] #命令行参数为空
then
ISO_PATH = `zenity --file-selection --title " 选择要挂载的ISO文件 " --filename = " ~ " ` #弹出文件选择对话框
if [ "$ISO_PATH" = "" ] #从文件对话框 " 取消 " ,给出提示信息,程序退出。
then
zenity --error --title = " 错误信息 " --text = " 您没有指定要挂载的ISO文件! "
exit 1
fi
fi
if [ `file $ISO_PATH | grep "ISO 9660" | wc -c` -eq "0" ]
then
zenity --error --title = " 错误信息 " --text = " 读取ISO文件出错,请确认文件存在且是标准的ISO格式 "
exit 1
fi
}
###获取挂载点路径
function getMountPoint(){
if [ "$MOUNTPOINT" = "" ] #没有从命令行里制定挂载路径
then
MOUNTPOINT = `zenity --file-selection --directory --title = " 请选择ISO文件挂载目录 " --filename = " /media/iso " `
if [ "$MOUNTPOINT" = "" ] #选择了 " 取消 " , 给出提示信息,程序退出。
then
zenity --error --title = " 错误信息 " --text = " 您没有指定挂载目录 "
exit 1
fi
fi
}
###检测挂载点是否存在
function checkMountPoint_Exist(){
if [ ! -e $MOUNTPOINT ] #监测挂载点是否存在
then #挂载点 不存在
zenity --error --title = " 错误信息 " --text = " 挂载目录$MOUNTPOINT不存在 "
exit 1
fi
}
###检测所指定的挂载点是否为目录
function checkMountPoint_Directory(){
if [ ! -d $MOUNTPOINT ] #如果挂载点不是一个目录
then
enity --error --title = " 错误信息 " --text = " 挂载目录$MOUNTPOINT不是目录 "
exit 1
fi
}
###检测指定的挂载点是否已经被使用
function checkMountPoint_Mounted(){
ISMOUNTED = `grep $MOUNTPOINT /etc/mtab | wc -c`
if [ "$ISMOUNTED" -gt "0" ]
then
ISMOUNTED = " TRUE "
else
ISMOUNTED = " FALSE "
fi
}
###执行 卸载 的操作
function doUMount(){
if [ "$ISMOUNTED" = "TRUE" ]
then
zenity --warning --title = " 确认卸载 " --text = " 即将卸载$MOUNTPOINT下的文件卷。\n\n在确认卸载以前,请确认该卸载操作是安全的!\n\n是否确定要进行卸载? "
if [ $? -eq 1 ]
then
exit 0
else
gksu umount $MOUNTPOINT ##gksu在图形界面下切换到超级用户。
checkMountPoint_Mounted
if [ "$ISMOUNTED" = "TRUE" ]
then
zenity --error --title = " 卸载失败 " --text = " 设备忙,或其他原因,卸载失败! "
exit 1
else
if [ "$CHOSED_FUNCTION" = "挂载新卷" ]
then
zenity --info --title = " 成功卸载 " --text = " 原来的卷已经成功卸载,即将开始新卷的挂载操作! "
else
zenity --info --title = " 成功卸载 " --text = " 挂载到$MOUNTPOINT的卷已经成功卸载! "
exit 0
fi
fi
fi
fi
}
###执行 挂载 的操作
function doMount(){
gksu " mount $ISO_PATH $MOUNTPOINT -t iso9660 -o loop,utf8 " #gksu在图形界面下切换到超级用户。
checkMountPoint_Mounted
if [ "$ISMOUNTED" = "TRUE" ]
then
zenity --info --title = " 挂载成功 " --text = " 文件$ISO_PATH已经被成功挂载到$MOUNTPOINT!\n\n程序将自动启动浏览器打开该目录! "
nautilus $MOUNTPOINT #启动浏览器浏览新挂载的卷
else
zenity --error --title = " 挂载失败 " --text = " 在把文件$ISO_PATH挂载到$MOUNTPOINT时失败! "
fi
exit 0
}
################### 主程序 ####################
choosefunction
if [ "$CHOSED_FUNCTION" = "卸载旧卷" ] #######卸载旧卷
then
getMountPoint
checkMountPoint_Exist
checkMountPoint_Directory
checkMountPoint_Mounted
if [ "$ISMOUNTED" = "TRUE" ] ########是否需要卸载
then
doUMount
else
zenity --info --title = " 无须卸载 " --text = " 指定目录并未曾挂载任何文件卷! "
exit 0
fi
else ##########挂载新卷
getISOPath
getMountPoint
checkMountPoint_Exist
checkMountPoint_Directory
checkMountPoint_Mounted
if [ "$ISMOUNTED" = "TRUE" ] ########是否需要卸载
then
doUMount
fi
doMount
fi
exit 0
##################################################################################
#
# GMountISO 一个挂载iso文件的小脚本
# 作者:xiaosilent
# Email:[email protected]
# 版本: 0.6
# 依赖:zenity
# 用法:
# 1 , 图形界面下,在iso文件上右击选择打开方式,在命令栏里找到GMountISO,启动脚本
# 2 .1终端下,直接执行脚本,和图形界面下一样
# 2 .2终端下,gmountiso iso_path mount_path 直接完成挂载
#
##################################################################################
################### 定义变量 ##########################################
ISO_PATH = $ 1 #iso文件路径,从第一个参数里获取
MOUNTPOINT = $ 2 #挂载点,第二个参数
CHOSED_FUNCTION = "" #功能选择,挂载/卸载
ISMOUNTED = "" #挂载点是否已经被占用
################### 一些功能模块 #######################################
###功能选择 挂载/卸载
function choosefunction(){
CHOSED_FUNCTION = `zenity --title = " 选择要执行的操作 " --list --width = 100 --radiolist --column = " 是否选中 " --column = " 操作类型 " TRUE " 挂载新卷 " FALSE " 卸载旧卷 " `
if [ "$?" -eq "1" ]
then
echo " 没有选择,直接退出 "
exit 0
fi
}
###获取ISO文件的路径
function getISOPath(){
if [ "$ISO_PATH" = "" ] #命令行参数为空
then
ISO_PATH = `zenity --file-selection --title " 选择要挂载的ISO文件 " --filename = " ~ " ` #弹出文件选择对话框
if [ "$ISO_PATH" = "" ] #从文件对话框 " 取消 " ,给出提示信息,程序退出。
then
zenity --error --title = " 错误信息 " --text = " 您没有指定要挂载的ISO文件! "
exit 1
fi
fi
if [ `file $ISO_PATH | grep "ISO 9660" | wc -c` -eq "0" ]
then
zenity --error --title = " 错误信息 " --text = " 读取ISO文件出错,请确认文件存在且是标准的ISO格式 "
exit 1
fi
}
###获取挂载点路径
function getMountPoint(){
if [ "$MOUNTPOINT" = "" ] #没有从命令行里制定挂载路径
then
MOUNTPOINT = `zenity --file-selection --directory --title = " 请选择ISO文件挂载目录 " --filename = " /media/iso " `
if [ "$MOUNTPOINT" = "" ] #选择了 " 取消 " , 给出提示信息,程序退出。
then
zenity --error --title = " 错误信息 " --text = " 您没有指定挂载目录 "
exit 1
fi
fi
}
###检测挂载点是否存在
function checkMountPoint_Exist(){
if [ ! -e $MOUNTPOINT ] #监测挂载点是否存在
then #挂载点 不存在
zenity --error --title = " 错误信息 " --text = " 挂载目录$MOUNTPOINT不存在 "
exit 1
fi
}
###检测所指定的挂载点是否为目录
function checkMountPoint_Directory(){
if [ ! -d $MOUNTPOINT ] #如果挂载点不是一个目录
then
enity --error --title = " 错误信息 " --text = " 挂载目录$MOUNTPOINT不是目录 "
exit 1
fi
}
###检测指定的挂载点是否已经被使用
function checkMountPoint_Mounted(){
ISMOUNTED = `grep $MOUNTPOINT /etc/mtab | wc -c`
if [ "$ISMOUNTED" -gt "0" ]
then
ISMOUNTED = " TRUE "
else
ISMOUNTED = " FALSE "
fi
}
###执行 卸载 的操作
function doUMount(){
if [ "$ISMOUNTED" = "TRUE" ]
then
zenity --warning --title = " 确认卸载 " --text = " 即将卸载$MOUNTPOINT下的文件卷。\n\n在确认卸载以前,请确认该卸载操作是安全的!\n\n是否确定要进行卸载? "
if [ $? -eq 1 ]
then
exit 0
else
gksu umount $MOUNTPOINT ##gksu在图形界面下切换到超级用户。
checkMountPoint_Mounted
if [ "$ISMOUNTED" = "TRUE" ]
then
zenity --error --title = " 卸载失败 " --text = " 设备忙,或其他原因,卸载失败! "
exit 1
else
if [ "$CHOSED_FUNCTION" = "挂载新卷" ]
then
zenity --info --title = " 成功卸载 " --text = " 原来的卷已经成功卸载,即将开始新卷的挂载操作! "
else
zenity --info --title = " 成功卸载 " --text = " 挂载到$MOUNTPOINT的卷已经成功卸载! "
exit 0
fi
fi
fi
fi
}
###执行 挂载 的操作
function doMount(){
gksu " mount $ISO_PATH $MOUNTPOINT -t iso9660 -o loop,utf8 " #gksu在图形界面下切换到超级用户。
checkMountPoint_Mounted
if [ "$ISMOUNTED" = "TRUE" ]
then
zenity --info --title = " 挂载成功 " --text = " 文件$ISO_PATH已经被成功挂载到$MOUNTPOINT!\n\n程序将自动启动浏览器打开该目录! "
nautilus $MOUNTPOINT #启动浏览器浏览新挂载的卷
else
zenity --error --title = " 挂载失败 " --text = " 在把文件$ISO_PATH挂载到$MOUNTPOINT时失败! "
fi
exit 0
}
################### 主程序 ####################
choosefunction
if [ "$CHOSED_FUNCTION" = "卸载旧卷" ] #######卸载旧卷
then
getMountPoint
checkMountPoint_Exist
checkMountPoint_Directory
checkMountPoint_Mounted
if [ "$ISMOUNTED" = "TRUE" ] ########是否需要卸载
then
doUMount
else
zenity --info --title = " 无须卸载 " --text = " 指定目录并未曾挂载任何文件卷! "
exit 0
fi
else ##########挂载新卷
getISOPath
getMountPoint
checkMountPoint_Exist
checkMountPoint_Directory
checkMountPoint_Mounted
if [ "$ISMOUNTED" = "TRUE" ] ########是否需要卸载
then
doUMount
fi
doMount
fi
exit 0