Автор Тема: Автоматическое монтирование сетевых дисков с помощью autofs [решено]  (Прочитано 5956 раз)

Оффлайн Poherless

  • Участник
  • *
  • Сообщений: 22
Хочу настроить автоматическое монтирование удаленного расшаренного ресурса windows.
Версия autofs v5.0.5. Работаю по материалам
http://www.howtoforge.com/accessing_windows_or_samba_shares_using_autofs
Но подключения не происходит. Ниже я описал, что делаю и привел фрагмент лога.

=Создаю файлы.
1) /etc/auto.master
/cifs /etc/auto.cifs --timeout=60
2) /etc/auto.cifs
#!/bin/bash
# $Id$
# This file must be executable to work! chmod 755!
key="$1"
# Note: create a cred file for each windows/Samba-Server in your network
#       which requires password authentification.  The file should contain
#       exactly two lines:
#          username=user
#          password=*****
#       Please don't use blank spaces to separate the equal sign from the
#       user account name or password.
credfile="/etc/auto.smb.$key"
# Note: Use cifs instead of smbfs:
#uid=al,gid=net,iocharset=utf8,
mountopts="-fstype=cifs,file_mode=0644,dir_mode=0755"
smbclientopts=""
for P in /bin /sbin /usr/bin /usr/sbin
do
        if [ -x $P/smbclient ]
        then
                SMBCLIENT=$P/smbclient
                break
        fi
done
[ -x $SMBCLIENT ] || exit 1
if [ -e "$credfile" ]
then
        mountopts=$mountopts",credentials=$credfile"
        smbclientopts="-A "$credfile
else
        smbclientopts="-N"
fi
$SMBCLIENT $smbclientopts -gNL $key 2>/dev/null \
   | awk -v key="$key" -v opts="$mountopts" -F'|' -- '
        BEGIN   { ORS=""; first=1 }
/Disk/  { if (first) { print opts; first=0 };
 gsub(/ /, "\\ ", $2);
 sub(/\$/, "\\$", $2);
 print " \\\n\t /" $2, "://" key "/" $2 }
        END     { if (!first) print "\n"; else exit 1 }
        '

3) /etc/auto.smb.miroslava, здесь miroslava - имя хоста windows7, на котором имеется акаунт администратора al
username=al
password=12345

