Skip to content

Instantly share code, notes, and snippets.

@xgqfrms
Created November 4, 2020 08:43
Show Gist options
  • Save xgqfrms/73ddeb86602c83e799caf05d6bf9a0eb to your computer and use it in GitHub Desktop.
Save xgqfrms/73ddeb86602c83e799caf05d6bf9a0eb to your computer and use it in GitHub Desktop.
wifi-password.sh
#!/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
# print
if [ $verbose ]; then
echo "\033[96m ✓ \"$pwd\" \033[39m"
echo ""
else
echo $pwd
fi
@xgqfrms
Copy link
Author

xgqfrms commented Nov 4, 2020

https://github.com/rauchg/wifi-password/blob/master/wifi-password.sh

$ brew install wifi-password
# To get the password for the WiFi you're currently logged onto:
$ wifi-password

# To get it for a specific SSID:
$ wifi-password <ssid>

# To put it straight in your clipboard for pasting elsewhere (OS X only):
$ wifi-password | pbcopy

pbcopy

$ whoami | pbcopy
# xgqfrms-mbp

$ echo "hello, zsh!" | pbcopy
# hello, zsh!

@xgqfrms
Copy link
Author

xgqfrms commented Aug 7, 2022

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