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

超過(guò)10多年行業(yè)經(jīng)驗(yàn),技術(shù)領(lǐng)先,服務(wù)至上的經(jīng)營(yíng)模式,全靠網(wǎng)絡(luò)和口碑獲得客戶,為自己降低成本,也就是為客戶降低成本。到目前業(yè)務(wù)范圍包括了:成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),成都網(wǎng)站推廣,成都網(wǎng)站優(yōu)化,整體網(wǎng)絡(luò)托管,小程序制作,微信開(kāi)發(fā),成都App制作,同時(shí)也可以讓客戶的網(wǎng)站和網(wǎng)絡(luò)營(yíng)銷(xiāo)和我們一樣獲得訂單和生意!
經(jīng)搜索引擎檢索,發(fā)現(xiàn) https://github.com/ThomasRooney/gexpect/ 可以實(shí)現(xiàn)該效果,而且在該包的examples里提供了ftp、ping、python、screen相關(guān)的使用示例。這里如果使用su切換用戶,代碼比較簡(jiǎn)單,如下:
//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()
}
不過(guò)這個(gè)包在使用后,可以正常切換用戶,不過(guò)缺點(diǎn)也比較多:
無(wú)法tab補(bǔ)全 無(wú)法正常按pty Terminal size大小輸出(只能輸出一部分,有點(diǎn)類(lèi)似于虛擬化virsh console連接后的情況) 無(wú)法使用ctrl +D 快捷鍵退出,只能使用ctrl + c退出 執(zhí)行過(guò)的命令會(huì)再輸入一遍
在項(xiàng)目的issues 上已經(jīng)有人提出該問(wèn)題。項(xiàng)目近兩年來(lái)并沒(méi)有更新。
更多expect項(xiàng)目(各種語(yǔ)言版本的)可以參考維基百科 ,不過(guò)維基百科上提到的goexpect、go-expect 兩個(gè)模塊經(jīng)測(cè)試并不能成功。
本文標(biāo)題:詳解golang expect包使用
當(dāng)前URL:http://m.fisionsoft.com.cn/article/cdphgdi.html


咨詢
建站咨詢
