求助一个 shell 脚本和 alfred 表现不一样的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SimonOne
V2EX    问与答

求助一个 shell 脚本和 alfred 表现不一样的问题

  •  
  •   SimonOne 2022-06-03 14:46:03 +08:00 1245 次点击
    这是一个创建于 1293 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我用 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 文件名 

    Imgur

    但是用 alfred 时就毫无反应(也不能说没反应,gpg 的私钥密码输入框至少是弹出来了) Imgur

    但是,换另一个 otp ,比如 coinbase 。用 alfred 时就能正常输出到剪切板。 Imgur

    我研究了一晚上,包括脚本里加上打印看传参有没有问题,有没有特殊字符,可是都很正常,心态都给我整崩了。 来求助下 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"' 
    wd
        1
    wd  
       2022-06-03 15:02:42 +08:00 via iPhone
    是不是只有弹 gpg 的时候才有问题?
    SimonOne
        2
    SimonOne  
    OP
       2022-06-03 15:05:41 +08:00
    @wd #1 输出其他的 otp 时也弹 gpg 的密码框,输入完点确定就可以跑出来。
    就这个 steam 的,在 alfred 中跑的时候,就是弹 gpg 的密码框,输入完点确定就没有后续反应了。
    但是我手动执行脚本,又能正常执行完逻辑输出到剪切板。


    真的很难理解怎么会这样。
    SimonOne
        3
    SimonOne  
    OP
       2022-06-03 15:07:32 +08:00
    @SimonOne #2 gpg 的 agent 会暂时记住,短时间内不需要再输密码,但是在 alfred 跑 steam 的 otp 也一样,毫无反应,其他的 otp 又都能正常跑完。
    SimonOne
        4
    SimonOne  
    OP
       2022-06-03 18:34:59 +08:00
    @wd #1 找到原因了,现学了下 alfred 怎么调试,原来 pass 工具在被调用时报错说只支持 6 ,7 ,8 长度的 还得接下去看为啥命令行直接运行不报这个错。但是和这段脚本本身无关了。
    SimonOne
        5
    SimonOne  
    OP
       2022-06-03 18:55:21 +08:00
    @SimonOne #4 问题解决了,alfred 的 path 要单独写在脚本里 但是其实不知道咋写全,直接 source /Users/XXX/.bash_profile 完事,反正自己用的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3343 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 04:42 PVG 12:42 LAX 20:42 JFK 23:42
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86