При обращении к /cifs показывает пустую папку. При обращении к /cifs/miroslava/rw (rw-расшаренная папка) выдает сообщение "папка не существует". Лог ошибки:
Nov 11 16:49:20 Linux automount[5303]: handle_packet: type = 3
Nov 11 16:49:20 Linux automount[5303]: handle_packet_missing_indirect: token 8086, name miroslava, request pid 30816
Nov 11 16:49:20 Linux automount[5303]: attempting to mount entry /cifs/miroslava
Nov 11 16:49:20 Linux automount[5303]: lookup_mount: lookup(program): looking up miroslava
Nov 11 16:49:20 Linux automount[5303]: lookup_mount: lookup(program): miroslava -> -fstype=cifs,file_mode=0644,dir_mode=0755,uid=al,gid=net,credentials=/etc/auto.smb.miroslava  ^I /ADMIN\$ ://miroslava/ADMIN\$  ^I /C\$ ://miroslava/C\$  ^I /D\$ ://miroslava/D\$  ^I /F\$ ://miroslava/F\$  ^I /rw ://miroslava/rw  ^I /Users ://miroslava/Users  ^I /�\237�\200о�\204е�\201�\201ионал�\214ное\ �\204о�\202о ://miroslava/�\237�\200о�\204е�\201�\201ионал�\214ное\ �\204о�\202о
Nov 11 16:49:20 Linux automount[5303]: parse_mount: parse(sun): expanded entry: -fstype=cifs,file_mode=0644,dir_mode=0755,uid=al,gid=net,credentials=/etc/auto.smb.miroslava  ^I /ADMIN\$ ://miroslava/ADMIN\$  ^I /C\$ ://miroslava/C\$  ^I /D\$ ://miroslava/D\$  ^I /F\$ ://miroslava/F\$  ^I /rw ://miroslava/rw  ^I /Users ://miroslava/Users  ^I /�\237�\200о�\204е�\201�\201ионал�\214ное\ �\204о�\202о ://miroslava/�\237�\200о�\204е�\201�\201ионал�\214ное\ �\204о�\202о
Nov 11 16:49:20 Linux automount[5303]: parse_mount: parse(sun): gathered options: fstype=cifs,file_mode=0644,dir_mode=0755,uid=al,gid=net,credentials=/etc/auto.smb.miroslava
Nov 11 16:49:20 Linux automount[5303]: parse_mount: parse(sun): dequote("/ADMIN\$") -> /ADMIN$
Nov 11 16:49:20 Linux automount[5303]: parse_mapent: parse(sun): gathered options: fstype=cifs,file_mode=0644,dir_mode=0755,uid=al,gid=net,credentials=/etc/auto.smb.miroslava
Nov 11 16:49:20 Linux automount[5303]: parse_mapent: parse(sun): dequote("://miroslava/ADMIN\$") -> ://miroslava/ADMIN$
Nov 11 16:49:20 Linux automount[5303]: add_offset_entry: parse(sun): added multi-mount offset /ADMIN$ -> -fstype=cifs,file_mode=0644,dir_mode=0755,uid=al,gid=net,credentials=/etc/auto.smb.miroslava ://miroslava/ADMIN$
Nov 11 16:49:20 Linux automount[5303]: parse_mount: parse(sun): dequote("/C\$") -> /C$
Nov 11 16:49:20 Linux automount[5303]: parse_mapent: parse(sun): gathered options: fstype=cifs,file_mode=0644,dir_mode=0755,uid=al,gid=net,credentials=/etc/auto.smb.miroslava
Nov 11 16:49:20 Linux automount[5303]: parse_mapent: parse(sun): dequote("://miroslava/C\$") -> ://miroslava/C$
Nov 11 16:49:20 Linux automount[5303]: add_offset_entry: parse(sun): added multi-mount offset /C$ -> -fstype=cifs,file_mode=0644,dir_mode=0755,uid=al,gid=net,credentials=/etc/auto.smb.miroslava ://miroslava/C$
Nov 11 16:49:20 Linux automount[5303]: parse_mount: parse(sun): dequote("/D\$") -> /D$
Nov 11 16:49:20 Linux automount[5303]: parse_mapent: parse(sun): gathered options: fstype=cifs,file_mode=0644,dir_mode=0755,uid=al,gid=net,credentials=/etc/auto.smb.miroslava
Nov 11 16:49:20 Linux automount[5303]: parse_mapent: parse(sun): dequote("://miroslava/D\$") -> ://miroslava/D$
Nov 11 16:49:20 Linux automount[5303]: add_offset_entry: parse(sun): added multi-mount offset /D$ -> -fstype=cifs,file_mode=0644,dir_mode=0755,uid=al,gid=net,credentials=/etc/auto.smb.miroslava ://miroslava/D$
Nov 11 16:49:20 Linux automount[5303]: parse_mount: parse(sun): dequote("/F\$") -> /F$
Nov 11 16:49:20 Linux automount[5303]: parse_mapent: parse(sun): gathered options: fstype=cifs,file_mode=0644,dir_mode=0755,uid=al,gid=net,credentials=/etc/auto.smb.miroslava
Nov 11 16:49:20 Linux automount[5303]: parse_mapent: parse(sun): dequote("://miroslava/F\$") -> ://miroslava/F$
Nov 11 16:49:20 Linux automount[5303]: add_offset_entry: parse(sun): added multi-mount offset /F$ -> -fstype=cifs,file_mode=0644,dir_mode=0755,uid=al,gid=net,credentials=/etc/auto.smb.miroslava ://miroslava/F$
Nov 11 16:49:20 Linux automount[5303]: parse_mount: parse(sun): dequote("/rw") -> /rw
Nov 11 16:49:20 Linux automount[5303]: parse_mapent: parse(sun): gathered options: fstype=cifs,file_mode=0644,dir_mode=0755,uid=al,gid=net,credentials=/etc/auto.smb.miroslava
Nov 11 16:49:20 Linux automount[5303]: parse_mapent: parse(sun): dequote("://miroslava/rw") -> ://miroslava/rw
Nov 11 16:49:20 Linux automount[5303]: add_offset_entry: parse(sun): added multi-mount offset /rw -> -fstype=cifs,file_mode=0644,dir_mode=0755,uid=al,gid=net,credentials=/etc/auto.smb.miroslava ://miroslava/rw
Nov 11 16:49:20 Linux automount[5303]: parse_mount: parse(sun): dequote("/Users") -> /Users
Nov 11 16:49:20 Linux automount[5303]: parse_mapent: parse(sun): gathered options: fstype=cifs,file_mode=0644,dir_mode=0755,uid=al,gid=net,credentials=/etc/auto.smb.miroslava
Nov 11 16:49:20 Linux automount[5303]: parse_mapent: parse(sun): dequote("://miroslava/Users") -> ://miroslava/Users
Nov 11 16:49:20 Linux automount[5303]: add_offset_entry: parse(sun): added multi-mount offset /Users -> -fstype=cifs,file_mode=0644,dir_mode=0755,uid=al,gid=net,credentials=/etc/auto.smb.miroslava ://miroslava/Users
Nov 11 16:49:20 Linux automount[5303]: parse_mount: parse(sun): dequote("/�\237�\200о�\204е�\201�\201ионал�\214ное\ �\204о�\202о") -> (null)
Nov 11 16:49:20 Linux automount[5303]: parse(sun): null path or out of memory
Nov 11 16:49:20 Linux automount[5303]: cache_delete_offset_list: deleting offset key /cifs/miroslava/ADMIN$
Nov 11 16:49:20 Linux automount[5303]: cache_delete_offset_list: deleting offset key /cifs/miroslava/C$
Nov 11 16:49:20 Linux automount[5303]: cache_delete_offset_list: deleting offset key /cifs/miroslava/D$
Nov 11 16:49:20 Linux automount[5303]: cache_delete_offset_list: deleting offset key /cifs/miroslava/F$
Nov 11 16:49:20 Linux automount[5303]: cache_delete_offset_list: deleting offset key /cifs/miroslava/Users
Nov 11 16:49:20 Linux automount[5303]: cache_delete_offset_list: deleting offset key /cifs/miroslava/rw
Nov 11 16:49:20 Linux automount[5303]: dev_ioctl_send_fail: token = 8086
Nov 11 16:49:20 Linux automount[5303]: failed to mount /cifs/miroslava
Nov 11 16:49:20 Linux automount[5303]: handle_packet: type = 3

