2017-07-31 89 views
1

目前这是我的delima。偶尔,构建代理将重启。它需要始终保持连接状态,以共享我们的一台服务器。这个想法是告诉finder装入音量,等待2秒钟,然后按enter键,因为用户名和密码都是我输入地址时的一部分,例如SMB://username:[email protected]/DFS它会弹出完整填充的密码对话框,但我无法让applescript识别它,然后按连接或返回以说“是”登录名和不提示我。当提示连接到服务器时,使用苹果脚本按回车键

它在家中连接到Synology设备时工作正常,但在连接到办公室的服务器时无法正常工作。

tell application "Finder" to mount volume "SMB://username:[email protected]/DFS" 
delay 2 

tell application "System Events" to keystroke "return" -- key code 36 

对于这个看似简单的步骤的任何帮助将非常感谢。

我看过这个论坛,发现了各种各样的策略,但它们都与Firefox或其他一些脚本感知应用程序有关。我只需要它在密码对话框出现时按Enter键。

回答

0

好像可以XY Problem,我会想到一个解决方案,如https://apple.stackexchange.com/a/698/204318为你工作,直接安装分享:

mount -t smbfs //username:[email protected]/SHARENAME /SomeLocalFolderOfChoice 

但是,如果你真的需要与对话互动,并作为你问吧,需要的脚本了的东西一看this tutorial(Python编写):

  • 检测丢失连接
  • 尝试连接
  • 捕获屏幕定期
    • 查找对话框,否则循环
    • 错误失败
  • 如果检测对话框的几秒钟后,与它进行交互
    • 输入用户名和密码
    • 等待,然后按回车
  • 检查,如果连接一个小的延迟
  • 成功或失败后的工作

这种类型的策略是与您可能会遇到的,如果你是应该可以在AppleScript的各种不同的对话框的交互功能非常强大更熟悉它(或另一种脚本语言)。

1

首先Finder不需要挂载一个卷,你可以删除tell块。其次,如果传递了用户名和密码,该卷应该在没有对话的情况下挂载。也许你可以找到它没有的原因。

尽管如此密码对话框属于过程SecurityAgent,你必须使用(丑陋的)GUI脚本按下按钮:

tell application "System Events" 
    repeat until exists process "SecurityAgent" 
     delay 0.5 
    end repeat 
    tell window 1 of process "SecurityAgent" 
     click button 2 
    end tell 
end tell 

脚本等待窗出现了,这是不是更可靠硬编码延迟。

0

如果您对非AppleScript解决方案开放,那么您可能会考虑Keyboard Maestro,这是目前最好的Mac自动化工具之一。

你说:

它弹出完全填充的pasword对话,但我不能让 的AppleScript承认它,然后按无论是连接或返回 说“是的”登录witht帽子名并不要提示我。

您可以使用Keyboard Maestro轻松完成此操作。这是KM行动的一个例子来完成这个任务。

enter image description here

如果你想帮助的知识,请访问论坛: https://forum.keyboardmaestro.com/

我是一个大的AppleScript/JXA用户,但我经常发现它更容易/更快地使用KM用于许多自动化任务。当然,KM宏可以轻松执行AppleScript,JXA,Shell脚本和其他脚本。

您可以免费试用KM的完整版本30天。