gpt4 book ai didi

go - Nmap给出错误消息“您正在运行不建议使用的选项”

转载 作者:行者123 更新时间:2023-12-01 22:41:40 25 4
gpt4 key购买 nike

我目前正在制作一个应该能够运行的golang程序,但是由于某种原因,即使我在cmd中输入了可以正常工作的选项(例如-oN test.txt),它也无法运行,并给了我这个error message。这很奇怪因为在命令行中该行有效,但是当我尝试在程序中运行它时却无效。

源代码在这里:

package main

import (
"os/exec"
"os"
"fmt"
"strings"
)
func main(){

fmt.Println("Please enter which scanner tool you wish to use:")
fmt.Println("nmap for nmap")

var toolargs []string
var ipaddress string
var toolchoice string

fmt.Scanln(&toolchoice)

if toolchoice == "nmap" {
toolargs = nmap()
fmt.Println(toolargs)
}else{
fmt.Println("invalid input")
}

fmt.Println("Please enter the IP address you wish to scan:")
fmt.Scanln(&ipaddress)

fmt.Println(toolchoice)
fmt.Println(toolargs)
fmt.Println(ipaddress)

funccmd(toolchoice, toolargs, ipaddress)

fmt.Scanln()

}

func nmap() []string{
var NoOfArgs int
var args1 string
var args2 string
var args3 string
var args4 string
var args5 string
var args []string
fmt.Println("Please enter a number for how many arguments you wish to use:")
fmt.Scanln(&NoOfArgs)

switch NoOfArgs{
case 1:
fmt.Println("Please enter your argument")
fmt.Scanf("%s", &args1)
args = []string{args1}
case 2:
fmt.Println("Please enter your arguments, separated with a blank space between arguments (eg. -sn -sS -O)")
fmt.Scanf("%s %s", &args1, &args2)
fmt.Println(args1)
fmt.Println(args2)
args = []string{args1, args2}
fmt.Println(args)

case 3:
fmt.Println("Please enter your arguments, separated with a blank space between arguments (eg. -sn -sS -O)")
fmt.Scanf("%s %s %s", &args1, &args2, &args3)
args = []string{args1, args2, args3}
case 4:
fmt.Println("Please enter your arguments, separated with a blank space between arguments (eg. -sn -sS -O)")
fmt.Scanf("%s %s %s %s", &args1, &args2, &args3, &args4)
args = []string{args1, args2, args3, args4}
case 5:
fmt.Println("Please enter your arguments, separated with a blank space between arguments (eg. -sn -sS -O)")
fmt.Scanf("%s %s %s %s %s", &args1, &args2, &args3, &args4, &args5)
args = []string{args1, args2, args3, args4, args5}
}
fmt.Println(args)
return args
}

func funccmd(toolchoice string, args []string, ipaddress string){
execpath, _ := exec.LookPath("/usr/bin/nmap")

stringargs := strings.Join(args, " ")
fmt.Println(stringargs)
final := []string{execpath, stringargs, ipaddress}
fmt.Println(final)
cmdNmap := &exec.Cmd{
Path: execpath,
Args: []string{execpath, stringargs, ipaddress},
Stdout: os.Stdout,
Stderr: os.Stdout,
}
fmt.Println(args)
if err := cmdNmap.Run(); err !=nil{
fmt.Println("Error", err);
}
}

最佳答案

问题在于,在将参数传递给stringargs之前,它们将它们连接在一起成为单个字符串(exec.Cmd)。它们必须分别是Args数组中的单独参数。 Nmap将第一个参数视为“-oN results.txt”,并将其解析为已弃用的选项“-o”和文件名“N results.txt”。该警告正是为了防止此类错误,因为您很可能无意创建名称为“N results.txt”的输出文件。

关于go - Nmap给出错误消息“您正在运行不建议使用的选项”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61928765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com