bash:使用expect自动化GPG签名

bash:使用expect自动化GPG签名,bash,expect,rpm,yum,gnupg,Bash,Expect,Rpm,Yum,Gnupg,我正在编写一个bash脚本,该脚本自动对YUM存储库中的RPM包进行签名。为了完成这个任务,我使用expect 以下是我到目前为止的源代码: /usr/bin/expect <<EOD spawn bash -c "rpm --resign ${NEW_REPO}/packages/*.rpm" expect "Enter pass phrase:" send "${GPG_PASS}\r" expect eof EOD /usr/bin/expect可能只是超时了。尝试添加: s

我正在编写一个bash脚本,该脚本自动对YUM存储库中的RPM包进行签名。为了完成这个任务,我使用
expect

以下是我到目前为止的源代码:

/usr/bin/expect <<EOD
spawn bash -c "rpm --resign ${NEW_REPO}/packages/*.rpm"
expect "Enter pass phrase:"
send "${GPG_PASS}\r"
expect eof
EOD

/usr/bin/expect可能只是超时了。尝试添加:

set timeout 600
或者,如果您想永远等待:

set timeout -1

作为expect脚本的第一行。

不使用expect,您可以使用它来进行GPG签名,而无需每次输入密码短语。您可以设置一个很长的过期时间,这样您就可以对很多内容进行签名,并且只需定期重新输入您的密码


这比将GPG密钥密码以明文形式存储在那样的脚本中要安全得多。

您是指
expect
块的第一行吗,或者在我的bash脚本中,在
expect
块之前?我印象深刻的是,默认超时10秒可以让它达到它实际达到的程度,但这肯定是解决方案。expect块的第一行。是的,这很有效。手册页中确实提到了默认值10…我只是根本不想检查它。我想我没想到这会成为问题……我知道你在那里做了什么。打得好。这整个问题都是为了让你把双关语放在某个地方而写的吗?