Сайт | Скачать | Видео | Wiki

Автор Тема: автоматическое монтирование сетевых дисков  (Прочитано 23991 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн darkduck

  • Пользователь
  • **
  • Сообщений: 49
  • Репутация: +1/-0
  • Автор темы
    • Домашняя страница
Re: автоматическое монтирование сетевых дисков
« Ответ #15 : 22 Сентябрь 2010, 12:15:20 »
Я так понимаю, что ifconfig выдает все соединения, а iwconfig - только беспроводные.

Lexeii, а в чем по сути разница Вашего скрипта с тем, что я привел в самом первом своем посте? Замена while на until должна иметь разницу? В любом случае попробую.

Hatch, мой скрипт сейчас выглядит так:
Код
#!/bin/sh
until ifconfig | grep 'wlan0'
do ifconfig | grep 'wlan0'
done

mkdir -t /mnt/fnd
mount -t cifs //fnd/public /mnt/fnd -o guest,nolinux,iocharset=utf8

chromium

В этом случае Chromium запускается, а монтирования не происходит. Какой смысл делать "матрешку"?
Мой блог про эксперименты с Пингвином: http://linuxblog.darkduck.com

Бесплатный e-mail @darkduck.com?
Обращайтесь, не стестняйтесь!

Оффлайн Lexeii

  • Почетный участник
  • Постоялец
  • *
  • Сообщений: 147
  • Репутация: +24/-0
    • блог Lexeii
Re: автоматическое монтирование сетевых дисков
« Ответ #16 : 22 Сентябрь 2010, 13:59:28 »
Добрый день!

Я не сужу строго, прошу прощения, если доставил какие-то неудобства.
Я оперирую только догадками, а не конкретными знаниями, и хочу помочь.

В моей глуши нет беспроводной сети, и беспроводного роутера у меня нет тоже, поэтому вопросами поднятия беспроводной сети я не задавался совсем ни разу.

Про iwconfig я слышал краем уха, но не в дистрибутиве PuppyRus Linux, а в SliTaz, с которым я работаю постоянно. Кажется, соединение через кабель поднимается через ifconfig eth0 ip-адрес up, а для беспроводного соединения используется то же самое, но iwconfig вместо ifconfig. Я даже не знал вчера, может этот iwconfig это всего лишь хитрый самодельный скрипт для SliTaz, которого нету в PuppyRus. Просто высказал предположение.

Своё сообщение я дописывал, переписывал, удалял, и опять дописывал. Подумал, что лучше ожидание выполнить исполняющейся раз в секунду командой sleep. Потом увидел, что здесь практически нет отличий от авторского скрипта, описанного в первом посте, поэтому так и написал. Различия в until и while прямо противоположны, но часто бывает, что, ошибка в мелочах приводит к неработоспособности всего скрипта. Я честно не знаю, какой из вариантов скрипта лучше и будет работать.

Снова догадка — вот, что у меня выдают команды из скрипта:
Код
$ ifconfig | grep 'wlan0' 

$ iwconfig | grep 'wlan0'
lo        no wireless extensions.

dummy0    no wireless extensions.

eth0      no wireless extensions.

wmaster0  no wireless extensions.

ppp0      no wireless extensions.

wlan0     IEEE 802.11bg  ESSID:"" 
Т.е. вариант с ifconfig не выдает ничего, а с iwconfig почему-то, вопреки логике, выдает еще и мусор. Т.е. лучше использовать ifconfig? Вообще, реально ли с помощью описанных команд узнать, что соединение установлено?

Еще догадка. Возможно, что вместо цикла ожидания можно просто подобрать интервал сна с одной-единственной командой sleep x. Где x подобрать такое число, при котором сетевой диск будет монтироваться. Число можно подобрать путем приближений, взяв число в вилку и поставив множество экспериментов, пока не надоест. Скажем, монтируется это «+»: 50 — «+», 20 — «-», 40 — «+», 30 — «-», 35 — «+». Хватит. Для того, чтобы данный скрипт не тормозил весь процесс загрузки, нужно скрипт запускать в фоне, т.е. в том скрипте, откуда он запускается, добавить знак & после его имени, например, вот так:
Код
mountmp3 &

Еще догадка. Я не знаю опцию -t в команде mkdir (в последнем скрипте). Возможно, имеется ввиду опция -p (не выдавать ошибку, если папка уже существует)?

Еще догадка. Может быть, нужно прописать соответствующую строчку в файл fstab? Тогда и строчку монтирования в скрипте нужно будет переписать по-другому.

Насчет того, что музыка из примонтированной вручную и открытой папки не играется, возможно тут всё дело в правах доступа к файлам в папке (задаваемым в опциях монтирования)? Скажем, папка может иметь права для прочих r-x (мы имеем доступ к содержимому папки), а файлы в папке — права --- (никаких прав). Нужно разобраться с существующими правами для папок и файлов и при необходимости изменить опции монтирования, а для этого гуглить и курить маны...

Прошу прощения, если мои догадки выглядят как бред.
Linux is user friendly... It's just picky about who it  becomes friends with.

Оффлайн darkduck

  • Пользователь
  • **
  • Сообщений: 49
  • Репутация: +1/-0
  • Автор темы
    • Домашняя страница
Re: автоматическое монтирование сетевых дисков
« Ответ #17 : 22 Сентябрь 2010, 14:35:19 »
Алексей, большое спасибо за старание помочь! :)
Про iwconfig: http://linux.die.net/man/8/iwconfig, так что это - стандартная команда.
Цитата
Iwconfig is similar to ifconfig, but is dedicated to the wireless interfaces.
Про mkdir - Вы правы.  ::) Надо будет поправить.
Вот насчет фиксированного времени ожидания - не согласен. Слишком много параметров влияют на скорость загрузки: количество подключенных модулей, другие работающие параллельно процессы, возможно загруженность wifi-роутера итд. Так что лучше определять время ожидания динамически.
У меня есть еще идея прописать в скрипт какой-нибудь счетчик количества циклов ожидания, чтобы проверить, работает ли цикл вообще.

