Jenkins 內執行 ssh 的問題

 最近在幫公司的 Jenkins 整合一些建置的程序問題,在命令列跑起來沒問題的 powershell script 放到 Jenkins 上就出現 invalid handle,錯誤訊息是 "Pseudo-terminal will not be allocated because stdin is not a terminal",搜尋了一下看起來 pseudo-tty 造成的問題。

因為我的 script 是用 expect 帶入,所以需要一個終端來互動,網路上找到要在 ssh 後面加 "-t -t" 或 "-tt" 都沒有效果,後來拐彎抹角找出替代方案:首先是 ssh 先設定用 public key,免去登錄程序應該可以避開 handle 的問題,然後在 ssh 後面帶入指令自動執行即可,像這樣:

ssh foousr@server.host "cmd1;cmd2;cmd3"

不過這樣一行解決後其實連 expect 都不需要了...

留言

這個網誌中的熱門文章

對馬一起島

艾爾登dua郎