欢迎各位兄弟 发布技术文章
这里的技术是共享的
要实现模糊搜索并删除与SSID相关的通用密码,你需要编写一个脚本来查找所有匹配的条目并删除它们。以下是一个可能的实现:
#!/bin/bash # 获取SSID作为输入参数 ssid=$1 # 使用安全工具查找与SSID匹配的通用密码条目 entries=$(security find-generic-password -l "$ssid" -g 2>&1 | grep "labl" | awk -F\" '{print $2}') # 检查是否找到任何匹配项 if [ -z "$entries" ]; then echo "没有找到与SSID相关的通用密码。" exit 1 fi # 删除所有与SSID匹配的通用密码条目 for entry in $entries; do echo "正在删除通用密码条目: $entry" sudo security delete-generic-password -l "$entry" done echo "删除操作完成。"
解释
保存上述脚本为delete_passwords.sh
,然后通过终端执行:
chmod +x delete_passwords.sh # 赋予执行权限 ./delete_passwords.sh "你要模糊查询的SSID"
解释
该脚本首先查找与给定SSID相关的所有通用密码条目,然后逐个删除它们。如果没有找到匹配的条目,脚本会提示并退出。这样你就实现了模糊查询和删除功能。
对于删除与模糊查询关键字匹配的项目,你可以使用更合适的命令。
在你的例子中:
sudo security delete-generic-password -l $ssid
解释
这里的 $ssid
是你想要模糊查询的关键字。但是这个命令可能不会按你预期的方式工作,因为 -l
是针对精确匹配的标签。
模糊查询并删除的正确方法如下:
首先,找到匹配关键字的所有项目:
security find-generic-password -g 2>&1 | grep -i $ssid
解释
然后,你可以提取并删除这些项目。以下脚本会帮助你找到所有包含 $ssid
的项目并删除它们:
matched_items=$(security find-generic-password -g 2>&1 | grep -i $ssid | awk -F\" '{print $2}') for item in $matched_items; do sudo security delete-generic-password -l "$item" done
解释
这段脚本的步骤如下:
使用 security find-generic-password -g
命令查找所有通用密码项。
用 grep -i $ssid
过滤包含指定关键字 $ssid
的项目。
用 awk -F\" '{print $2}'
提取匹配项目的名称。
使用循环 for item in $matched_items
对每个匹配项目执行 sudo security delete-generic-password -l "$item"
删除操作。
请根据实际情况修改其中的 $ssid
变量。运行这些命令前小心,因为它们会删除与你指定关键字匹配的所有密码。