我正在寫一個bash腳本,它可以在YUM存儲庫中自動執行RPM軟件包的簽名。爲了完成這個任務,我使用expect
。bash:使用expect來自動執行GPG簽名
這是到目前爲止我的源代碼:
/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
怪癖,還是我在做一些完全錯誤的事情?我們歡迎解決方法/建議。
謝謝
你是指「expect」塊的第一行,還是在「expect」塊之前的bash腳本中? – scottyseus
令我印象深刻的是,10秒的默認超時讓它儘可能地達到它的效果,但這當然是解決方案。 –
您期望的區塊的第一行。 –