3

У меня есть скрипт, который монтирует общий ресурс Samba в папку на рабочем столе, он запускается без проблем, но при настройке в качестве LoginHook он не монтирует папку.

У кого-нибудь есть работающий хук входа в систему, который монтирует общий ресурс, который они могут публиковать? Или знаете какие-либо проблемы с монтированием общих ресурсов при входе в систему?

Это мой сценарий:

#!/usr/bin/env ruby
@domain="Lancaster"
@user=ARGV[0]
#@user=@user.gsub(/\n/,"")
@userfolder="/Users/" + @user.to_s
@smbshare="//#{@user}@hercules/everyone"
system("mkdir #{@userfolder}/Desktop/everyone")
system("mount_smbfs #{@smbshare} #{@userfolder}/Desktop/everyone | #{@userfolde$
system("
/usr/bin/osascript <<-EOF
        tell application \"System Events\"
                activate
                display dialog \"Welcome to the #{@domain} domain #{@user}\n\nY$
        end tell
EOF
")

4 ответа4

3

Обзор:

Создайте агент launchd (в данном случае bash-скрипт), который будет монтировать нам любые общие ресурсы каждые две минуты. Это не идеально, но это работает. Это для общих ресурсов Samba, но вы можете изменить его для других типов.

Сделано с помощью Дэйва Николла о совместном использовании библиотек windows/x iTunes.

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

Если вы собираетесь использовать SSID в качестве условия для монтирования, как у меня, вы можете счесть его полезным для псевдонима утилиты Airport, которая поставляется с OS X к вашему /usr /bin /. Если нет, переходите к следующему разделу.

Откройте терминал и запустите:

sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/sbin/airport
Запомните вывод этого:
airport -I | grep '.* SSID:' | sed 's/^.* SSID: //'

Сценарий:

Мои условные проверки для

  1. Доля еще не установлена (строка 1-4)
  2. SSID нашей карточной сети Аэропорт не является нулевым (строка 5-8)
  3. Что наш SSID должен быть равен предварительно определенному SSID, в моем случае "2600leagues" (строка 9)

Откройте ваш любимый текстовый редактор и начните новый файл, я назвал мой MountShares.sh

if [ -d '/Users/kyle/Music/iTunes/Podcasts/' ]; then
        #echo Nothing to do, share is mounted
        exit
else 
    if [ -z `airport -I | grep '.* SSID:' | sed 's/^.* SSID: //'` ]; then
       #echo SSID is Null, we're not connected with the Airport to any Network.
        exit
    else 
        if [ `airport -I | grep '.* SSID:' | sed 's/^.* SSID: //'` == "2600leagues" ]; then
            #echo SSID is 2600leagues!
            /sbin/mount -o nodev,nosuid -t smbfs '//Kyle:NotmyPassword@192.168.1.5/media/Music' '/Users/kyle/Music/'
        fi
    fi
fi

Далее нам нужно отредактировать строку 11, чтобы представить ваши конкретные потребности. Вам нужно только отредактировать жирные части:

/sbin/mount -o nodev, nosuid -t smbfs '// Пользователь: Пароль @ ServerIP_or_Name/ Поделиться ' ' / Где / Вы / Хотите / it_to_mount / '

Пример:

/sbin/mount -o nodev,nosuid -t smbfs '//Kyle:NotmyPassword@192.168.1.5/media/Music' '/Users/kyle/Music/'

Теперь, когда у нас есть отредактированная команда mount, попробуйте запустить ее в Терминале. В случае успеха ваша общая папка должна быть доступна в месте монтирования. (в моем примере /Users/kyle/Music/)

Отредактируйте строку 1 скрипта bash, чтобы отразить файл или каталог внутри смонтированного общего ресурса. Если вы собираетесь использовать SSID в качестве условия, как у меня, вы захотите изменить строку 5 , заменив 2600 Лиги своим SSID.

Сохраните скрипт bash в удобном месте. (Я использую ~/Library/Scripts/NetworkMounts/MountShares.sh)

Теперь вам нужно сделать исполняемый скрипт bash, для этого мы используем chmod .

В терминале:

chmod 777 ~/Library/Scripts/NetworkMounts/MountShares.sh

Если сетевой ресурс все еще подключен, убедитесь, что вы размонтировали / удалили его сейчас. (Finder работает)

Попробуйте выполнить скрипт через Терминал:

~/Library/Scripts/NetworkMounts/MountShares.sh

Если все идет хорошо, ваша доля должна быть установлена. Теперь осталось только сделать так, чтобы скрипт запускался очень часто. Обычно вы используете crontab для такого рода вещей, но 10.6 устарела. Apple предпочла бы, чтобы вы использовали их сервис запуска .

Создание запуска агента

Чтобы помочь вам сделать агент запуска, получите Lingon из sourceforge.

  1. Открытый лингон
  2. Создать новый пользовательский агент (Мой агент)
  3. Дайте ему имя, например com.kyle.MountShares
  4. Выберите или введите путь к сценарию bash ~/Library/Scripts/NetworkMounts/MountShares.sh
  5. Укажите, когда вы хотите запустить его. (У меня есть Запуск, когда он загружен системой и * Запускать каждые 10 минут)
  6. Сохрани это
  7. Выход Лингон

это оно

Позвольте мне знать, если это помогает; Я набрал все это как можно быстрее.

1

Я провел большую часть своей пятницы на прошлой неделе, пытаясь понять это тоже. Как оказалось, имя пользователя для входа теперь чувствительно к регистру. Например, у меня в AD пользователи имеют логин типа "JSmith". Монтирование общего ресурса с именем пользователя "jsmith" завершается неудачно с "Broken pipe". Крепление с "JSmith" работает, как я ожидал.

Я использую 10.5.8.

0

Вместо входа в систему вы можете привязать клиент Mac к вашему домену AD. В учетной записи AD пользователя вы можете установить домашнюю папку для общего ресурса SMB и настроить все так, чтобы папка монтировалась при входе в систему. В качестве альтернативы, если это общий компьютер, а не домашняя папка user , вы можете установить предпочтение компьютера для подключения общего ресурса к компьютеру при запуске. Вы получаете дополнительное преимущество аутентификации AD для своих пользователей.

0

В прошлом я с успехом использовал следующий скрипт, но некоторое время не пользовался им и не нуждался в нем:

mkdir -p ~/Desktop/Folder
mount_smbfs //domain;USERNAME@server.example.com/Share /Users/username/Desktop/Folder

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .