如何从python调用nikto并将输出作为字符串

时间:2015-11-25 16:43:16

标签: python linux perl security command

这个函数应该调用nikto将它的输出作为字符串返回,而是永远挂起。我不顾一切地想弄清楚为什么这不起作用,我已经尝试了我能想到的一切。

def nikto(host, *args):
    arguments = ' '.join(args)
    command = 'nikto -host {} {}'.format(host, arguments)
    return commands.getoutput(command)

什么是nikto?

Nikto是一个开源(GPL)Web服务器扫描程序,可针对多个项目对Web服务器执行全面测试,包括6400多个潜在危险文件/ CGI,检查超过1200个服务器的过期版本,以及超过270个版本的特定问题服务器

Nikto用什么语言写的?

的Perl

注意:

我也试过os.popen('nikto').read()

我的系统

Linux rwilson-Aspire-E5-521 3.16.0-55-generic#74~14.04.1-Ubuntu SMP Tue 11月17日10:15:59 UTC 2015 x86_64 x86_64 x86_64 GNU / Linux

1 个答案:

答案 0 :(得分:0)

如果你想调用命令并使其输出简单,请使用subprocess.check_output

def nikto(host, *args):
    return subprocess.check_output(['nikto', '-host', host] + args)

但是,请注意,如果命令的返回代码非零,则此方法将引发异常,但异常将在其output属性中包含输出。

如果要捕获命令的stderr和stdout,请添加参数stderr=subprocess.STDOUT