Monte um compartilhamento em um Mac usando um gancho de login

3

Eu tenho um script que monta um compartilhamento do Samba em uma pasta na área de trabalho, ele não roda nenhum problema, mas quando é configurado como LoginHook, ele não monta a pasta.

Alguém tem um gancho de login de trabalho que monta um compartilhamento que ele possa postar? Ou conhece algum problema com a montagem de compartilhamentos durante o login?

Este é o meu script:

#!/usr/bin/env ruby
@domain="Lancaster"
@user=ARGV[0]
#@[email protected](/\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
")
    
por Arcath 14.12.2009 / 11:48

4 respostas

3

Visão geral:

Crie um agente launchd (um script básico neste caso) para nos montar os compartilhamentos que gostarmos a cada dois minutos. Não é perfeito, mas funciona. Isso é para compartilhamentos do Samba, mas você pode modificá-lo para fazer outros tipos.

Feito com a ajuda de Dave Nicoll sobre o compartilhamento de bibliotecas do windows / x do iTunes.

Estou usando a placa sem fio do meu laptop para determinar se estou conectado ao SSID da minha casa. Você pode, claro, usar qualquer coisa que quiser para a execução condicional.

Se você vai usar o SSID como uma condição para a montagem, eu acho que você pode achar que é um bom alias o utilitário Airport que vem com o OS X para seu / usr / bin /. Se não pular para a próxima seção.

Abra o Terminal e execute:

sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/sbin/airport
Lembre-se da saída disso:
airport -I | grep '.* SSID:' | sed 's/^.* SSID: //'

O script:

Minhas condicionais verificam

  1. O compartilhamento ainda não está montado (linha 1-4)
  2. O SSID da nossa rede de cartões do aeroporto não é nulo (linha 5-8)
  3. O nosso SSID deve ser igual a um SSID predefinido, no meu caso "2600leagues" (linha 9)

Abra seu editor de texto favorito e inicie um novo arquivo, eu chamo o meu 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:[email protected]/media/Music' '/Users/kyle/Music/'
        fi
    fi
fi

Em seguida, precisamos editar a linha 11 para representar suas necessidades específicas. Você só precisa editar as partes negrito :

/sbin/mount -o nodev,nosuid -t smbfs '//User:Password@ServerIP_or_Name/Share' '/Where/You/Want/it_to_mount/'

Exemplo:

/sbin/mount -o nodev,nosuid -t smbfs '//Kyle:[email protected]/media/Music' '/Users/kyle/Music/'

Agora que temos nosso comando de montagem editado, tente executá-lo no Terminal . Se for bem sucedido, a sua parte deve estar disponível no local de montagem. (no meu exemplo /Users/kyle/Music/ )

Edite a linha 1 do script bash para refletir um arquivo ou diretório dentro do compartilhamento montado. Se você vai usar o SSID como uma condição que eu tenho, você vai querer mudar linha 5 substituindo 2600leagues pelo seu SSID.

Salve o script bash em um local conveniente. (Eu uso ~/Library/Scripts/NetworkMounts/MountShares.sh )

Agora você precisa tornar o script bash executável, usamos chmod para fazer isso.

No Terminal :

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

Se o compartilhamento de rede ainda estiver montado, desmonte / ejete-o agora. ( Localizador funciona)

Tente executar o script por meio do Terminal :

~/Library/Scripts/NetworkMounts/MountShares.sh

Se tudo correr bem, a sua parte deve ser montada. Agora tudo o que resta a fazer é fazer com que o script seja executado de vez em quando. Normalmente, você usaria crontab para esse tipo de coisa, mas 10.6 o desaprovou. A Apple prefere que você use o serviço launchd .

Fazendo o launchd Agent

Para ajudar você a fazer um agente launchd, obtenha Lingon do sourceforge.

  1. Abrir o Lingon
  2. Crie um novo agente de usuário (meu agente)
  3. Dê um nome como com.kyle.MountShares
  4. Escolha ou digite o caminho para o bash roteiro %código%
  5. Especifique quando você gostaria que corre. (Eu tenho Run quando é carregado pelo sistema e * Run it every 10 minutos)
  6. Salvar
  7. Sair do Lingon

É isso

Deixe-me saber se isso ajuda; Eu digitei tudo isso o mais rápido possível.

    
por 27.05.2010 / 07:18
1

Passei a maior parte da minha sexta-feira na semana passada tentando descobrir isso também. Como se constata, o nome de logon do usuário agora faz distinção entre maiúsculas e minúsculas. Por exemplo, no meu AD os usuários têm um logon como "JSmith". Montar um compartilhamento com o nome de usuário "jsmith" falha com "Broken pipe". Montagem com "JSmith" funciona como esperado para mim.

Estou usando o 10.5.8.

    
por 09.05.2011 / 12:58
0

Eu usei o script a seguir com sucesso no passado, mas não usei nem precisei por um tempo:

mkdir -p ~/Desktop/Folder
mount_smbfs //domain;[email protected]/Share /Users/username/Desktop/Folder
    
por 14.12.2009 / 18:03
0

Em vez de um gancho de login, você pode vincular o cliente Mac ao seu domínio do AD. Na conta do AD do usuário, você pode definir a pasta base como seu compartilhamento SMB e configurar tudo para que a pasta seja montada no login. Alternativamente, se esta é uma máquina compartilhada e não é uma pasta user home, você pode definir a preferência da máquina para montar um compartilhamento no computador na inicialização. Você obtém a vantagem adicional da autenticação do AD para seus usuários.

    
por 16.12.2009 / 12:51