1 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊
像這樣的東西應(yīng)該可以工作,我不確定 tcp 轉(zhuǎn)儲(chǔ)中是否有任何特定的命令,例如 -F 可用,如果您想捕獲 tcp 轉(zhuǎn)儲(chǔ)的純輸出,您可以使用將輸出定向到文件> file。-w選項(xiàng)用于wireshark/tcpdump格式,讀取并顯示
cmd := exec.Command("sh", "-c", "sudo tcpdump -i <eth> host <ip> -w ./testfile")
err := cmd.Run()
if err != nil {
fmt.Println(err)
}
謝謝,@torek,-c 選項(xiàng)可以與 tcpdump 一起使用,在捕獲 n 個(gè)數(shù)據(jù)包后退出
cmd := exec.Command("sh", "-c", "sudo tcpdump -i ens33 -c 100 host localhost -w ./testfile")
err := cmd.Run()
if err != nil {
fmt.Println(err)
}
另一種方法是使用cmd.Start
cmd := exec.Command("sh", "-c", "sudo tcpdump -i ens33 -c 100 host localhost -w ./testfile")
err := cmd.Start()
if err != nil {
log.Fatal(err)
}
log.Printf("Waiting for command to finish...")
err = cmd.Wait()
log.Printf("Command finished with error: %v", err)
如果您在 tcpdump cmd 中使用不帶 -c 選項(xiàng)的 cmd.run,則 tcpdump 命令會(huì)繼續(xù)無(wú)限運(yùn)行。因此,您無(wú)法看到是否在 cmd.Run() 調(diào)用之后放置了 print 語(yǔ)句,原因是 exec.Command 失敗了,它的工作方式與在 cli 中的工作方式相同,因此如果您需要在前面使用 sodo,您也應(yīng)該將其放入命令中或從 root 用戶運(yùn)行它。
- 1 回答
- 0 關(guān)注
- 182 瀏覽
添加回答
舉報(bào)