我正在尝试编写一个批处理脚本,它将在随机分区上找到一个特定的文件(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