使用 socat 向 bsign 提供密码

使用 socat 向 bsign 提供密码

我有许多服务器,用于部署各种二进制文件。为此,我使用一个脚本将它们打包到档案中,发布到本地存储库,然后通过 ssh 连接到目标服务器并进行安装。

现在我有一个如下所示的脚本:

#!/bin/bash
packs=(app1 app2 app3 great_app main_server and_so_on)
for pack in ${packs[@]}; do
    cd "$pack"
    svn up
    make redist-package
    SERVER="$(cat ./server)"
    ssh "$SERVER" <<< "wget 'http://dev-server/$pack'; install './$pack'" # ssh uses keys to authenticate
    cd - &>/dev/null
done

这里,install是一个特殊的脚本,用于解压和安装我们手工制作的小脚本emerge。我删除了所有错误检查以避免脚本复杂化。

现在的问题是:我必须使用 对所有二进制文件进行签名bsign。我希望用户输入一次密码,然后将其传递给bsign。否则,为每个包单独输入相同的密码会很麻烦。

不幸的是,bsign没有sudo -S从 stdin 读取密码之类的功能。所以……我尝试使用 socat,但没有成功。我使用了socat手册中的这一行,但没有结果:

socat - EXEC:'bsign -si .',pty,setsid,ctty <<< 'My password'

bsign只是向我显示密码提示,就像没有 socat 一样。输入密码后,它就可以正常工作了。

我的猜测是,这是因为 bsign 运行 gpg,进而要求输入密码。是否有可能也socat影响到这一点?gpgbsign

更新:我找到了bsign的选项-P --passphrase-fd0,它应该告诉从iegpg读取密码。明天会试试。fd 0stdin

更新:失败,-P不起作用。bsign不过,这可能是由于我必须使用的错误(自定义补丁)导致的。

相关内容