Как найти файл на случайных разделах, чем монтировать этот раздел

Я пытаюсь написать пакетный скрипт, который найдет определенный файл (EX .homemnt) в случайном разделе, а затем подключит этот раздел в любое место, которое я хочу (EX / home) ..

Добавлены примечания : Будет использоваться на нескольких ПК с разным расположением разделов устройства для определенной папки (например, / home)

Длинная история: Я работаю над проектом, включающим LIVECD, и в настоящее время я монтирую домашний раздел как доступный для записи, но у меня есть вручную найти раздел устройства на каждом отдельном компьютере. Я не пытаюсь получить доступ к файлам других пользователей, только загружаюсь, чтобы открыть раздел домашней папки cd mount, затем выхожу из системы / включаю и все конфиги, данные есть .. В настоящее время это прекрасно работает, но мне нужен сценарий, который является "фиктивным" доказательством, чтобы позволить другим загружаться в livecd и не нужно угадывать на разделах или устройствах.

Я некоторое время писал сценарии, но ничего сложного, и я мог бы помочь.

Мои идеи, но готовы рассмотреть что-либо на этом этапе. Пример сценария монтирует 1 раздел в / lookup search для файла (.homemnt), затем демонтирует раздел. Если он не находит файл, переходит к следующему устройству / разделу, ЕСЛИ находит файл, то сохраняет местоположение как переменную ,, UNMOUNTS раздел

Затем мне нужно иметь возможность взять эту переменную, чтобы вызвать ее в команде монтирования. и монтировать разделение как / home Мне не нужно монтировать папку конкретных пользователей, только весь раздел в / home

Я новичок в публикации материалов, и я надеюсь, что я не пропустил ответ где-нибудь еще. Любая помощь будет очень цениться.

0
задан 29 May 2015 в 17:35

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
0
ответ дан 29 May 2015 в 17:35

Другие вопросы по тегам:

Похожие вопросы: