Macos 在Swift中运行Shell命令
我正在尝试构建一个swift OSX应用程序,它可以运行一些shell命令来装载用户请求的VPN。我尝试使用NSAppleScript,但每次尝试以管理员权限运行时都会出现错误,因此我决定使用NSTask调用将以管理员身份运行并装载VPN的apple脚本 为了调试通过NSTask使shell命令在swift中工作,我制作了一个测试脚本文件,其中只有一个简单的whoami命令,当我在脚本编辑器和终端中使用Macos 在Swift中运行Shell命令,macos,swift,shell,applescript,Macos,Swift,Shell,Applescript,我正在尝试构建一个swift OSX应用程序,它可以运行一些shell命令来装载用户请求的VPN。我尝试使用NSAppleScript,但每次尝试以管理员权限运行时都会出现错误,因此我决定使用NSTask调用将以管理员身份运行并装载VPN的apple脚本 为了调试通过NSTask使shell命令在swift中工作,我制作了一个测试脚本文件,其中只有一个简单的whoami命令,当我在脚本编辑器和终端中使用osascript/Users/amaloney/Desktop/test.scpt运行该命令
osascript/Users/amaloney/Desktop/test.scpt运行该命令时,该命令就会工作
但是在我的Swift文件中
import Foundation
let task = NSTask();
task.launchPath = "/usr/bin/osascript"
task.arguments = ["/Users/amaloney/Desktop/test.scpt"]
task.launch()
我继续得到以下错误
脚本错误-54。由于错误-1700,无法获取错误文本
你有没有想过我该怎么做
谢谢
供参考-test.scpt
do shell脚本“whoami”
问题似乎与代码的AppleScript
部分有关:
脚本错误-54
↳ -54文件权限错误
由于错误-1700,无法获取错误文本。
↳ 做不到。。。输入项目类型
很可能您的脚本试图执行一个它没有权限执行的操作,并且还试图分配错误的类型—没有看到脚本或不知道它执行什么操作—这是未知的。我在Xcode游乐场中运行此操作,这显然是问题的根源。一旦我将这些代码集成到我的OSX应用程序中,它就运行得很好 您是否正在等待命令完成任务。waitUntilExit()
?@Kametrixom我也尝试过使用它运行,同样的error@ThomasKilian我已经读过了,该用户出现错误-2741,我不是。您是否尝试过使用bash或Perl而不是Applescript?我也怀疑这一点,但我似乎没有发现我的脚本有任何问题--do shell script“whoami”如果您想将Applescript
与NSTask
一起使用,则命令必须是绝对命令:do shell script“/usr/bin/whoami“
。。。whoami实用程序已经过时了,因此您可以将/usr/bin/id
与NSTask
一起使用,这样就不需要AppleScript了。我的最终目标不是使用whoami,这只是一个简单的测试。我的计划是在我的swift appMostNSTasks
中执行一些jamf命令,它们可以类似地工作;希望这能让你更好地理解女性。