如何在随机分区上查找文件然后挂载该分区

如何在随机分区上查找文件然后挂载该分区

我正在尝试编写一个批处理脚本,它将在随机分区上找到一个特定的文件(EX .homemnt),然后将该分区安装到我想要的任何位置(EX /home)..

补充说明:将在具有不同设备分区位置的特定文件夹(例如:/home)的多台电脑上使用

长话短说:我正在做一个涉及 LIVECD 的项目,我目前将主分区挂载为可写,但我必须在每台不同的计算机上手动找到设备分区。我并不是想访问其他用户的文件,只是启动到 live cd 挂载主文件夹分区,然后注销/登录,所有的配置、数据都在那里。目前它运行良好,但我需要一个“假”的脚本,以允许其他人启动到 livecd,而不必猜测分区或设备。

我已经编写脚本有一段时间了,但没有这么先进,我需要一些帮助。

我的想法,但此时愿意考虑任何事情。示例脚本将 1 个分区挂载到 /lookup 搜索文件 (.homemnt),然后卸载分区。如果找不到文件,则转到下一个设备/分区,如果找到文件,则将位置保存为变量,卸载分区

然后我需要能够使用该变量在 mount 命令中调用它。并将分区挂载为 /home 我不需要挂载特定的用户文件夹,只需将整个分区挂载到 /home

我是第一次发帖,希望我没有在其他地方忽略答案。任何帮助我都会非常感激。

答案1

这样就可以了

#!/bin/bash

declare -a mounted
i=0
while read m
do
    mounted[$i]="$m"
    i=$((i+1))
done < <(mount|grep ^/dev|awk '{print $1}')

function ismounted {
    for i in ${mounted[*]}
    do
        if [ "$1" == "$i" ] ;then
            return 0
        fi
    done
    return 1
}

tmp=`mktemp -d /tmp/mount.XXXXXX`
found=""
while read m
do
    if ! ismounted $m; then
        mount $m $tmp 2>/dev/null
        r=$?
        if [ $r -eq 0 ] ;then
            if [ -f $tmp/.homemnt ] ;then
                found=$m
            fi
            umount $m
        fi
        if [ -n "$found" ]; then
            break
        fi
    fi
done < <(blkid -o device)
rmdir $tmp
if [ -n "$found" ] ;then
    mount $found /home
fi
echo $found

相关内容