系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
xiaosilent
- 帖子: 513
- 注册时间: 2006-05-09 9:59
- 来自: 四川成都
-
联系:
#1
帖子
由 xiaosilent » 2006-12-02 11:33
建议大家安装源内的 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
-
xiaosilent
- 帖子: 513
- 注册时间: 2006-05-09 9:59
- 来自: 四川成都
-
联系:
#4
帖子
由 xiaosilent » 2006-12-02 22:27
还是稍微修改了一下,貌似更好用了那么一点点~~~
最下面附件提供脚本文件下载
代码: 全选
#!/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) 已下载 408 次
-
xiaosilent
- 帖子: 513
- 注册时间: 2006-05-09 9:59
- 来自: 四川成都
-
联系:
#5
帖子
由 xiaosilent » 2006-12-02 22:41
可以直接下载后解压缩执行脚本,不链接到/usr/bin,不和iso关联
-
xiaosilent
- 帖子: 513
- 注册时间: 2006-05-09 9:59
- 来自: 四川成都
-
联系:
-
Stupid kid
- 帖子: 416
- 注册时间: 2006-10-18 12:57
#7
帖子
由 Stupid kid » 2006-12-03 0:43
楼主好强啊,正需要这个呢,谢谢了,
不知道这个稍微该一下能不能直接挂载mdf文件,哈哈,想想!
-
xiaosilent
- 帖子: 513
- 注册时间: 2006-05-09 9:59
- 来自: 四川成都
-
联系:
#8
帖子
由 xiaosilent » 2006-12-03 10:52
又改了一点点
代码: 全选
#!/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
-
附件
-
- mountiso.tar.gz
- V0.3
- (1.92 KiB) 已下载 346 次
-
xiaosilent
- 帖子: 513
- 注册时间: 2006-05-09 9:59
- 来自: 四川成都
-
联系:
#9
帖子
由 xiaosilent » 2006-12-03 10:53
Stupid kid 写了:
不知道这个稍微该一下能不能直接挂载mdf文件
mdf 是嘛文件? SQL ?
-
xiaosilent
- 帖子: 513
- 注册时间: 2006-05-09 9:59
- 来自: 四川成都
-
联系:
#10
帖子
由 xiaosilent » 2006-12-03 13:45
还 可以把脚本文件 复制到 ~/.gnome2/nautilus-scripts/ 下,这样,右键菜单里就会有个 scripts ,再选择 mountiso 即可。
-
qiziyh
- 帖子: 89
- 注册时间: 2006-05-31 1:52
#12
帖子
由 qiziyh » 2006-12-03 17:31
好好好,这种帖子应该加精哦,版主来哦,强啊
-
Stupid kid
- 帖子: 416
- 注册时间: 2006-10-18 12:57
#13
帖子
由 Stupid kid » 2006-12-03 19:16
xiaosilent 写了:Stupid kid 写了:
不知道这个稍微该一下能不能直接挂载mdf文件
mdf 是嘛文件? SQL ?
就是mdf和mds在一起的那个镜像文件啊,哈哈
-
qiziyh
- 帖子: 89
- 注册时间: 2006-05-31 1:52
#14
帖子
由 qiziyh » 2006-12-04 1:38
xiaosilent 写了:还 可以把脚本文件 复制到 ~/.gnome2/nautilus-scripts/ 下,这样,右键菜单里就会有个 scripts ,再选择 mountiso 即可。
为什么我没有看到右键菜单里出现什么,楼主可以说详细点吗