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

标签 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) 网络服务器扫描器,它针对多个项目对网络服务器执行全面测试,包括 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/

相关文章:

c++ - Linux c++ : getaddrinfo failed with EAI_AGAIN, curl 无法解析主机

perl - 如何检查Perl中的IP地址是否在特定范围内?

python - 如何使用 pyqt 和 py2app 将 "About box"添加到 Mac 应用程序?

linux - rmmod 时出现 panic

python - 将表示为嵌套dicts的几个 "Response"对象转换为python中的多维列表

linux - 重命名文件夹中的文件(linux)

perl 命令行替换字符串

perl - 如何在 Perl 中轻松执行异步 REST 请求?

python - 扩展维度 xarray

python - python 的 sorted() 使用什么算法?