Вопрос: что не ладно?
Спасибо.
« Последнее редактирование: 18.11.2010 01:13:43 от Skull »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Проблема с autofs
« Ответ #1 : 11.11.2010 22:45:39 »
А чем вам не понравился  /etc/auto.smb из пакета?

Оффлайн Poherless

  • Участник
  • *
  • Сообщений: 22
Re: Проблема с autofs
« Ответ #2 : 12.11.2010 11:56:39 »
Не нашел статьи, где бы описывалось использование скрипта в файле /etc/auto.smb
в основном этот файл содержит строчку вроде:
my_dir -fstype=smbfs,username=user,password=111,uid=1000,gid=1000 ://smbserver/share

но у меня это не работает, вылезает куча ошибок, типа
automount[11686]: failed to mount /smb/.directory

А со скриптом auto.cisf по логам видно, что на самба-сервер заходит, находит все шары, но дальше какой-то косяк (см. лог первого сообщения темы). Вот что эта ошибка значит и не могу понять.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Проблема с autofs
« Ответ #3 : 12.11.2010 18:23:40 »
Не нашел статьи, где бы описывалось использование скрипта в файле /etc/auto.smb
в основном этот файл содержит строчку вроде:
my_dir -fstype=smbfs,username=user,password=111,uid=1000,gid=1000 ://smbserver/share

