sco*_*eus 4 bash rpm gnupg yum expect
我正在编写一个 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
NEW_REPO是 YUM 存储库的路径,GPG_PASS是 GPG 密钥的密码。
在大多数情况下,这非常有效并且可以成功地对包进行签名。
问题:即使该目录包含 42 个包,此代码块也仅对 28-30 RPM 的包进行签名。从命令行手动签署一批 RPM 包工作正常,但expect我的脚本中的块只是在到达所有包之前停止。这是一些奇怪的怪癖expect,还是我做错了什么?欢迎提出解决方法/建议。
谢谢
这可能只是超时。尝试添加:
set timeout 600
或者,如果您想永远等待:
set timeout -1
作为您的期望脚本的第一行。