Вообще сама по себе проблема странная. Точно такой же скрипт в Slax у меня отрабатывает "на ура". Возможно, потому, что там загрузка сети у меня не делается в фоне, а активируется при загрузке как один из подключаемых модулей , т.е. к моменту старта Х (KDE) сеть уже поднята.
Есть ли какой-нибудь способ в Puppy перевести активацию сети из фонового режима в видимый/явный?
Кстати, в том же Slax нет никакой проблемы с проигрыванием музыкальных файлов с сети. Так что вряд ли это проблема с правами доступа. :-\
Мой блог про эксперименты с Пингвином: http://linuxblog.darkduck.com

Бесплатный e-mail @darkduck.com?
Обращайтесь, не стестняйтесь!

Оффлайн Hatch

  • Старожил
  • ****
  • Сообщений: 229
  • Репутация: +2/-0
Re: автоматическое монтирование сетевых дисков
« Ответ #18 : 22 Сентябрь 2010, 15:07:37 »
В этом случае Chromium запускается, а монтирования не происходит. Какой смысл делать "матрешку"?
Смысл в том, что Chromium то запускается...Как я говорил, только практика.
Только ставить самый первый скрипт-
Код
mkdir /mnt/fnd
mount -t cifs //fnd/public /mnt/fnd -o...
он же при ручном запуске диск монтирует?
Цитата
bash-4.1# ifconfig | grep 'ppp0'
<root> ~
bash-4.1# ifconfig | grep 'ppp0'
ppp0      Link encap:Point-to-Point Protocol
<root> ~
bash-4.1# iwconfig | grep 'ppp0'
lo        no wireless extensions.

eth0      no wireless extensions.

vboxnet0  no wireless extensions.

<root> ~
bash-4.1# iwconfig | grep 'ppp0'
lo        no wireless extensions.

eth0      no wireless extensions.

vboxnet0  no wireless extensions.

ppp0      no wireless extensions.

<root> ~
bash-4.1#
Тест делал так: в первом случае ppp0 выключен, во втором- включен. Т.е. видно, что iwconfig отзывается в любом случае, а ifconfig только если нужный интерфейс подключен. Так что на вопрос
Вообще, реально ли с помощью описанных команд узнать, что соединение установлено?
Думаю можно ответить утвердительно. Но тут я думаю могут помочь более опытные программисты. АУ!!!
Подумав ещё немного, откопал одну идейку, спасибо Алексей
. Возможно, что вместо цикла ожидания можно просто подобрать интервал сна с одной-единственной командой sleep x.
. Вобщем скрипт пришел к такому виду
Код
#!/bin/sh
until ifconfig | grep 'ppp0'
do
sleep 1
done
sleep 10
xine
В вашем случае
Код
#!/bin/sh
until ifconfig | grep 'wlan0'
do sleep 1
done
sleep 10
mkdir -t /mnt/fnd
mount -t cifs //fnd/public /mnt/fnd -o guest,nolinux,iocharset=utf8
sleep 10 можно увеличить в зависимости от скорости загрузки
« Последнее редактирование: 22 Сентябрь 2010, 15:38:10 от Hatch »

Оффлайн darkduck

  • Пользователь
  • **
  • Сообщений: 49
  • Репутация: +1/-0
  • Автор темы
    • Домашняя страница
Re: автоматическое монтирование сетевых дисков
« Ответ #19 : 22 Сентябрь 2010, 15:38:34 »
Hatch!
Большое спасибо за проведенный тест! Думаю, что в таком случае лучше пользоваться ifconfig.
Кстати, цикл от Алексея мне нравится больше ввиду простоты. Уж больно много кавычек в первом варианте, смущают они меня все-таки.
С учетом моего желания включить и посмотреть счетчик, пока получается такой скрипт:

Код
#!/bin/sh 
#обнуляем счетчик и файл
$counter=0
echo $counter > /root/file.txt

until ifconfig | grep 'wlan0'
do
  sleep 1
  $counter=$counter+1
#собираем в файл отклики от ifconfig и значение счетчика
  ifconfig | grep 'wlan0' >> /root/file.txt
  echo "$counter" >> /root/file.txt
done

#основное тело
mkdir -p /mnt/fnd
mount -t cifs //fnd/public /mnt/fnd -o guest,nolinux,iocharset=utf8
#контрольный выстрел
chromium

Скрипт пишу в Блокноте, сидя на работе в Винде. Поэтому проверить сейчас не могу, попробую вечером дома.
Если кто-то видит в скрипте явные ошибки, то не стесняйтесь поправлять. Все-таки я не программист.  ;)
Мой блог про эксперименты с Пингвином: http://linuxblog.darkduck.com

Бесплатный e-mail @darkduck.com?
Обращайтесь, не стестняйтесь!

Оффлайн Lexeii

  • Почетный участник
  • Постоялец
  • *
  • Сообщений: 147
  • Репутация: +24/-0
    • блог Lexeii
Re: автоматическое монтирование сетевых дисков
« Ответ #20 : 22 Сентябрь 2010, 16:28:30 »
darkduck, прими мои исправления:
Код
#! /bin/sh 
#обнуляем счетчик и файл
counter=0
file="/tmp/file.txt"
echo $counter > $file

until ifconfig | grep 'wlan0'
do
  sleep 1
  let "counter += 1"    #или counter=`expr $counter + 1`
#собираем в файл отклики от ifconfig и значение счетчика
  ifconfig | grep 'wlan0' >> $file
  echo "$counter" >> $file
done

#основное тело
mkdir -p /mnt/fnd
mount -t cifs //fnd/public /mnt/fnd -o guest,nolinux,iocharset=utf8
#контрольный выстрел
chromium
Мои исправления: я не работаю под root, поэтому поместил файл-отчет в /tmp. Т.к. он несколько раз встречается в скрипте, вынес его название в переменную. Основная сложность — в арифметике. Почитав Advansed Bash-Scripting Guide (в переводе, конечно. Книга — вещь! Рекомендую!), написал два варианта арифметики, второй не пробовал. Строки с монтированием закомментировал, а конечное приложение заменил на leafpad.

Я тестировал скрипт, заменив 'wlan0' на 'ppp0', как делал Сергей.
В результате файл file.txt содержит то, что и должен содержать — несколько строк только с числами при ожидании, а потом выдает строку с найденным интерфейсом и еще раз число.
Linux is user friendly... It's just picky about who it  becomes friends with.

Оффлайн melviX

  • Инициатор проекта
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2096
  • Репутация: +97/-0
    • PuppyRus Linux
Re: автоматическое монтирование сетевых дисков
« Ответ #21 : 22 Сентябрь 2010, 19:14:27 »
Bashковитые ребята, однако  ;D
Free software for free people

Оффлайн darkduck

  • Пользователь
  • **
  • Сообщений: 49
  • Репутация: +1/-0
  • Автор темы
    • Домашняя страница
