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

超過10多年行業(yè)經驗,技術領先,服務至上的經營模式,全靠網絡和口碑獲得客戶,為自己降低成本,也就是為客戶降低成本。到目前業(yè)務范圍包括了:成都網站制作、網站建設、外貿網站建設,成都網站推廣,成都網站優(yōu)化,整體網絡托管,小程序制作,微信開發(fā),成都App制作,同時也可以讓客戶的網站和網絡營銷和我們一樣獲得訂單和生意!
經搜索引擎檢索,發(fā)現 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退出 執(zhí)行過的命令會再輸入一遍
在項目的issues 上已經有人提出該問題。項目近兩年來并沒有更新。
更多expect項目(各種語言版本的)可以參考維基百科 ,不過維基百科上提到的goexpect、go-expect 兩個模塊經測試并不能成功。
分享題目:詳解golang expect包使用
文章來源:http://www.5511xx.com/article/cdphgdi.html


咨詢
建站咨詢
