当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 10 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [分享]GMountISO V0.3 Gnome环境下挂载ISO文件的小脚本,希望于菜鸟来说有用
帖子发表于 : 2006-12-03 16:52 
头像

注册: 2006-05-09 9:59
帖子: 513
地址: 四川成都
送出感谢: 1
接收感谢: 0 次
因为平时要用到的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 的上下文菜单里就可以启动脚本了。

希望 如我一般的菜鸟们觉得这个脚本还有那么一点点利用价值。 :em15

代码:
#!/bin/bash
##################################################################################

#   GMountISO 一个挂载iso文件的小小小脚本
#    作者:xiaosilent
#   Email:xiaosilent@gmail.com
#    版本: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


附件:
文件注释: 打包的脚本文件
GMountISO.tar.gz [1.93 KiB]
被下载 173 次


_________________
http://kuan.fm xiaosilent's Blog
页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2006-12-08 16:48 
头像

注册: 2006-10-18 12:57
帖子: 417
送出感谢: 0 次
接收感谢: 1
这个不知道和初学者那里的一不一样,
我说的那个关于非标准iso不能挂载的问题
不知道解决没有,哈哈,不过,楼主难道是个女的, :em15


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2006-12-08 19:32 

注册: 2006-07-09 12:22
帖子: 1331
地址: 南京
送出感谢: 0 次
接收感谢: 1
不错的帖子,然而却没几个版主光顾!

呵呵,许是本人水平也忒低,所以要求也低吧。

顶一下了! :)


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2006-12-19 10:49 
头像

注册: 2006-05-09 9:59
帖子: 513
地址: 四川成都
送出感谢: 1
接收感谢: 0 次
实验过,mdf文件也可以挂载的。

弄成deb包,免得删除的时候找不到以前安装时候脚本文件放的位置。

把 对 nautilus-script manager 的依赖去了,就不添加到 scripts 菜单了, 加到 主菜单里, 应用程序-附件-GMountISO

如果要关联iso文件,就在iso文件上右击,选择“使用其他程序打开”,在列表框里选择GMountISO就可以了。

如果卸载,直接 sudo apt-get remove gmountiso 或者在新立得里 选择 “已安装的(本地的或陈旧的)”快速定位到本地安装包,选择gmountiso卸载即可。

我习惯把自己常用的软件,特别是那些自己编译的包,整成deb,因为人懒,不想重复编译,安装、卸载也方便。


附件:
gmountiso_0.6.deb [2.8 KiB]
被下载 142 次


_________________
http://kuan.fm xiaosilent's Blog
页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2006-12-19 17:30 

注册: 2005-09-21 16:26
帖子: 169
送出感谢: 0 次
接收感谢: 0 次
能不能挂载ccd,IMG,sub这种格式的光盘呢?kde下的那个MountISO介绍是可以的,然而我在Xfce下安装后使用不了。。。。。


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-02-02 16:58 

注册: 2006-12-18 17:04
帖子: 955
地址: 福建泉州
送出感谢: 0 次
接收感谢: 1
这个脚本有点小问题,就是gksu,如果没有启用root,gksu不能用,改成gksudo就ok了。


_________________
拥有超级牛力的搜索引擎:
http://www.google.com/linux
http://www.google.com/


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-02-14 0:46 
头像

注册: 2005-08-18 18:43
帖子: 3277
送出感谢: 0 次
接收感谢: 3
好像含中文文件名的ISO挂载有问题


_________________
໌→ iCookie Gtk Theme
໌→DropPlusBluetheme
กรัก กรัก`菠萝


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-02-14 4:58 
头像

注册: 2006-09-25 3:58
帖子: 171
送出感谢: 0 次
接收感谢: 0 次
关注一下。挂载镜像对于我还是蛮有用的,有不少镜像经常挂载。


_________________

yumumao's 水水 Blog @ Opera


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-02-14 9:40 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
既然都deb包了。干脆通过nautilus-actions,设置到右键菜单?


_________________
● 鸣学


页首
 用户资料  
 
10 楼 
 文章标题 : Re: [分享]GMountISO V0.3 Gnome环境下挂载ISO文件的小脚本,希望于菜鸟来说有用
帖子发表于 : 2009-03-20 18:29 

注册: 2009-03-19 17:06
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
:em11 :em11 :em11 :em11


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 10 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译