GO создание нескольких групп, использующих nmap - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь использовать параллелизм Go для создания сценария, который запускает несколько сканирований nmap с различными параметрами, но всякий раз, когда я пытаюсь запустить программу, она завершается после завершения первого сканирования nmap. Есть ли способ предотвратить это?

вот код:

package main

import (
    "syscall"
    "os"
    "os/exec"
    "fmt"
)
func main(){
    args1 := []string{"nmap","-sS","127.0.0.1"}
    args2 := []string{"nmap","-sN","127.0.0.1"}
    args3 := []string{"nmap","-sV","127.0.0.1"}

    go funccmd(args1)

    go funccmd(args2)

    go funccmd(args3)

    fmt.Scanln()

}

func funccmd(args []string){
    env := os.Environ()

    cmdpath, runErr := exec.LookPath("/usr/bin/nmap")
    if runErr != nil {
        panic(runErr)
    }   

    execErr := syscall.Exec(cmdpath, args, env)
    if execErr != nil {
        panic(execErr)
    }
}

1 Ответ

1 голос
/ 30 апреля 2020

Не используйте syscall.Exe c. Это вызывает execve, который заменяет текущую программу на nmap. Вместо этого используйте exe c .Cmd для выполнения nmap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...