Created
November 4, 2020 08:43
-
-
Save xgqfrms/73ddeb86602c83e799caf05d6bf9a0eb to your computer and use it in GitHub Desktop.
wifi-password.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env sh | |
version="0.1.0" | |
# locate airport(1) | |
airport="/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport" | |
if [ ! -f $airport ]; then | |
echo "ERROR: Can't find \`airport\` CLI program at \"$airport\"." | |
exit 1 | |
fi | |
# by default we are verbose (unless non-tty) | |
if [ -t 1 ]; then | |
verbose=1 | |
else | |
verbose= | |
fi | |
# usage info | |
usage() { | |
cat <<EOF | |
Usage: wifi-password [options] [ssid] | |
Options: | |
-q, --quiet Only output the password. | |
-V, --version Output version | |
-h, --help This message. | |
-- End of options | |
EOF | |
} | |
# parse options | |
while [[ "$1" =~ ^- && ! "$1" == "--" ]]; do | |
case $1 in | |
-V | --version ) | |
echo $version | |
exit | |
;; | |
-q | --quiet ) | |
verbose= | |
;; | |
-h | --help ) | |
usage | |
exit | |
;; | |
esac | |
shift | |
done | |
if [[ "$1" == "--" ]]; then shift; fi | |
# merge args for SSIDs with spaces | |
args="$@" | |
# check for user-provided ssid | |
if [ "" != "$args" ]; then | |
ssid="$@" | |
else | |
# get current ssid | |
ssid="`$airport -I | awk '/ SSID/ {print substr($0, index($0, $2))}'`" | |
if [ "$ssid" = "" ]; then | |
echo "ERROR: Could not retrieve current SSID. Are you connected?" >&2 | |
exit 1 | |
fi | |
fi | |
# warn user about keychain dialog | |
if [ $verbose ]; then | |
echo "" | |
echo "\033[90m … getting password for \"$ssid\". \033[39m" | |
echo "\033[90m … keychain prompt incoming. \033[39m" | |
fi | |
sleep 2 | |
# source: http://blog.macromates.com/2006/keychain-access-from-shell/ | |
pwd="`security find-generic-password -D 'AirPort network password' -ga \"$ssid\" 2>&1 >/dev/null`" | |
if [[ $pwd =~ "could" ]]; then | |
echo "ERROR: Could not find SSID \"$ssid\"" >&2 | |
exit 1 | |
fi | |
# clean up password | |
pwd=$(echo "$pwd" | sed -e "s/^.*\"\(.*\)\".*$/\1/") | |
if [ "" == "$pwd" ]; then | |
echo "ERROR: Could not get password. Did you enter your Keychain credentials?" >&2 | |
exit 1 | |
fi | |
if [ $verbose ]; then | |
echo "\033[96m ✓ \"$pwd\" \033[39m" | |
echo "" | |
else | |
echo $pwd | |
fi |
pbcopy 妙用
# 复制 ps 命令文档
$ man ps | pbcopy
# 复制 ls 命令文档
$ man ls | pbcopy
作者:xgqfrms
链接:https://www.cnblogs.com/xgqfrms/p/13926735.html
来源:https://www.cnblogs.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
©xgqfrms 2012-2022
www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
https://github.com/rauchg/wifi-password/blob/master/wifi-password.sh
pbcopy