当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 37 篇帖子 ]  前往页数 1, 2, 3  下一页
作者 内容
1 楼 
 文章标题 : [分享]一个挂载ISO文件的小脚本
帖子发表于 : 2006-12-02 11:33 
头像

注册: 2006-05-09 9:59
帖子: 513
地址: 四川成都
送出感谢: 1
接收感谢: 0 次
建议大家安装源内的 gmountiso, 同名纯属巧合 ,本文为当时折腾是所用



4楼有更新,提供脚本文件下载

8楼再次更新

====== 20楼再一次更新,打包成deb格式,并把文件放到/usr/share/nautilus-scripts/目录下,链接到/usr/bin/,还在 程序-附件 里添加了 GMountISO 的启动菜单项 ===============


由于自己要经常性地挂载iso文件,感觉切换到终端下,再来回跑几个目录去挂载一个iso文件有点点麻烦,所以,写了这个小脚本,方便一下自己。
现拿出来和菜鸟们一起分享~~~ 才开始学习写脚本,如果脚本有问题,还请大家多提点~

本脚本在Ubuntu Dapper 下通过,估计其他版本也可用。

代码:
#!/bin/bash
#---------------------------------------------------------------
#  mountiso ISO文件挂载脚本
#    作者:xiaosilent
#  Email:xiaosilent@gmail.com
#    版本:0.1
#    依赖:zenity
#    用法:====建议先把本脚本链接到 /usr/bin.并赋予755的权限========
#      a.终端下: mountiso ***.iso
#      b.X环境:在iso文件上右击,选择 "属性",切换到 "打开方式","添加",指定本脚本所在位置,确定。
#            最后,再在iso文件上右击,选择 "用 mountiso 打开" 即可。
#----------------------------------------------------------------

#缺省挂载路径
DEFAULT_MOUNTPOINT="/media/iso"


#要挂载的iso文件的路径
ISOFILE=$1   #获取参数
if [ "$ISOFILE" = "" ]  #参数为空
then
   echo "请在弹出的对话框中选择要挂载的ISO文件"
   ISOFILE=`zenity --file-selection --title "选择要挂载的ISO文件"`      #弹出文件选择对话框
   if [ "$ISOFILE" = "" ]      #从文件对话框"取消"
   then
      zenity --error --title "错误信息" --text="您没有指定要挂载的ISO文件"
      exit 1
   fi
fi

#挂载路径
echo "请在弹出的对话框中输入文件要挂载到的目录,默认是$DEFAULT_MOUNTPOINT"
MOUNTPOINT=`zenity --entry --title="挂载ISO" --text="请输入要挂载到的位置"  --entry-text="$DEFAULT_MOUNTPOINT"`
if [ "$MOUNTPOINT" = "" ]   #选择了 "取消"
then
   zenity --error --title "错误信息" --text="您没有指定要挂载到的目录"
   exit 1
fi



if [ -e $MOUNTPOINT ]   #检测挂载点是否存在
then #挂载点存在
   if [ -d $MOUNTPOINT ]  #确认挂载点是一个目录
   then #存在且是目录,开始挂载操作
      sudo umount $MOUNTPOINT  #先试图从该挂载点卸载
      sleep 1
      gksu "mount $ISOFILE $MOUNTPOINT -t iso9660 -o loop,utf8"   #gksu在图形界面下切换到超级用户,换用sudo,在图形界面下会出错。
      exit 0
   else #存在但不是目录
         zenity --error --title "错误信息" --text="要挂载到的$MOUNTPOINT不是目录"
         exit 1
   fi
else #挂载点不存在
      zenity --error --title "错误信息" --text="要挂载到的目录$MOUNTPOINT不存在"
   exit 1
fi


_________________
http://kuan.fm xiaosilent's Blog


最后由 xiaosilent 编辑于 2007-11-13 8:35,总共编辑了 5 次

页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2006-12-02 15:19 
头像

注册: 2006-05-09 9:59
帖子: 513
地址: 四川成都
送出感谢: 1
接收感谢: 0 次
有时间了再完善一下,把 单独卸载iso 的功能加进去


_________________
http://kuan.fm xiaosilent's Blog


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2006-12-02 17:01 
头像

注册: 2005-10-16 8:26
帖子: 1937
地址: 地球
送出感谢: 0 次
接收感谢: 1
~~~赞~~~


_________________
http://www.pandabang.info


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2006-12-02 22:27 
头像

注册: 2006-05-09 9:59
帖子: 513
地址: 四川成都
送出感谢: 1
接收感谢: 0 次
还是稍微修改了一下,貌似更好用了那么一点点~~~
最下面附件提供脚本文件下载
代码:
#!/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


附件:
文件注释: 完整的脚本文件
mountiso.tar.gz [2.01 KiB]
被下载 387 次


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

注册: 2006-05-09 9:59
帖子: 513
地址: 四川成都
送出感谢: 1
接收感谢: 0 次
可以直接下载后解压缩执行脚本,不链接到/usr/bin,不和iso关联 :em02


_________________
http://kuan.fm xiaosilent's Blog


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2006-12-02 23:05 
头像

注册: 2006-05-09 9:59
帖子: 513
地址: 四川成都
送出感谢: 1
接收感谢: 0 次
一些截图


附件:
文件注释: 文件忙,不能卸载
mountiso-6.png
mountiso-6.png [ 9.67 KiB | 被浏览 6596 次 ]
文件注释: 卸载确认
mountiso-5.png
mountiso-5.png [ 20.58 KiB | 被浏览 3998 次 ]

文件注释: 挂载成功
mount-4.png
mount-4.png [ 14.4 KiB | 被浏览 3974 次 ]

文件注释: 选择挂载目录
mountiso-3.png
mountiso-3.png [ 28.17 KiB | 被浏览 3968 次 ]

文件注释: 选择iso文件
mountiso-2.png
mountiso-2.png [ 25.81 KiB | 被浏览 3944 次 ]

文件注释: 功能选择
mountiso-1.png
mountiso-1.png [ 13.46 KiB | 被浏览 2752 次 ]



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

注册: 2006-10-18 12:57
帖子: 417
送出感谢: 0 次
接收感谢: 1
楼主好强啊,正需要这个呢,谢谢了,
不知道这个稍微该一下能不能直接挂载mdf文件,哈哈,想想!


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2006-12-03 10:52 
头像

注册: 2006-05-09 9:59
帖子: 513
地址: 四川成都
送出感谢: 1
接收感谢: 0 次
又改了一点点
代码:
#!/bin/bash
##################################################################################

#   mountiso 一个挂载iso文件的小小小脚本
#    作者:xiaosilent
#   Email:xiaosilent@gmail.com
#    版本:0.3
#    依赖:zenity
#    用法:
#      1,图形界面下,直接执行脚本
#      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


附件:
文件注释: V0.3
mountiso.tar.gz [1.92 KiB]
被下载 323 次


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

注册: 2006-05-09 9:59
帖子: 513
地址: 四川成都
送出感谢: 1
接收感谢: 0 次
Stupid kid 写道:
不知道这个稍微该一下能不能直接挂载mdf文件


mdf 是嘛文件? SQL ?


_________________
http://kuan.fm xiaosilent's Blog


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2006-12-03 13:45 
头像

注册: 2006-05-09 9:59
帖子: 513
地址: 四川成都
送出感谢: 1
接收感谢: 0 次
还 可以把脚本文件 复制到 ~/.gnome2/nautilus-scripts/ 下,这样,右键菜单里就会有个 scripts ,再选择 mountiso 即可。


_________________
http://kuan.fm xiaosilent's Blog


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2006-12-03 16:26 
头像

注册: 2006-05-20 6:25
帖子: 1263
地址: 山东淄博
送出感谢: 0 次
接收感谢: 0 次
学习!


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2006-12-03 17:31 

注册: 2006-05-31 1:52
帖子: 83
送出感谢: 0 次
接收感谢: 0 次
好好好,这种帖子应该加精哦,版主来哦,强啊


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2006-12-03 19:16 
头像

注册: 2006-10-18 12:57
帖子: 417
送出感谢: 0 次
接收感谢: 1
xiaosilent 写道:
Stupid kid 写道:
不知道这个稍微该一下能不能直接挂载mdf文件


mdf 是嘛文件? SQL ?


就是mdf和mds在一起的那个镜像文件啊,哈哈


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2006-12-04 1:38 

注册: 2006-05-31 1:52
帖子: 83
送出感谢: 0 次
接收感谢: 0 次
xiaosilent 写道:
还 可以把脚本文件 复制到 ~/.gnome2/nautilus-scripts/ 下,这样,右键菜单里就会有个 scripts ,再选择 mountiso 即可。


为什么我没有看到右键菜单里出现什么,楼主可以说详细点吗


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2006-12-04 9:13 
头像

注册: 2006-05-09 9:59
帖子: 513
地址: 四川成都
送出感谢: 1
接收感谢: 0 次
是不是因为该脚本文件没有 可执行权限 ?


_________________
http://kuan.fm xiaosilent's Blog


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 37 篇帖子 ]  前往页数 1, 2, 3  下一页

当前时区为 UTC + 8 小时


在线用户

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


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

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

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