我用 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"'
1
wd 2022-06-03 15:02:42 +08:00 via iPhone
是不是只有弹 gpg 的时候才有问题?
|
2
SimonOne OP @wd #1 输出其他的 otp 时也弹 gpg 的密码框,输入完点确定就可以跑出来。
就这个 steam 的,在 alfred 中跑的时候,就是弹 gpg 的密码框,输入完点确定就没有后续反应了。 但是我手动执行脚本,又能正常执行完逻辑输出到剪切板。 真的很难理解怎么会这样。 |
3
SimonOne OP @SimonOne #2 gpg 的 agent 会暂时记住,短时间内不需要再输密码,但是在 alfred 跑 steam 的 otp 也一样,毫无反应,其他的 otp 又都能正常跑完。
|