首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Applescript:运行终端命令和保存输出

Applescript:运行终端命令和保存输出
EN

Stack Overflow用户
提问于 2017-08-23 21:23:21
回答 1查看 481关注 0票数 0

因此,我试图编写一个脚本来删除无线网络及其相关的密钥链凭据。

代码语言:javascript
复制
tell application "Terminal"

activate
string mywifi
set mywifi to "test"
set mywifi to  do script ("networksetup -listallhardwareports | grep -A 1 'Wi-Fi' | grep -v 'Hardware' | sed -e 's/'Device:\ '//g'")



do script "networksetup -removepreferredwirelessnetwork $mywifi NETWORK1"
do script "security delete-generic-password NETWORK1"

delay 2

#do script "networksetup -removepreferredwirelessnetwork $mywifi NETWORK2"
#do script "security delete-generic-password Network2"

delay2

#do script "networksetup -removepreferredwirelessnetwork $mywifi Network3"
#do script "security delete-generic-password Network3"

delay 2

#do script "networksetup -removepreferredwirelessnetwork $mywifi Network4"
#do script "security delete-generic-password Network4"

delay 2

#do script "networksetup -removepreferredwirelessnetwork $mywifi Network5"

#do script "security delete-generic-password Network5"

delay 2

结束告诉退出

我遇到麻烦的地方是用该命令的输出设置变量。该命令在终端中运行,但每当我试图编译它时,都会引发以下错误

语法错误:预期的“”但找到未知的标记

它在/device:\之后就发现了这一点,“在\\”之间,我还无法找出丢失了什么。如果我在它们之间加上“它只是把终端掉到>直接进入applescript的第一步,而不是我的第一语言,我想我已经盯了它太久了。”

EN

回答 1

Stack Overflow用户

发布于 2017-08-24 19:40:33

这并不是一个完整的答案,因为我不太熟悉security命令,尽管我想您需要用sudo命令作为前缀来修改密钥链。有很多好的信息在互联网上覆盖security命令。我读了相当多,但我的钥匙链中没有任何东西我想删除,所以我不能在这方面进行测试。

以下介绍了networksetup命令,您可能还需要在终端中使用sudo,但在AppleScript中,在do shell script命令的末尾添加with administrator privileges“,如果需要,请在首选无线网络中使用。

看起来您试图删除所有首选的无线网络,这可以通过以下命令直接在终端中完成:

代码语言:javascript
复制
networksetup -removeallpreferredwirelessnetworks $(networksetup -listallhardwareports | awk '/Wi-Fi/{getline; print $2}')

如果您想在AppleScript中做同样的事情,例如:

代码语言:javascript
复制
do shell script "networksetup -removeallpreferredwirelessnetworks $(networksetup -listallhardwareports | awk '/Wi-Fi/{getline; print $2}')"

如果您想在bash脚本中使用它,那么将上面的行与一起使用,例如:

代码语言:javascript
复制
#!/bin/bash
networksetup -removeallpreferredwirelessnetworks $(networksetup -listallhardwareports | awk '/Wi-Fi/{getline; print $2}')

将其保存在没有扩展名的纯文本文件中,并使其可执行,例如chmod u+x filename,其中filename是您保存它的任何文件。然后在终端、./filename/path/to/filename中使用它,如果它没有保存在PATH环境变量中定义的位置中。

如果您希望只针对特定的网络执行此操作,则可以循环遍历列表,而不是为每个网络创建一行。如果你需要帮助,请告诉我们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45849485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档