Я пытаюсь написать пакетный скрипт, который найдет определенный файл (EX .homemnt) в случайном разделе, а затем подключит этот раздел в любое место, которое я хочу (EX / home) ..
Добавлены примечания : Будет использоваться на нескольких ПК с разным расположением разделов устройства для определенной папки (например, / home)
Длинная история: Я работаю над проектом, включающим LIVECD, и в настоящее время я монтирую домашний раздел как доступный для записи, но у меня есть вручную найти раздел устройства на каждом отдельном компьютере. Я не пытаюсь получить доступ к файлам других пользователей, только загружаюсь, чтобы открыть раздел домашней папки cd mount, затем выхожу из системы / включаю и все конфиги, данные есть .. В настоящее время это прекрасно работает, но мне нужен сценарий, который является "фиктивным" доказательством, чтобы позволить другим загружаться в livecd и не нужно угадывать на разделах или устройствах.
Я некоторое время писал сценарии, но ничего сложного, и я мог бы помочь.
Мои идеи, но готовы рассмотреть что-либо на этом этапе. Пример сценария монтирует 1 раздел в / lookup search для файла (.homemnt), затем демонтирует раздел. Если он не находит файл, переходит к следующему устройству / разделу, ЕСЛИ находит файл, то сохраняет местоположение как переменную ,, UNMOUNTS раздел
Затем мне нужно иметь возможность взять эту переменную, чтобы вызвать ее в команде монтирования. и монтировать разделение как / home Мне не нужно монтировать папку конкретных пользователей, только весь раздел в / home
Я новичок в публикации материалов, и я надеюсь, что я не пропустил ответ где-нибудь еще. Любая помощь будет очень цениться.
Это должно сделать это
#!/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