卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章11201本站已运行3223

一个查看当前Wi-Fi密码,并记录Wi-Fi密码历史的shell脚本

起因是由于我个人对于家庭Wi-Fi与公共场合Wi-Fi密码通常记不住,所以特地写了一个Wi-Fi脚本,帮助我去查看Wi-Fi密码也方便共享给别人。

功能实现:查看Wi-Fi密码、记录Wi-Fi密码、当前Wi-Fi的二维码分享。
思考点及难点:
  • 写入代码到文件涉及到的双引号、符号溢出等问题
  • 查看Wi-Fi密码以明文记录下来
  • Wi-Fi密码本记录的不重复
  • 照顾到没有homebrew环境的朋友,采取特定信息输出。
各个问题点的处理办法:一、使用EOF语法;二、找一篇合适的文档;三、先创建空密码本再做if判断。

使用方式及源码
粘贴到你的终端里
sudo bash -c "$(curl -fsSL https://ghproxy.com/https://raw.githubusercontent.com/hoochanlon/ihs-simple/main/d-shell/mac_show_wifi.sh)"
附源码:

# 保持代码样式写文件
cat <<'EOF' >~/Public/mac_show_wifi.sh

# 详情:https://developer.apple.com/documentation/security/1515362-seckeychainsearchcopynext/

# 获取当前Wi-Fi名称
wifi_ssid=$(networksetup -getairportnetwork en0 | awk '{print $4}')

# 获取当前Wi-Fi密码
# -D 指定项;-a 接收账户,传递到security;-w明文。
wifi_password=$(
  security find-generic-password \
  -D "AirPort network password" \
  -a "$wifi_ssid" \
  -w
)

# 打印Wi-Fi与Wi-Fi密码
echo "Wi-Fi:"$wifi_ssid;echo "Wi-Fi密码:"$wifi_password

# 检查 wifi.txt 不存在则创建该文件
if [ ! -e wifi.txt ];then
 touch wifi.txt
fi

# 比对文本信息是否匹配Wi-Fi名称、密码,如果二者不一致则导入
if [[ "$(cat wifi.txt)" == *"$wifi_ssid"* && "$(cat wifi.txt)" == *"$wifi_password"* ]];then
  > /dev/null 2>&1
else
 printf "\nWi-Fi:$wifi_ssid\nWi-Fi密码:$wifi_password\n" >> wifi.txt
fi

brew install qrencode > /dev/null 2>&1
# 只屏蔽报错不屏蔽输出,2> /dev/null
qrencode -l M -t UTF8 -s 4 -m 2 "WIFI:${wifi_ssid} Wi-Fi密码:${wifi_password}" 2> /dev/null

EOF

# 创建软链接文件夹
sudo -S mkdir -p /usr/local/bin
# 保险起见先删除再说
sudo rm -rf /usr/local/bin/mac_show_wifi.shortcut
# 没有环境变量,进入目录创建软链接。
cd /usr/local/bin
sudo ln -s \
  ~/Public/mac_show_wifi.sh mac_show_wifi.shortcut &&
  echo "alias Wi-Fi密码='bash mac_show_wifi.shortcut'" >>~/.zshrc

echo "重开终端,自此以后,查看Wi-Fi密码,在终端输入:Wi-Fi密码,即可。"
卓越飞翔博客
上一篇: Golang 对 刚刚 几个小时前 几分钟前 几天前的时间处理
下一篇: Python内网终端开放端口扫描程序
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