方法一. 透過python paramiko做SSH Connection再下Command
一開始的想法是直接在Jenkins上部屬一隻py檔
讓他直接去跑連線的動作
因此有了以下開發
有兩個主要的function 在做指令時都會用到
第一個是waitRecv,因為recv這個用法常常會抓結果失常
所以這邊做了個檢查是否為recv_ready的判斷
第二個則是snedCmd,顧名思義送出指令
同時送出指令後call上述的wait function
接著直接把shell目前結果print出來
ssh=paramiko.SSHClien()開始則是主要邏輯區
包含開啟ssh連接、設定等
第一個ssh connect是連結到Jenkins/test engine
接下來打開了一個session,為後面要寫command做通道
因此接下來invoke_shell
然後用剛剛定義好的sendCmd方式來連線到AP Server
方法二. 透過Linux Expect達成
一開始因為比較熟悉python才會想到用python來做
但實際用了paramiko發現 只是做個簡單ssh連線還是蠻麻煩
開發或是維護上更是不容易(因為是QA Team應以可讀性、可維護為主)
因此上司最後決定以Expect來做
整個流程被簡化至非常簡單
不用引任何函示庫 加上因為最後是丟在Jenkins上面跑
可以直接用shell script觸發expect腳本
首先透過"spawn"開啟一個ssh程序
過程中透過”expect”方式 從程序接受String
再透過”send”傳送String到程序
就是使用expect, send不斷對機器做io的動作