Esse aqui é um pequeno CGI que permite a execução de alguns comandos Linux/Unix via Web. Ele não se preocupa muito com aspectos de segurança e afins, portanto, certifique-se que isso não possa lhe causar problemas. Para esse código funcionar é só ter um servidor Web rodando com permissão para executar CGI. Além disso você precisará do Python (lógico), Nmap, Traceroute e do Ping. Ele também funciona apenas em sistemas Unix-like e serve para demonstrar alguns macetes sobre algumas chamadas do sistema. Eu utilizei esse método no lugar do {{{os.popen()}}} pois quando o CGI 'morre' (cliente clica no 'Parar' do navegador) o processo filho também morre. Com o {{{os.popen()}}} isso não aconteceria. == Código == {{{ #!python #!/usr/bin/env python import os import sys import cgi import re def header(): print """ WebCommands """ def valid_ip(ip): return re.match('([0-9]{1,3}\.){3}[0-9]{1,3}', ip) def main(): header() body() footer() def body(): form = cgi.FormContentDict() print '

Host

' print '
' if form.has_key('ip'): ip = form.dict['ip'][0] print '

IP:

' % (ip) else: print '

IP:

' print '

' print '' print '' print '' print '

' if not valid_ip(ip): print "

Error: invalid ip address

" return if form.has_key('command'): print "

Command Result

" if not do_command(form.dict['command'][0].lower(), ip): print "

Error: invalid command

" return def footer(): print "" print "" def do_command(cmd, ip): print "teste" if cmd == 'ping': p = '/bin' c = 'ping' elif cmd == 'traceroute': p = '/usr/sbin' c = 'traceroute' elif cmd == 'nmap': p = '/usr/bin' c = 'nmap' else: return 0 try: pid, fd = os.forkpty() except: sys.stderr.write("cannot fork()\n") sys.exit(1) if pid == 0: os.execv("%s/%s" % (p, c), [c] + [ip]) sys.exit(0) print "
"
    buffer = ""
    while 1:
        try:
            data = os.read(fd, 32)
        except:
            break

        buffer = buffer + data
        res = buffer.split("\n", 1)

        if len(res) != 2:
            continue

        line, buffer = res

        line = line.strip()
        print "%s" % (line)
        sys.stdout.flush()

    print "
" os.close(fd) return 1 if __name__ == '__main__': print "Content-type: text/html\n" main() }}} Volta para CookBook.