Я пытаюсь выполнить следующую команду: commix -r req.txt --ignore-stdin --batch
Выполнение с моего терминала Linux дает правильные результаты, файл запроса анализируется, и инструмент инициирует тестирование команды инъекции.
Инструмент также работает должным образом при запуске из Python (v3.12.3):
Код: Выделить всё
import subprocess
cmd = "commix -r req.txt --ignore-stdin --batch"
returned_value = subprocess.call(cmd, shell=True)
print(returned_value)
Функция, которую я использую для выполнения команд оболочки в Golang:
Код: Выделить всё
func OsExec(command, wd string) (output string) {
var (
stdout, stderr string
outbuf, errbuf bytes.Buffer
exitCode int
)
cmd := exec.Command("/bin/sh", "-c", command)
cmd.Dir = wd
cmd.Env = os.Environ()
cmd.Stdout = &outbuf
cmd.Stderr = &errbuf
err := cmd.Run()
stdout = outbuf.String()
stderr = errbuf.String()
if err != nil {
log.Printf("Error executing command: %v", err)
exitCode = getErrorExitCode(err)
} else {
exitCode = cmd.ProcessState.Sys().(syscall.WaitStatus).ExitStatus()
}
if stderr == "" && exitCode != 0 {
stderr += err.Error()
}
output = strings.Join([]string{stdout, stderr, "Exit Status: " + strconv.Itoa(exitCode)}, "\n")
output = strings.TrimPrefix(output, "\n")
output = strings.TrimSuffix(output, "\n")
return output
}
func getErrorExitCode(err error) int {
if exitError, ok := err.(*exec.ExitError); ok {
ws := exitError.Sys().(syscall.WaitStatus)
return ws.ExitStatus()
}
return 1
}
Подробнее здесь: https://stackoverflow.com/questions/785 ... -in-golang