我正在尝试在PoC上通过将exec.Command添加到cli插件来工作,但是我在如何使它接受命令的用户输入方面苦苦挣扎。我承认我是Go语言的新手,来自PHP和Bash脚本,所以...我确定我在这里遗漏了一些非常基本的内容,这有点尴尬。
我尝试设置变量,将变量添加到输出中,添加bufio并尝试提示时没有运气。
out, err := exec.Command("mtr", "-c", "10", "-r", destIP).Output()
是最近一次失败...
type Mtr struct{}
func (m *Mtr) Run(command []string, context plugin.PluginContext, ui terminal.UI) {
// var destIP string - commented out simply so I could rebuild the file and get the plugin working again.
ui.Say("")
ui.Say(terminal.AdvisoryColor("Wait while we run a traceroute..."))
ui.Say("")
out, err := exec.Command("mtr", "-c", "10", "-r").Output()
if err != nil {
ui.Say(fmt.Sprintf("%s", err))
}
output := string(out[:])
table := ui.Table([]string{"", ""})
table.Add("", output)
table.Print()
我只是希望它能够接受这样的东西
mainprogram插件mtr 目前,我已将其设置为强制使用Google,但这并不是我真正想要的...
out, err := exec.Command("mtr", "-c", "10", "-r", "8.8.8.8").Output()
尝试失败的当前输出会产生-
Shawns-MBP-2:directoryhere $ mainprog plugin mtr 4.4.4.4
Wait while we run a traceroute...
Shawns-MBP-2:directoryhere$
With the forced Google DNS, it obviously shows -
Shawns-MBP-2:directoryhere $ mainprog plugin mtr
Wait while we run a traceroute...
Start: 2019-05-03T15:41:18-0500
HOST: stuff Loss% Snt Last Avg Best Wrst StDev
1.|-- stuff 0.0% 10 1.6 1.7 1.2 3.1 0.5
2.|-- stuff 0.0% 10 2.6 6.5 2.0 12.4 4.5
3.|-- stuff 0.0% 10 3.3 3.3 2.7 4.1 0.4
4.|-- stuff 0.0% 10 13.6 12.2 9.1 15.6 2.5
5.|-- stuff 0.0% 10 9.2 12.9 9.2 17.7 2.5
6.|-- stuff 0.0% 10 8.7 9.1 8.0 10.5 0.6
7.|-- stuff 0.0% 10 9.1 9.2 8.2 10.1 0.5
8.|-- stuff 0.0% 10 10.3 10.1 9.7 10.4 0.3
9.|-- stuff 0.0% 10 8.8 9.2 8.5 10.7 0.6
10.|-- google-public-dns-a.googl 0.0% 10 8.7 8.9 8.2 10.0 0.4
答案 0 :(得分:0)
您在寻找吗?
func main() {
out, err := exec.Command("mtr", "-c", "10", "-r", os.Args[1]).Output()
if err != nil {
ui.Say(fmt.Sprintf("%s", err))
}
}
?
将其构建为二进制文件并以IP /域作为参数进行调用。
答案 1 :(得分:0)
指向正确的方向后,终于弄清楚了-
dest := os.Args[2]
out, err := exec.Command("mtr", "-c", "10", "-r", dest).Output()
这使它能够接受输入并验证了它同时接受IP和域。现在,这为可能性开辟了一个全新的世界:D