在 Cron Job, Jenkins 或其它程式中使用 GPG
凍仁於 Jenkins CI 的 build script 中使用到的 GPG 指令時,出現了 gpg: cannot open `/dev/tty\': No such device or address 的錯誤訊息。
查了一下才得知 GPG 在正常情狀下預設是會將結果輸出至具有互動的終端機 (Terminal, tty) 底下,但如果今天我們是藉由 Cron Job, 自行撰寫的程式或是 Jenkins 來操作時則會有以上的錯誤訊息, 這時我們只需加上「--no-tty」的選項即可避開之。
1. 在 Jenkins 裡使用 GPG 進行對稱式加密。
2. 在 Jenkins 裡使用 GPG 進行對稱式解密。
查了一下才得知 GPG 在正常情狀下預設是會將結果輸出至具有互動的終端機 (Terminal, tty) 底下,但如果今天我們是藉由 Cron Job, 自行撰寫的程式或是 Jenkins 來操作時則會有以上的錯誤訊息, 這時我們只需加上「--no-tty」的選項即可避開之。
1. 在 Jenkins 裡使用 GPG 進行對稱式加密。
[ jenkins@ci-server ~ ]
$ echo PASSWORD | gpg --batch -q --passphrase-fd 0 --cipher-algo AES256 --no-tty -c /tmp/file.tgz
2. 在 Jenkins 裡使用 GPG 進行對稱式解密。
[ jenkins@ci-server ~ ]
$ echo PASSWORD | gpg --batch -q -o /tmp/file.tgz --passphrase-fd 0 --decrypt --no-tty /tmp/file.tgz.gpg
相關連結:
★ Encryption files with GPG without user intervention (batch) - LinuxScrew: Linux Blog
資料來源:
★ The Dumb Terminal : Knowledgebase : Running GPG from a cron or application
留言
張貼留言
喜歡這篇文章嗎?歡迎在底下留言讓凍仁知道。😉