我用 pass otp 管理 otp 验证。 所以我下了一个 alfred workflow:https://github.com/CGenie/alfred-pass 用来快速得选择 otp 并输出到剪切板。
其实这个 shell 很简单,就是在 alfred 选择 otp 后,执行
bash pass-otp.sh "{query}"
而 psss-otp.sh 里则是用 pass otp 工具的命令来输出 otp 到剪切板
pass otp -c "$1"
但是遇到一个很诡异的事,就是我单独去终端模拟器执行输出 Steam 的 otp 时,能正常输出到剪切板
bash pass-otp.sh Steampass 文件名
但是用 alfred 时就毫无反应(也不能说没反应,gpg 的私钥密码输入框至少是弹出来了)
但是,换另一个 otp ,比如 coinbase 。用 alfred 时就能正常输出到剪切板。
我研究了一晚上,包括脚本里加上打印看传参有没有问题,有没有特殊字符,可是都很正常,心态都给我整崩了。 来求助下 V 站的大家,看看还有什么细节没考虑到的。
T_T 存 otp 链接的 pass 文件名的格式我都是保持一致的,唯一的区别就是 Steam 的 otp 是 5 位的,但是手动执行脚本又能取到,真的是百思不得其解!!!如果是脚本原因的话,试验其他的 otp 文件又都正常!!!
这里附一下 psss-otp.sh 的内容
#!/bin/bash
set -e
QUERY=$1
PATH=/usr/local/bin:$PATH
# GPG agent
# envfile="$HOME/.gnupg/gpg-agent.env"
# if [[ -e "$envfile" ]] && kill -0 $(grep GPG_AGENT_INFO "$envfile" | cut -d: -f 2) 2>/dev/null; then
# eval "$(cat "$envfile"); export GPG_AGENT_INFO"
# else
# eval "$(gpg-agent --daemon --write-env-file "$envfile")"
# fi
# PASS
#pass otp "$QUERY" | awk 'BEGIN{ORS=""} {print; exit}' | pbcopy
pass otp -c "$QUERY" #这里我打印测试过了,$QUERY 参数没取错
osascript -e 'display notification "Copied OTP key to clipboard" with title "Unix pass"'
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.