Странно :
$cat /etc/auto.smb

#!/bin/bash

# This file must be executable to work! chmod 755!

key="$1"
opts="-fstype=cifs"

for P in /bin /sbin /usr/bin /usr/sbin
do
        if [ -x $P/smbclient ]
        then
                SMBCLIENT=$P/smbclient
                break
        fi
done

[ -x $SMBCLIENT ] || exit 1

$SMBCLIENT -gNL $key 2>/dev/null| awk -v key="$key" -v opts="$opts" -F'|' -- '
        BEGIN   { ORS=""; first=1 }
        /Disk/  {
                  if (first)
                        print opts; first=0
                  dir = $2
                  loc = $2
                  # Enclose mount dir and location in quotes
                  # Double quote "$" in location as it is special
                  gsub(/\$$/, "\\$", loc);
                  print " \\\n\t \"/" dir "\"", "\"://" key "/" loc "\""
                }
        END     { if (!first) print "\n"; else exit 1 }
        '



Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Проблема с autofs
« Ответ #4 : 12.11.2010 18:24:53 »
PS Косяк скорей всего связан с использованием кириллицы. Но может и не так.

Оффлайн Poherless

  • Участник
  • *
  • Сообщений: 22
Re: Проблема с autofs
« Ответ #5 : 12.11.2010 19:33:36 »
=Сам-то коробочный скрипт /etc/auto.smb у меня есть  :), я говорил, что описания к нему нету и как прикрутить авторизационные данные из файла credentials не понятно и чего с ним дальше делать тоже.

Если у вас есть ссылка на мануал буду признателен, потому как в интернетах не нашел.

Оффлайн Poherless

  • Участник
  • *
  • Сообщений: 22
Ура! Решение найдено!
Автомонтирование сетевых дисков с помощью autofs (automount). Без скриптов. У меня работает с удаленным сервером windows7. Если кому-то пригодится, вот краткая инструкция.

Создаем три файла.
=1    /etc/auto.master (Основной файл)
#
# --ghost (подпапка, в которую примонтируется шара, не будет автоудалятся при отмонтировании)
# --timeout=n (после бездействия над шарой, она автоматически отмонтируется через n секунд)
#Куда_монтировать map_file опции
/mnt/neta /etc/auto.neta --timeout=100

=2    /etc/auto.neta (map_file)
#
# ://miroslava/share может не сработать (если напр, wins косячит), поэтому лучше писать
# ://10.10.10.2/share или добавить строчку "10.10.10.2  miroslava" в /etc/hosts
#Папка -опции ://сервер/шара
mi_rw -fstype=cifs,credentials=/etc/auto.miroslava ://miroslava/rw
mi_d -fstype=cifs,credentials=/etc/auto.miroslava ://miroslava/d\$
#Таким образом, шара примонтируется в /mnt/neta/mi_rw и в /mnt/neta/mi_d соответственно.

=3    /etc/auto.miroslava (Авторизационный файл)
username=Admin
password=пароль
Необходимо ограничить доступ к содержимому файла (chmod 700 /etc/auto.miroslava).
Указанная учетная запись должна существовать на удаленном хосте и обладать всеми требуемыми правами.

Перезапускаем autofs:
[root@Linux /]# service autofs restart
Чтобы установить autofs в автозапуск, делаем:
[root@Linux /]# chkconfig --level 345 autofs on


Теперь, заходим в /mnt/neta/ и сетевые папки автоматически монтируются. Никаких запросов паролей и проч. После простаивания они автоматически отмонтируются.

=Также есть ещё один конфигурационный файл /etc/sysconfig/autofs , но в нём я всё оставил по умолчанию.


P.S. Господа, если всё-таки есть среди вас успешно оседлавшие скрипты под autofs, поделитесь знаниями.