當前位置:
首頁 > 知識 > golang expect包的使用介紹

golang expect包的使用介紹

最近和業務的相關人員對接某一需求時,其提出希望能在業務伺服器上不給業務人員密碼信息,而能通過執行某個命令後由usera變成userb。這個需求其實用expect 就可以實現,不過使用tcl 語言編寫的腳本里密碼還是以明文出現的,業務是想通過安裝pexpect (python)包,通過生成pyc的文件,略微增加下安全性。不過想了下,可以通過使用golang下的expect實現同樣的效果,而且安全性更強。

經搜索引擎檢索,發現 https://github.com/ThomasRooney/gexpect/ 可以實現該效果,而且在該包的examples里提供了ftp、ping、python、screen相關的使用示例。這裡如果使用su切換用戶,代碼比較簡單,如下:

//code from www.361way.com package main import gexpect "github.com/ThomasRooney/gexpect" func main() { child, err := gexpect.Spawn("su - zabbix") if err != nil { panic(err) } child.Expect("Password") child.SendLine("123456") child.Interact() child.Close() }

不過這個包在使用後,可以正常切換用戶,不過缺點也比較多:

無法tab補全

無法正常按pty Terminal size大小輸出(只能輸出一部分,有點類似於虛擬化virsh console連接後的情況)

無法使用ctrl +D 快捷鍵退出,只能使用ctrl + c退出

執行過的命令會再輸入一遍

在項目的issues 上已經有人提出該問題。項目近兩年來並沒有更新。

更多expect項目(各種語言版本的)可以參考維基百科 ,不過維基百科上提到的goexpect、go-expect 兩個模塊經測試並不能成功。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 尤沐西子 的精彩文章:

如何實現linux+windows雙系統啟動
手指上的安全

TAG:尤沐西子 |