这个函数应该调用 nikto 并返回它作为字符串的输出,而不是永远挂起。我很想知道为什么这不起作用,我已经尝试了我能想到的一切。
def nikto(host, *args):
arguments = ' '.join(args)
command = 'nikto -host {} {}'.format(host, arguments)
return commands.getoutput(command)
什么是 nikto?
Nikto 是一个开源 (GPL) 网络服务器扫描器,它针对多个项目对网络服务器执行全面测试,包括 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 11 月 17 日星期二 10:15:59 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
最佳答案
如果你想简单地调用命令并得到它的输出,使用subprocess.check_output
.
def nikto(host, *args):
return subprocess.check_output(['nikto', '-host', host] + args)
但是请注意,如果命令的返回码不为零,此方法将引发异常,但异常将在其 output
属性中包含输出。
如果您想捕获命令的 stderr 和 stdout,请添加参数 stderr=subprocess.STDOUT
。
关于python - 如何从 python 调用 nikto 并将输出作为字符串返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33921961/