概述:

概述:

我有一个脚本,可以将 Samba 共享挂载到桌面上的文件夹,它运行没有问题,但是当它设置为 LoginHook 时,它不会挂载该文件夹。

有人有可以安装共享并发布信息的登录钩子吗?或者知道登录期间安装共享存在什么问题吗?

这是我的脚本:

#!/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
")

答案1

概述:

创建一个 launchd 代理(在本例中是一个 bash 脚本),每隔几分钟挂载我们喜欢的任何共享。它并不完美,但可以工作。这是针对 Samba 共享的,但您可以对其进行修改以执行其他类型。

在 Dave Nicoll 的帮助下制作了有关共享 windows/x iTunes 库的内容。

我正在使用笔记本电脑的无线网卡来确定我是否已连接到家庭 SSID。当然,您可以使用任何您想要的条件执行。

如果您要像我一样使用 SSID 作为挂载条件,您可能会发现将 OS X 附带的 Airport 实用程序别名为 /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:[email protected]/media/Music' '/Users/kyle/Music/'
        fi
    fi
fi

接下来,我们需要编辑第 11 行以代表您的特定需求。您只需编辑大胆的部分:

/sbin/mount -o nodev,nosuid -t smbfs '//用户:密码@服务器IP或名称/共享' '/您希望将其安装到哪里/

例子:

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

现在我们已经编辑了 mount 命令,尝试运行它终端。如果成功,您的共享应该可以在安装位置使用。(在我的示例中/Users/kyle/Music/

编辑1 号线的 bash 脚本来反映已挂载共享内的文件或目录。如果您要像我一样使用 SSID 作为条件,您需要更改5号线通过替换2600里格使用您的 SSID。

将 bash 脚本保存在方便的位置。(我使用~/Library/Scripts/NetworkMounts/MountShares.sh

现在你需要使 bash 脚本可执行,我们使用修改模式去做这个。

终端

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

如果网络共享仍处于安装状态,请确保立即将其卸载/弹出。(发现者作品)

尝试通过执行脚本终端

~/Library/Scripts/NetworkMounts/MountShares.sh

如果一切顺利,您的共享应该已挂载。现在剩下要做的就是让脚本每隔一段时间运行一次。通常你会使用定时任务这类事情,但 10.6 已经弃用它。苹果宁愿你使用他们的启动服务。

制作启动代理人

为了帮助你使启动代理获得林贡来自 sourceforge。

  1. 打开 Lingon
  2. 创建新的用户代理(我的代理)
  3. 给它起一个名字,例如 com.kyle.MountShares
  4. 选择或输入 bash 脚本的路径 ~/Library/Scripts/NetworkMounts/MountShares.sh
  5. 指定您希望它何时运行。(我有系统加载时运行并且 *每隔 10分钟)
  6. 保存
  7. 退出 Lingon

就是这样

如果这有帮助,请告诉我;我尽可能快地把这些都打出来了。

答案2

上周五我花了大半天时间试图解决这个问题。结果发现,用户登录名现在区分大小写。例如,在我的 AD 中,用户的登录名是“JSmith”。使用用户名“jsmith”安装共享失败,并显示“管道损坏”。使用“JSmith”安装对我来说如预期一样。

我正在使用 10.5.8。

答案3

我过去曾成功使用过以下脚本,但有一段时间我没有使用或需要它:

mkdir -p ~/Desktop/Folder
mount_smbfs //domain;[email protected]/Share /Users/username/Desktop/Folder

答案4

您可以将 Mac 客户端绑定到您的 AD 域,而不是使用登录挂钩。在用户的 AD 帐户中,您可以将主文件夹设置为您的 SMB 共享,并配置所有内容,以便该文件夹在登录时挂载。或者,如果这是一台共享计算机并且它不是主user文件夹,您可以设置机器首选项以在启动时在计算机上挂载共享。您可以为您的用户获得 AD 身份验证的额外优势。

相关内容