您好朋友,感谢您关注xiaosilent,我在blogjava的博客已经停止更新,请访问http://kuan.fm了解我的最新情况,谢谢!
随笔-82  评论-133  文章-0  trackbacks-0
还是自己写的小小脚本,用来挂载iso文件、卸载卷 的小小小脚本。 就算是0.3版了吧~~~~

#!/bin/bash
##################################################################################
#  
#    GMountISO 一个挂载在GNOME环境下挂载iso文件的小小小脚本
#     作者:xiaosilent
#     Email:xiaosilent@gmail.com
#     版本:
0.3
#     依赖:zenity
#     用法:
#        
1,图形界面下,直接执行脚本,也可复制到~/gnome2/nautilus-scripts/下,这样将在nautilus的上下文菜单中出现script项。
#        
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,出来一个kde下的东东,所以,我这个mountiso就不能再存在了,现在换成 GMountISO。
posted on 2006-12-03 10:54 xiaosilent 阅读(383) 评论(0)  编辑  收藏 所属分类: Linux相关

只有注册用户登录后才能发表评论。


网站导航: