LINUX.ORG.RU
ФорумAdmin

Скрипт автомонтирования webDAV и enc

 , ,


0

1

Здравствуйте, уважаемые.

Centos 7.3. Монтирую диск с шифрованием через davfs и encfs.

Монтирование в ручную проходит без ошибок командами


mount /home/user1/box

encfs /home/user/box/crypt /home/user/box.crypt

Пытаюсь примонтировать скриптом


#!/bin/sh

userhome=/home/user1
service=box
isdavmounted=$(mount | grep $service | grep davfs)
isencmounted=$(mount | grep $service | grep encfs)

if [ -n "$isencmounted" -o -n "$isdavmounted" ]; then
  #unmount
  [ -n "$isencmounted" ] && {
    fusermount -u "/${userhome}/${service}.crypt" && msg="Encfs,"
  }
  [ -n "$isdavmounted" ] && {
    umount "/${userhome}/${service}" && msg="${msg}Davfs "
  }
  if [ -n "$msg" ]; then
    notify-send -u low -i info "$service unmounting" "$msg unmouned successfuly!"
  else
    notify-send -u low -i error "$service unmounting" "Failed to unmouned $service!"
  fi
else
  #mount
  mount /${userhome}/box && {
    msg="Davfs,"
    encfs --extpass="cat ~/.encfs/$service" /${userhome}/box/crypt /${userhome}/box.crypt/ && {
      msg="${msg}Encfs "
    }
  }
  if [ -n "$msg" ]; then
    notify-send -u low -i info "$service mounting" "$msg mouned successfuly!"
  else
    notify-send -u low -i error "$service mounting" "Failed to mouned $service!"
  fi
fi


Если сетевая директория примонтирована, выполнение скрипта выдает ошибку:

/home/user1/mount.box: line 17: notify-send: команда не найдена
При этом директория остается примонтированной.

Если отмонтировать директорию umount'ом и еще раз выполнить скрипт, то директория монтируется с комментарием:

sh ~/mount.box

/sbin/mount.davfs: Warning: can't write entry into mtab, but will mount the file system anyway

/home/user1/mount.box: line 30: notify-send: команда не найдена

В чем проблема, как исправить?

твоя машина не знает команду notify-send

это гуевая команда и она запускается толькл рутом.

так что либо удали про нее строчки из скрипта, или запускай скрипт из под рута если на машине стоит гуй.

constin ★★★★
()

и еще она пробует отправить нотификейшен юзеру low.

скрипт написан кем-то под конкретный кейс, видимо. его бы подправить

constin ★★★★
()
Ответ на: комментарий от constin

Да, вы правы, скрипт чужой... Спасибо за пользователя low и notify-send

Задача скрипта изначально - проверять примонтированы ли директория через webDAV и в ней «прикриптена» ли шифрующая директория. Если примонтированы - отмонтировать, выдать сообщения, и примонтировать сначала webDAV, а потом и encfs (пароли лежат в соответствующем файле), выдать уведомление об успешном подключении или об ошибке подключения.

Уведомления мне не нужны, GUI нет, машина серверная.

А остальной функционал нужен.

Удалила из кода notify-send. Привела к виду:


#!/bin/sh

userhome=/home/user1
service=box
isdavmounted=$(mount | grep $service | grep davfs)
isencmounted=$(mount | grep $service | grep encfs)

if [ -n "$isencmounted" -o -n "$isdavmounted" ]; then
  [ -n "$isencmounted" ] && {
    fusermount -u "/${userhome}/${service}.crypt" && msg="Encfs,"
  }
  [ -n "$isdavmounted" ] && {
    umount "/${userhome}/${service}" && msg="${msg}Davfs "
  }
else
  mount /${userhome}/box && {
    msg="Davfs,"
    encfs --extpass="cat ~/.encfs/$service" /${userhome}/box/crypt /${userhome}/box.crypt/ && {
      msg="${msg}Encfs "
    }
  }
fi

Выявила три варианта работы скрипта:

  • При обеих отмонтированных директориях (webDAV и crypt): монтируются обе директории, с комментарием
    Warning: can't write entry into mtab, but will mount the file system anyway
  • При обеих уже примонтированных директория: отмонтируется шифрующая директория, комментариев при выполнении нет (проверяю через df -h)
  • При одной примонтированной директории (webDAV): директория не перемонтируется, а не примонтированная (которая encfs) - не монтируется, комментарий при выполнении:
    /sbin/mount.davfs: https://dav.box.com/dav/ is already mounted on /home/user1/box

    И из-под пользователя user1 не могу отмонтировать, если примонтирована даже его директория, хотя в /etc/fstab прописан user в опциях монтирования.

    Подскажите, скрипт совсем под мои задачи не подходит?

    И, куда копать???

manik207
() автор топика

При обеих отмонтированных директориях (webDAV и crypt): монтируются обе директории, с комментарием: arning: can't write entry into mtab, but will mount the file system anyway

Это вроде какой-то глюк centos , можно игнорировать . Если не нравится сообщение,то добавить

...
mount /${userhome}/box > /dev/null 2>&1 && {
...

При одной примонтированной директории (webDAV): директория не перемонтируется, а не примонтированная (которая encfs) - не монтируется, комментарий при выполнении:

я не любитель centos , под рукой ничего нет. копать нужно , выполнив все действия руками, и посмотреть что происходит.

не примонтированная (которая encfs)

mount | grep box | grep encfs - смотрим что отдает

mount | grep box | grep davfs - тоже смотрим

потом вставляем в каждое условие if и else что-нибудь типа echo «if 1» , echo «if 2», echo «if 3», чтобы проследить по какому пути пошел скрипт и какие условия выполнились. желательно еще в echo спихивать переменные , которые if проверяет.

как-то так.

constin ★★★★
()
Ответ на: комментарий от constin

Обнаружилась проблема с правами, из-под пользователя не могу отмонтировать... Решила делать из-под рута, скрипт в этом виде уже неактуален. Спасибо!

manik207
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.