Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > Определение имени раздела


Автор: NZero 27.11.2013, 17:35
Написал скрипт, который загружает ПО на шлюз. Т.е. есть картридер, в него вставляется флешкарта, на эту флешкарту заливается ПО. Но когда подключаю картридер с флешкартой к ПК неизвестно как будет называться раздел. Обычно это sdb или sdc, но бывает и sdf, sdd. Вот как узнать и самое главное использовать имя раздела. Все должен делать скрипт.

Сейчас я делаю так. Флешкарта разбита на 4 раздела. Я проверяю так
Код

if [ $(grep 'sdb' -c /proc/partitions) = 4 ]; then
{
    #Выполняю заливку
}
fi

Автор: tzirechnoy 27.11.2013, 18:23
Написать udev rule, которое по vendor/serial картридера будет добавлять симлинк вида /dev/ROMcardreader -> /dev/sdкакойнужно.

Автор: NZero 28.11.2013, 16:42
Сделал так. На первом разделе флешкарты файловая система vfat, на 2 и 3 - ext2. Ищу разделы с типом файловой системы ext2, затем записываю их в переменную, получается в переменной содержится строчка с информацией разделов флешкарты. Затем нахожу первое вхождение / и записываю с этого значения первые 8 символов. Как то так мудрено работает, но работает. Если есть идеи как улучшить код. пишите, буду премного благодарен)

Код

str=$(df -t ext2)
num=`expr index "$str" /`
part=`expr substr "$str" $num 8`

Автор: krypt3r 29.11.2013, 10:20
Возможно, blkid или findfs тут лучше отработают.

Автор: bilbobagginz 30.11.2013, 16:30
krypt3r прав, надо пытаться находитъ UUID (или схожий по функционалу) идентификатор какого-то раздела, тогда будет реально стабильно работать, иначе будут баги.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)