Re: автоматическое монтирование сетевых дисков
« Ответ #22 : 23 Сентябрь 2010, 02:27:49 »
Алексей!
Использовал Ваш скрипт. Изначально он мне выдал только одну строчку с "0" в файле. Я его поправил, перекинув сообщения с комант mkdir и mount в тот же файл. И здесь началось самое интересное.  :) Несмотря на "0" в первой строке, при монтировании диска выдалась сначала ошибка (вольно перевожу с английского) "сетевое имя не найдено". ОК, поправил fnd на реальный IP адрес диска (он фиксированный). В итоге получил ошибку о том, что сеть не найдена. Это при нуле в первой строчке! Пока занимался подобными экспериментами с перезагрузками системы, заметил, что в момент загрузки и старта Иксов лампочка-индикатор wifi-соединения моргает. Это натолкнуло меня на мысль, что иксы пытаются сами перестартовать сеть. Ну раз так - добавил в скрипт команду sleep 5 (цифру выбрал наугад). И все! Заработало! Диск монтируется.
Но, как я уже писал, добавлять статичные параметры в скрипт мне не нравится, поэтому немного переписал скрипт под использование другого индикатора жизнеспособности сети
Код
#! /bin/sh 
#обнуляем счетчик и файл
counter=0
file="/tmp/file.txt"
echo $counter > $file

until ping -w 1 fnd | grep 'seq'
do
  sleep 1
  let "counter += 1"    #или counter=`expr $counter + 1`
#собираем в файл отклики от ifconfig и значение счетчика
  ping -w 1 fnd | grep 'seq' >> $file
  echo "$counter" >> $file
done

#основное тело
mkdir -p /mnt/fnd >> $file
mount -t cifs //fnd/public /mnt/fnd -o guest,nolinux,iocharset=utf8 >> $file
#контрольный выстрел
chrome
« Последнее редактирование: 23 Сентябрь 2010, 02:34:22 от darkduck »
Мой блог про эксперименты с Пингвином: http://linuxblog.darkduck.com

Бесплатный e-mail @darkduck.com?
Обращайтесь, не стестняйтесь!

Оффлайн Lexeii

  • Почетный участник
  • Постоялец
  • *
  • Сообщений: 147
  • Репутация: +24/-0
    • блог Lexeii
Re: автоматическое монтирование сетевых дисков
« Ответ #23 : 23 Сентябрь 2010, 02:32:49 »
Поздравляю!
Наблюдательность в нашем деле это — всё. 8)
Linux is user friendly... It's just picky about who it  becomes friends with.

Оффлайн darkduck

  • Пользователь
  • **
  • Сообщений: 49
  • Репутация: +1/-0
  • Автор темы
    • Домашняя страница
Re: автоматическое монтирование сетевых дисков
« Ответ #24 : 23 Сентябрь 2010, 02:45:12 »
Поздравляю!
Наблюдательность в нашем деле это — всё. 8)
Спасибо!
Заметьте, я кое-что добавил в свое предыдущее сообщение после Вашего ответа. ;)

И еще. Разобрался с музыкой. В MPlayer все замечательно играется, если имя файла и путь до него содержит только латинские символы. Как только появляются русские символы - всё, тушите свет. :( У Pmusic такой проблемы нет, зато ужасный интерфейс.
Вцелом проблема решилась через установку VLC.
« Последнее редактирование: 23 Сентябрь 2010, 02:58:08 от darkduck »
Мой блог про эксперименты с Пингвином: http://linuxblog.darkduck.com

Бесплатный e-mail @darkduck.com?
Обращайтесь, не стестняйтесь!

Оффлайн Lexeii

  • Почетный участник
  • Постоялец
  • *
  • Сообщений: 147
  • Репутация: +24/-0
    • блог Lexeii
Re: автоматическое монтирование сетевых дисков
« Ответ #25 : 23 Сентябрь 2010, 03:11:45 »
Для проигрывания разнообразной музыки я использую классику — Audacious2. Знакомый интерфейс, похожий на Winamp.
В Mplayer я только кино смотрю. Сейчас попробовал — открыл MPlayer (кстати, MPlayer SVN-r30817-4.4.1), из него открыл mp3 с русскими буквами в названии. Никаких проблем с проигрыванием, только вместо русских букв на индикаторе в скине — пробелы.
VLC очень давно не использовал. Уже даже и не помню, чем он мне не нравился.
В общем, как резюме, дело не в кодировках, не в опциях монтирования, а в приложении, и вопрос решен. Теперь не грех и пойти поспать :D
Linux is user friendly... It's just picky about who it  becomes friends with.

Оффлайн darkduck

  • Пользователь
  • **
  • Сообщений: 49
  • Репутация: +1/-0
  • Автор темы
    • Домашняя страница
Re:автоматическое монтирование сетевых дисков
« Ответ #26 : 03 Апрель 2011, 00:46:07 »
Кому интересно, в продолжение темы...
http://linuxblog.darkduck.com/2011/03/25-methods-to-mount-windows-share.html
Мой блог про эксперименты с Пингвином: http://linuxblog.darkduck.com

Бесплатный e-mail @darkduck.com?
Обращайтесь, не стестняйтесь!