golang executar comandos do OS (linux) via GO: exec: "nmap -A scanme.nmap.org": executable file not found in $PATH, mesmo setando manualmente $PATH no OS

764 views
Skip to first unread message

Mauro Risonho de Paula Assumpção

unread,
Aug 14, 2014, 11:25:29 AM8/14/14
to golang...@googlegroups.com, Mauro Risonho de Paula Assumpção
Estou fazendo esse source code para testar/usar comandos no linux:

source code: test.go
go run test.go

package main

import (
"bytes"
"fmt"
"os/exec"
)

func main() {
    var (
        cmd *exec.Cmd
        out bytes.Buffer
    )
    //cmd = exec.Command("telnet", "www.google.com", "80")
    //cmd = exec.Command("ls")
    cmd = exec.Command("nmap -A scanme.nmap.org")
    //cmd.Env = os.Environ()
    cmd.Stdout = &out
    if err := cmd.Run(); err != nil {
        fmt.Println(err)  //exit status -1
        return
    }
    fmt.Println(out.String())
}
 
ou compilado:

go build test.go
./test.go

reparem que na linha onde esta o comando ls do linux, funcional normal

cmd = exec.Command("ls")

com telnet tambem, por parametro, tranquilo:

cmd = exec.Command("telnet", "www.google.com", "80")

export PATH=$PATH:/usr/bin/nmap

Putz! Dentro erro agora, na VM:

[root@localhost cmd]# ./test
exec: "nmap -A scanme.nmap.org": executable file not found in $PATH
[root@localhost cmd]# clear
[3;J
[root@localhost cmd]# go build test.go 
# command-line-arguments
pack: non-object file $WORK/command-line-arguments/_obj/_go_.6
pack: zero length file $WORK/command-line-arguments/_obj/_go_.6
pack: write error: No space left on device
[root@localhost cmd]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/fedora-root   50G   13G   34G  28% /
devtmpfs                 3.7G     0  3.7G   0% /dev
tmpfs                    3.8G   18M  3.7G   1% /dev/shm
tmpfs                    3.8G  972K  3.8G   1% /run
tmpfs                    3.8G     0  3.8G   0% /sys/fs/cgroup
tmpfs                    3.8G  3.8G     0 100% /tmp
/dev/sda1                477M  193M  255M  44% /boot
/dev/mapper/fedora-home  402G  349G   33G  92% /home
[root@localhost cmd]# go build test.go 
# command-line-arguments
pack: non-object file $WORK/command-line-arguments/_obj/_go_.6
pack: zero length file $WORK/command-line-arguments/_obj/_go_.6
pack: write error: No space left on device
[root@localhost cmd]# yum clean all
Loaded plugins: langpacks
Cleaning repos: fedora google-chrome rpmfusion-free rpmfusion-free-updates rpmfusion-nonfree rpmfusion-nonfree-updates updates virtualbox
Cleaning up everything
[root@localhost cmd]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/fedora-root   50G   13G   34G  28% /
devtmpfs                 3.7G     0  3.7G   0% /dev
tmpfs                    3.8G   18M  3.7G   1% /dev/shm
tmpfs                    3.8G  972K  3.8G   1% /run
tmpfs                    3.8G     0  3.8G   0% /sys/fs/cgroup
tmpfs                    3.8G  3.8G     0 100% /tmp
/dev/sda1                477M  193M  255M  44% /boot
/dev/mapper/fedora-home  402G  349G   33G  92% /home
[root@localhost cmd]# go build test.go 
# command-line-arguments
pack: non-object file $WORK/command-line-arguments/_obj/_go_.6
pack: zero length file $WORK/command-line-arguments/_obj/_go_.6
pack: write error: No space left on device
[root@localhost cmd]# go build test.go 

Tinha acabado o espaco no /tmp do LVM (fica a dica ai, de erros futuros...eheheh) no caso do fedora tinha que limpar o cache do YUM com yum clean all, mas mesmo compilando esta dando esse erro de $PATH:

exec: "nmap -A scanme.nmap.org": executable file not found in $PATH

Eu setei no .bashrc e tambem fiz temporariamente num shell bash com export PATH=$PATH:/usr/bin/nmap e nao funciona, o "malditinho from hell", ehehe hoje to Risonho igual meu sobrenome...rss

@firebitsbr


Nilton OS

unread,
Aug 15, 2014, 1:16:26 PM8/15/14
to golang...@googlegroups.com
Tenta fazer assim:

cmd = exec.Command("nmap" ,"-A" ,"scanme.nmap.org")

..............................................................................................
 Nilton OS | Working Linux 15 years ago | linuxpro.com.br

"LPI ID: LPI000240645 -- Certificado LPI 101"


--

---
Você recebeu essa mensagem porque está inscrito no grupo quot;Golang Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para golang-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Gustavo Niemeyer

unread,
Aug 15, 2014, 1:29:05 PM8/15/14
to golang...@googlegroups.com
Ou se a linha está vindo de algum local externo e não é conveniente
quebrar, chama o shell:

exec.Command("/bin/sh", "-c", "nmap -A scanme.nmap.org")
--

gustavo @ http://niemeyer.net

Mauro Risonho de Paula Assumpção

unread,
Aug 15, 2014, 2:11:21 PM8/15/14
to golang...@googlegroups.com
@niltonOS e @gustavoniemeyer, os 2 sources funcionaram, com sucesso!

Vou citar nos comentarios do sources essa contribuicao!:)

Estou tentando criar um WAS Web Application Scanner open source para a comunidade de security, a especificacao esta do que um WAS e preciso esta aqui


http://projects.webappsec.org/w/page/13246986/Web%20Application%20Security%20Scanner%20Evaluation%20Criteria

Quero pode apresentar num proximo evento Meeting Golang, mas ta bem "fraquinho" ainda, mas se alguem quiser contribuir seria legal:)

Legal mesmo seria tambem, se houvesse bindings do nmap(http://nmap.org/) para golang, similares esses que estao aqui sobre outras coisas:

http://go-lang.cat-v.org/library-bindings

Muita gente de network e de security usaria facil, facil...:)

Lista de devel e outro nivel...a galera ajuda, compartilha, ensina e aprende na humildade....ja algumas listas de security, primeiro voadora na cara, depois pergunta...rss

Pena que estou uma sucata para desenvolver (ah...minhas epocas de basic, clipper, pascal, um pouco de c, etc) que nao voltam mais...rss

Obrigado pela ajuda.

@firebitsbr


--

---
Você está recebendo esta mensagem porque se inscreveu no grupo "Golang Brasil" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para golang-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages