亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在傳遞給命令之前操作/讀取

在傳遞給命令之前操作/讀取

Go
慕碼人2483693 2022-07-25 10:22:16
如何從傳遞給命令標準輸入的連接中讀取/操作輸入?例如,給定以下代碼。    c, _ := net.Dial("tcp", somehost)     cmd := exec.Command("/bin/sh")     cmd.Stdin, cmd.Stdout, cmd.Stderr = c, c, c     cmd.Run()在將字符串傳遞給 cmd.Stdin 之前如何從連接中反轉字符串,或者我如何解析字符串而不將其傳遞給 cmd.Stdin?我考慮過從與 bufio 的連接中讀取,然后將其傳遞給 Command 第二個參數 params,但我希望有一個更好的解決方案,它不需要我處理命令中 args 輸入的所有不同情況,而只是傳遞分析輸入后將其發送到標準輸入
查看完整描述

1 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

好的,因為您在評論中提到“我真正的問題是如何攔截來自連接的輸入,對其進行解析并將其解析為命令的標準輸入。似乎當我執行 cmd.Run() 時我會阻塞,因此無法真正持續解析"


這是我將如何做到的:


import (

    "io"

    "os"

    "os/exec"

)


func main() {


    //All errors are not checked

    cmd := exec.Command("/bin/sh")

    cmdStdin, _ := cmd.StdinPipe()

    go func() {

        defer cmdStdin.Close()

        //here you will need to loop on reading the connection, 

        //for simplicity lets assume you do that & receive data

        //let says you got ls from connection

        cmdStdin.Write([]byte("ls\n"))

    }()

    cmdStdout, _ := cmd.StdoutPipe()

    go io.Copy(os.Stdout, cmdStdout)

    cmd.Run()

}


查看完整回答
反對 回復 2022-07-25
  • 1 回答
  • 0 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號