Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: скрипт не работает в Ubuntu  (Прочитано 2834 раз)

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

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2934
    • Просмотр профиля
скрипт не работает в Ubuntu
« : 28 Ноября 2020, 14:30:40 »
Здравствуйте!

У меня есть скрипт из нескольких команд для монтирования образов DVD, в Debian/Astra Linux он работает, а в Ubuntu нет.
Вот он, там внизу две команды
#!/bin/bash
if [ $# -eq 0 ] ; then
  if [ `grep -c "/mnt/udf" /etc/mtab` -eq 1 ] ;  then
umount /mnt/udf
echo $?
  fi
  if [ -h /tmp/udf ] ; then
rm -f /tmp/udf
exit 0
  fi
else
  ln -sf `pwd`/$1 /tmp/udf
  mount /tmp/udf
fi
и две строки в /etc/fstab:
/tmp/udf /mnt/udf udf ro,noauto,users,loop=/dev/loop0,iocharset=utf8,unhide 0 0
/dev/loop0 /mnt/udf udf ro,noauto,users,loop=/dev/loop0,iocharset=utf8,unhide 0 2
В Ubuntu монтирования не происходит, выдаётся сообщение как обычно, что или файловая система повреждена или ещё что-то.
А в чём ошибка и что надо сдлеать, чтобы он работал и в Ubuntu?
Ведь если в mc просто нажать на *.iso, он же монтируется.

Пётр.

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6406
    • Просмотр профиля
Re: скрипт не работает в Ubuntu
« Ответ #1 : 28 Ноября 2020, 15:16:13 »
Цитировать
В Ubuntu монтирования не происходит, выдаётся сообщение как обычно, что или файловая система повреждена или ещё что-то.
Или еще что-то. Попробую угадать...
Цитировать
/dev/loop0 /mnt/udf udf...
...loop0 занят, например снапом.

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2934
    • Просмотр профиля
Re: скрипт не работает в Ubuntu
« Ответ #2 : 28 Ноября 2020, 18:47:26 »
andytux, сообщение такое же, как и всегда.
(Нажмите, чтобы показать/скрыть)
у меня нет snap-пакетов. И почему в другой Debian based системе этот скрипт работает, а здесь нет? В чём отличие?
Пётр.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28267
    • Просмотр профиля
Re: скрипт не работает в Ubuntu
« Ответ #3 : 30 Ноября 2020, 03:46:15 »
Сам скрипт странный по меньшей мере.
Я три раза прочёл и не понимаю, что он должен делать.
А настройка fstab вообще невозможная. Не может быть две строки с одинаковой точкой монтирования.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2934
    • Просмотр профиля
Re: скрипт не работает в Ubuntu
« Ответ #4 : 30 Ноября 2020, 08:47:30 »
AnrDaemon, возможно, я и неправ, но в Astra Linux этот скрипт монтирует образ без всяких сообщений,
а при вызове без аргумента демонтирует. Он был написан не помню когда в Debian на tcsh и тоже работал,
в Astra я его оформил на bash. Что касается двух строк, то так когда-то потребовалось и с тех пор я об этом не задумывался.
Пётр.

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6406
    • Просмотр профиля
Re: скрипт не работает в Ubuntu
« Ответ #5 : 30 Ноября 2020, 10:42:43 »
"Любая программа содержит ошибки."
Peter_I, на самом деле, "точек отказа" более чем достаточно. Несколько примеров.
Начать с шабанга. В нынешних версиях *бунту реально баш находится в /usr/bin. Работает только потому, что есть bin, симлинк, указывающий на /usr/bin. А будет-ли он завтра?
Вообще, на баш пишу, одним глазом поглядывая в "Advanced Bash Scripting". Вот пример оттуда:
Цитировать
Даже когда не происходит разбиения на слова, операция подстановки команд может удалять завершающие символы перевода строки.
# cd "`pwd`"  # Должна выполняться всегда.
# Однако...

mkdir 'dir with trailing newline
'

cd 'dir with trailing newline
'

cd "`pwd`"  # Ошибка:
# bash: cd: /tmp/dir with trailing newline: No such file or directory

cd "$PWD"   # Выполняется без ошибки.
Да и вместо "обратных кавычек":
Цитировать
Присваивание переменных с использованием $(...) (более современный метод, по сравнению с обратными кавычками)
Мне сначала показалось, что речь именно об udf. Но вроде получается, что скрипт касается любых исо-образов. И даже не образов, а любого, что ты передашь в параметре.
Цитировать
если в mc просто нажать на *.iso, он же монтируется.
Формально - да. Пользуйся, по-моему это удобней твоего скрипта. Может интересно, в "user menu" у меня есть пункт "монтировать что угодно, куда угодно".


Пользователь добавил сообщение 30 Ноября 2020, 14:47:59:
Свой fstab я уродовать не стал. Запустил твой скрипт. Как и следовало ожидать, ругается.
В ветке else изменил команду монтирования:
  mount -o loop /tmp/udf ${dest}Заработало. Проверил на исо и скваш. В переменной dest - куда монтируем.
Плюсы, по сравнению с твоим вариантом:
1. Не портим fstab всякой левизной.
2. Не привязаны к loop0.
3. Не привязаны к источнику и приемнику. Задавай их переменными и монтируй "что нужно куда нужно".
4. Не привязаны к файловой системе.
5. Опять-же, за счет отсутствия связи с fstab, проще модернизировать. Например, замена "loop" на "bind" позволяет монтировать каталоги.
« Последнее редактирование: 30 Ноября 2020, 14:47:59 от andytux »

Оффлайн snowin

  • Активист
  • *
  • Сообщений: 883
    • Просмотр профиля
Re: скрипт не работает в Ubuntu
« Ответ #6 : 30 Ноября 2020, 15:41:29 »
В нынешних версиях *бунту реально баш находится в /usr/bin
ubintu 20.4

Цитировать
-rwxr-xr-x 1 root root 1183448 июн 18 18:44 /bin/bash*
что у меня не так?

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6406
    • Просмотр профиля
Re: скрипт не работает в Ubuntu
« Ответ #7 : 30 Ноября 2020, 16:00:38 »
Цитировать
что у меня не так?
А вам интересно? В "чистой" 20.04 (и даже немного раньше) каталог bin - это символическая ссылка на /usr/bin. Если 20.04 получили в результате обновления предыдущей версиии, то там я не знаю как будет. Посмотрите глазами.
Я обжегся на efibootmgr. В 20.04 глянул, в /usr/bin. Вписал в скрипт. А на 18.04 скрипт не нашел efibootmgr, так как там он в /bin.

Оффлайн snowin

  • Активист
  • *
  • Сообщений: 883
    • Просмотр профиля
Re: скрипт не работает в Ubuntu
« Ответ #8 : 30 Ноября 2020, 16:09:47 »
Я обжегся на efibootmgr. В 20.04 глянул, в /usr/bin. Вписал в скрипт. А на 18.04 скрипт не нашел efibootmgr, так как там он в /bin.
поэтому и придумали env, который сам определяет где, что находиться: /usr/bin/env bash или /usr/bin/env python

вроде так, если не путаю

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2934
    • Просмотр профиля
Re: скрипт не работает в Ubuntu
« Ответ #9 : 30 Ноября 2020, 20:52:46 »
andytux, во-первых, мне надо именно через /ets/fstab, во-вторых, причина оказалсь в том,
что в Ubuntu у меня не работает ссылка в /tmp, указывающая на файл у меня в домашнем каталоге.
Если я в каалоге /tmp ввожу команду
ln -sf /home/peter/archive/iso/name.sum sumона выолняется и я могу прочитать этот файл по ссылке. Если же я у себя в /home/peter/archive/iso ввожу команду
ln -sf `pwd`/name.sum /tmp/sumто в /tmp создаётся ссылка sum, но красная и с '!' и по ней это файл недоступен с сообщением "permissiom denied".
Пока не понял, в чём причина, каких прав ей надо.
Пётр.

Оффлайн snowin

  • Активист
  • *
  • Сообщений: 883
    • Просмотр профиля
Re: скрипт не работает в Ubuntu
« Ответ #10 : 30 Ноября 2020, 21:01:00 »
Peter_I, дык, разве у тя на папку /tmp не рутовые права?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28267
    • Просмотр профиля
Re: скрипт не работает в Ubuntu
« Ответ #11 : 30 Ноября 2020, 21:02:09 »
ln -fsT "$( readlink -e "$1" )" /tmp/isoОтучайтесь от этих дебильных кавычек.

Пользователь добавил сообщение 30 Ноября 2020, 21:02:55:
snowin, Нет.
# getfacl /tmp
getfacl: Removing leading '/' from absolute path names
# file: tmp
# owner: root
# group: root
# flags: --t
user::rwx
group::rwx
other::rwx
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2934
    • Просмотр профиля
Re: скрипт не работает в Ubuntu
« Ответ #12 : 30 Ноября 2020, 21:05:54 »
AnrDaemon, Я уже заметил, что у создаваемых мною ссылок в этих случаях разные права, а на /tmp stiky-bit.
Попробую что-то сделать по Ваешму совету.


Пользователь добавил сообщение 30 Ноября 2020, 21:10:24:
snowin, на неё права 777, но на ней stiky-bit, т.е. то, что в ней создаётся, по умолчанию принадлежит root.
Вот ссылка, созданная мною при нахождении в /tmp, принадлежит root, а созданная из моего каталога принадлежит мне
и в мой каталог войти не может.
« Последнее редактирование: 30 Ноября 2020, 21:15:07 от Peter_I »
Пётр.

Оффлайн ALiEN175

  • Администратор
  • Старожил
  • *
  • Сообщений: 6247
  • Vamos a Bailar
    • Просмотр профиля
Re: скрипт не работает в Ubuntu
« Ответ #13 : 30 Ноября 2020, 21:35:42 »
то в /tmp создаётся ссылка sum, но красная и с '!' и по ней это файл недоступен с сообщением "permissiom denied".
проверьте куда ведёт ссылка
ls -l /tmp
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2934
    • Просмотр профиля
Re: скрипт не работает в Ubuntu
« Ответ #14 : 30 Ноября 2020, 21:37:14 »
AnrDaemon, не помогает, но я заметил следующее: как бы я ни создавал ссылку, старым способом или через readlink,
она в /tmp принадлежит мне, а не root, при этом, когда я как пользователь вхожу в /tmp, я нормально вижу эту ссылку
и могу по ней прочитать файл, а когда я вхожу в /tmp как root, то вижу эту же ссылку красной и с '!'и файл прочитать не могу.
Тут затронуто что-то очень глубинное, самые основы Linux, возножно, это чьи-то козни.


Пользователь добавил сообщение 30 Ноября 2020, 21:38:35:
ALiEN175, ссылка в /tmp правильно указывает на мой файл.
Пётр.

 

Страница сгенерирована за 0.084 секунд. Запросов: 25.