如何在Python中调用nikto并将输出作为字符串返回
这个函数应该调用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 Tue Nov 17 10:15:59 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
相关文章:
- 暂无相关问题
1 个回答
0
如果你想要执行一个命令并获取它的输出,可以简单地使用 subprocess.check_output
。
def nikto(host, *args):
return subprocess.check_output(['nikto', '-host', host] + args)
不过要注意,如果你执行的命令返回的代码不是零,这个方法会抛出一个异常,但这个异常里会包含输出信息,存放在它的 output
属性中。
如果你想同时捕获命令的错误信息和正常输出,可以加上参数 stderr=subprocess.STDOUT
。