这个函数应该调用nikto返回,它的输出是一个字符串,而不是永远挂起。我很想知道为什么这不起作用,我已经尽力了。

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

尼可是什么?
nikto是一个开源(gpl)web服务器扫描器,它对web服务器执行多个项目的全面测试,包括6400多个潜在危险的文件/cgi,检查1200多个服务器的过时版本,以及270多个服务器上的版本特定问题。
尼托是用什么语言写的?
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_u64 x86_u64 gnu/linux

最佳答案

如果要调用命令并获得其输出,请使用subprocess.check_output

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

但是,请注意,如果命令的返回代码为非零,此方法将引发异常,但异常将在其output属性中包含输出。
如果要捕获命令的stderr和stdout,请添加参数stderr=subprocess.STDOUT

08-24 15:01