- 论坛徽章:
- 0
|
解决了在ubuntu下面直接挂载ISO文件的问题,类似于虚拟光驱
把下面的代码保存到一个文件当中 比如mountiso
然后在chmod +x mountiso
在shell里输入 ./mountiso
就可以了
这个是一个比较完整的挂载ISO文件的脚本程序
是交互式的 希望你能受用
将文件保存到主目录
#!/bin/bash ################################################################################# # mountiso ISO文件挂载脚本 # 作者:xiaosilent # Email:xiaosilent@gmail.com # 版本:0.2 # 依赖:zenity # 用法:====建议先把本脚本链接到 /usr/bin.并赋予755的权限======== # a.终端下: mountiso ***.iso # b.X环境:在iso文件上右击,选择 "属性",切换到 "打开方式","添加",指定本脚本所在位置,确定。 # 最后,再在iso文件上右击,选择 "用 mountiso 打开" 即可。 ################################################################################## ################### 定义变量 ########################################## MOUNTPOINT="/media/iso" #挂载点 ISO_PATH=$1 #缺省的iso文件路径,从第一个参数里获取 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 echo "请在弹出的对话框中选择要挂载的ISO文件" #命令行输出 ISO_PATH=`zenity --file-selection --title "选择要挂载的ISO文件" --filename="~"` #弹出文件选择对话框 if [ "$ISO_PATH" = "" ] #从文件对话框"取消",给出提示信息,程序退出。 then zenity --error --title="错误信息" --text="您没有指定要挂载的ISO文件!" exit 1 fi if [ `file $ISO_PATH | grep "ROM" | wc -c` -eq "0" ] then zenity --error --title="错误信息" --text="您所选择的文件并不是一个ISO文件" exit 1 fi fi } ###获取挂载点路径 function getMountPoint(){ echo "请在弹出的对话框中输入文件的挂载目录,默认是$MOUNTPOINT" MOUNTPOINT=`zenity --file-selection --directory --title="请选择ISO文件挂载目录" --filename="$MOUNTPOINT"` if [ "$MOUNTPOINT" = "" ] #选择了 "取消",给出提示信息,程序退出。 then zenity --error --title="错误信息" --text="您没有指定挂载目录" exit 1 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
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/91454/showart_1905093.html |
|