1

Тема: Вопросы по bash.

В теме Mplayer и "Папки совместимого копьютера". я монтировал расшаренные ресурсы к таблетке. Подгрузку модулся cifs.ko и собственно само монтирование реализовал в виде пары строк bash-скрипта:

#! /bin/bash
insmod /lib/modules/2.6.21-omap1/extra/cifs.ko
mount -t cifs //192.168.1.3/video /home/user/MyDocs/.video/PC -o iocharset=utf8,codepage=cp866,user=xxx,password=yyy
mount -t cifs //192.168.1.3/music /home/user/MyDocs/.sounds/PC -o iocharset=utf8,codepage=cp866,user=xxx,password=yyy

Хотелось бы дополнить этот скрипт. Есть несколько вопросов
1. Как реализовать в этом скрипте проверку на то, загружен ли модуль и если загружен то не грузить его больше;
2. Как проверить, не примонтированы ли еще данные ресурсы и если примонтированы, то не монтировать.

Первая проблема не так критична, т.к если модуль загружен то он уже не будет грузится и выдаст ошибку, а вот шары все равно монтируются в любом случае. И чтобы ресурс отмонтировать, то надо это сделать столько раз, сколько примонтировал. Может ли кто-нибудь подсказать что-то по этим вопросам?

Samsung i9001 | Nokia N91 | Acer Aspire 5535 | Acorp W422G
Продал таблетку... Теперь жалею...

2

Re: Вопросы по bash.

lsmod | grep имя_модуля

GNU/Linux Debian / Nokia N900 / N9

3

Re: Вопросы по bash.

На первый вопрос dik уже ответил. На второй ответ такой: либо mount без параметров, потом по выводу grep:
mount | grep точка_монтирования или_имя_шары
Либо то же самое вы увидите в /etc/mtab
grep что_то /etc/mtab

Еще можно где-то в /proc и /sys посмотреть, но на вскидку не скажу, да и результат будет такой же. Не нужно оно.

4

Re: Вопросы по bash.

Ребят, я идею понимаю. Я не знаю как реализовать в силу того что не знаю bash. Как это вписать в скрипт?

Samsung i9001 | Nokia N91 | Acer Aspire 5535 | Acorp W422G
Продал таблетку... Теперь жалею...

5

Re: Вопросы по bash.

#!/bin/bash

state=`lsmod | grep "cifs"`
if [ "$state" == "" ]; then
    insmod /lib/modules/2.6.21-omap1/extra/cifs.ko
fi

state=`mount | grep "/home/user/MyDocs/.video/PC"`
if [ "$state" == "" ]; then
    mount -t cifs //192.168.1.3/video /home/user/MyDocs/.video/PC -o iocharset=utf8,codepage=cp866,user=xxx,password=yyy
else
    umount /home/user/MyDocs/.video/PC
fi

state=`mount | grep "/home/user/MyDocs/.sounds/PC"`

if [ "$state" == "" ]; then
    mount -t cifs //192.168.1.3/music /home/user/MyDocs/.sounds/PC -o iocharset=utf8,codepage=cp866,user=xxx,password=yyy
else
    umount /home/user/MyDocs/.sounds/PC
    rmmod cifs.ko
fi
N800 5.2008.43-7 > N900 10.2010.19-1

6

Re: Вопросы по bash.

Спасибо! Немножко подпилил и получил то что надо! А bash на первый взгляд не так уж и сложен...  wink

Samsung i9001 | Nokia N91 | Acer Aspire 5535 | Acorp W422G
Продал таблетку... Теперь жалею...

7 Отредактировано alex2ndr (06-01-2010 20:57:38)

Re: Вопросы по bash.

null пишет:
#!/bin/bash

state=`lsmod | grep "cifs"`
if [ "$state" == "" ]; then
    insmod /lib/modules/2.6.21-omap1/extra/cifs.ko
fi

state=`mount | grep "/home/user/MyDocs/.video/PC"`
if [ "$state" == "" ]; then
    mount -t cifs //192.168.1.3/video /home/user/MyDocs/.video/PC -o iocharset=utf8,codepage=cp866,user=xxx,password=yyy
else
    umount /home/user/MyDocs/.video/PC
fi

state=`mount | grep "/home/user/MyDocs/.sounds/PC"`

if [ "$state" == "" ]; then
    mount -t cifs //192.168.1.3/music /home/user/MyDocs/.sounds/PC -o iocharset=utf8,codepage=cp866,user=xxx,password=yyy
else
    umount /home/user/MyDocs/.sounds/PC
    rmmod cifs.ko
fi

Все хорошо - только проверять на непустоту строк рекомендуется так -

if [ -z "$state"  ]; then

Bash весьма привередлив - однажды можно получить совсем не то что хочется.

Nokia N800 OS 5.2008.43-7 / Nokia 3110 Classic / Debian 5.0.0 Lenny

8

Re: Вопросы по bash.

alex2ndr пишет:

Все хорошо - только проверять на непустоту строк рекомендуется так -

if [ -z "$state"  ]; then

Хм, так может грамотнее, нопомоему и этот вариант "безпроигрышный". Если он чем то в каких то ситуациях может отличаться от вашего варианта, то поясните, интересно послушать.

Samsung i9001 | Nokia N91 | Acer Aspire 5535 | Acorp W422G
Продал таблетку... Теперь жалею...

9

Re: Вопросы по bash.

DarkTroll пишет:

Хм, так может грамотнее, нопомоему и этот вариант "безпроигрышный". Если он чем то в каких то ситуациях может отличаться от вашего варианта, то поясните, интересно послушать.

Увы - я не настолько знаток bash чтобы вот так сходу придумать вариант в котором это может не сработать. Просто если уж собираетесь писать на bash то стоит ознакомиться с Advanced Bash-Scripting Guide - в нем описаны основные подводные камни. Обычно стоит следовать его указаниям(те кто уровень этого руководства превзошел могут и не следовать) - если не хочется познакомиться с фееричными и непонятными глюками. Лично я несколько раз познакомился (не на данную тему) - больше не хочу. Только еще раз обращу ваше внимание на то что bash это не python - здесь имхо поменьше возможностей для одинаковых алгоритмов.

Nokia N800 OS 5.2008.43-7 / Nokia 3110 Classic / Debian 5.0.0 Lenny

10

Re: Вопросы по bash.

Давно хотел начать учить python, да все не приходилось. Будет отпуск - попробую.  wink

Samsung i9001 | Nokia N91 | Acer Aspire 5535 | Acorp W422G
Продал таблетку... Теперь жалею...

11

Re: Вопросы по bash.

могу книженцию сунуть

iPad3, Ainol Novo7 Elf

12

Re: Вопросы по bash.

Спасибо за предложение. Как будет время - обязательно займусь и обращусь.  wink

Samsung i9001 | Nokia N91 | Acer Aspire 5535 | Acorp W422G
Продал таблетку... Теперь жалею...