Linux
SSL 證書在命令行中工作正常,但在腳本中失敗
我正在嘗試為我的持續集成伺服器設置電子郵件通知。我有一個腳本,它在建構工作時使用 nail 發送電子郵件:
#!/bin/bash echo "Build Worked!" | nail -A myisp -s 'Build Success' my_email@gmail.com
當我從命令行執行它時
sh build-worked
,它可以工作並且我收到了電子郵件。但是,當我啟動執行相同腳本的持續集成伺服器時,我收到以下錯誤:nail: /opt/bitnami/common/lib/libssl.so.0.9.8: no version information available (required by nail) nail: /opt/bitnami/common/lib/libcrypto.so.0.9.8: no version information available (required by nail) Error with certificate at depth: 0 issuer = /C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com subject = /C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com err 20: unable to get local issuer certificate Continue (y/n)? could not initiate SSL/TLS connection: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed . . . message not sent.
我一定搞砸了一些配置,有什麼想法嗎?
某些東西從 shell 執行但不會從
cron
orinit
ordaemon
或其他環境執行的問題通常是由環境差異引起的。
- 使用執行檔和數據文件的絕對路徑
- 明確設置您的
PATH
變數以確保它包含您需要的內容- 顯式設置您的流程需要的其他環境變數
由於看起來像是
nail
在抱怨某些庫,因此環境變數很可能在一種環境中指向一種方式,而在另一種環境中指向另一種方式(或根本沒有)。我不熟悉 BitNami,但在我的系統上,這些庫位於
/lib
和/usr/lib
(/lib/i586
以及類似)中。