在mac中使用自动操作执行sudo命令

mac下自带的“自动操作”是个很实用的功能,可以用于各种批处理场景。

由于工作需要,我需要频繁切换代理和网络,需要上内网的时候,要使用网线设置代理,需要上外网的时候,需要断开网线,连接手机,并且取消代理,有时又需要连接内部的无线并设置代理。

如果每次都在设置里调整,太麻烦了,于是,我就想到了自动操作,配合批处理的应用程序,需要的时候,通过spotlight搜索并执行就好,很是方便。

由于有些命令需要使用sudo执行,比如禁用或启用指定网卡,如果直接使用shell脚本会报错,无法执行,所以只能借助AppleScript了

以下是具体教程,这里以启用网卡作为示例

打开自动操作,新建一个“应用程序”

将“实用工具”下的“运行AppleScript”拖入工作区

在这里写入代码。我这里要启用指定网卡(en5是我要启用的网卡,可通过ifconfig命令查看),在终端里执行的代码是:

sudo ifconfig en5 up

通过AppleScript执行这个命令,需要按照如下写法:

do shell script "sudo ifconfig en5 up" with administrator privileges

把上面的脚本粘贴在这个位置

这是粘贴后的样子

这时,可以测试一下这个程序,点击右上角的运行,就会看到输入密码的提示,输入密码后,命令将被正确执行

测试没问题后,保存这个应用程序,这里起个名字:禁用网卡

关闭“自动操作”,后续如果想使用禁用网卡,可以呼出Spotlight,然后输入“禁用网卡”,即可直接执行

按下回车后,就会弹出输入密码的对话框,输入密码后,即可完成sudo命令的自动执行

关于AppleScript更多的使用方法,可以参考苹果官方的文档:

https://developer.apple.com/library/archive/documentation/AppleApplications/Conceptual/AutomatorTutorialAppleScript/Introduction/Introduction.html