[分享]GMountISO V0.3 Gnome环境下挂载ISO文件的小脚本,希望于菜鸟来说有用
发表于 : 2006-12-03 16:52
因为平时要用到的iso文件比较多,老是在终端下去挂载比较麻烦,于是就写了这个脚本。
本来是要叫mountiso的,刚才google了一下,发现已经存在一个kde下的mountiso了,于是,我这个就干脆叫着GMountISO好了。注意,我并没有要和mountiso相比高下的意思~~~
0.1版的时候的脚本仅仅是能够在终端下操作的,昨天晚上的时候,同学借我机子处理音频文件的时候,用到 audio-convert这个脚本,感觉她在图形界面下的表现很好,于是,我研究了一下audio-convert这个脚本,了解到 zenity 这个东东,man 了一下 zenity,就把我的0.1升到0.2了,早上的时候,同学又提了点意见,再次修改了一下命令行下的参数获取相关的脚本片断,就升到0.3了~~
个人觉得最好的使用方法是把脚本复制到 ~/.gnome2/nautilus-scripts/ 里面去,这样在 nautilus 的上下文菜单里就可以启动脚本了。
希望 如我一般的菜鸟们觉得这个脚本还有那么一点点利用价值。
本来是要叫mountiso的,刚才google了一下,发现已经存在一个kde下的mountiso了,于是,我这个就干脆叫着GMountISO好了。注意,我并没有要和mountiso相比高下的意思~~~
0.1版的时候的脚本仅仅是能够在终端下操作的,昨天晚上的时候,同学借我机子处理音频文件的时候,用到 audio-convert这个脚本,感觉她在图形界面下的表现很好,于是,我研究了一下audio-convert这个脚本,了解到 zenity 这个东东,man 了一下 zenity,就把我的0.1升到0.2了,早上的时候,同学又提了点意见,再次修改了一下命令行下的参数获取相关的脚本片断,就升到0.3了~~
个人觉得最好的使用方法是把脚本复制到 ~/.gnome2/nautilus-scripts/ 里面去,这样在 nautilus 的上下文菜单里就可以启动脚本了。
希望 如我一般的菜鸟们觉得这个脚本还有那么一点点利用价值。

代码: 全选
#!/bin/bash
##################################################################################
#
# GMountISO 一个挂载iso文件的小小小脚本
# 作者:xiaosilent
# Email:[email protected]
# 版本:0.3
# 依赖:zenity
# 用法:
# 1,图形界面下,个人觉得最好的使用方法是把脚本复制到 ~/.gnome2/nautilus-scripts/ 里面去,这样在 nautilus 的上下文菜单里就可以启动脚本了。
# 2.1终端下,直接执行脚本,和图形界面下一样
# 2.2终端下,./mountiso 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 "ROM" | 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卸载操作需要root权限,是否确定要进行卸载?"
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="原来的卷已经成功卸载!"
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