如何在Python中调用nikto并将输出作为字符串返回

1 投票
1 回答
2170 浏览
提问于 2025-05-11 02:46

这个函数应该调用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

撰写回答