【问题标题】:How to call nikto from python and return output as a string如何从 python 调用 nikto 并将输出作为字符串返回
【发布时间】:2016-02-28 13:33:29
【问题描述】:

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

【问题讨论】:

  • os.popen() 是要走的路。使用 'stdout=PIPE' 或使用 communicate() 来取回您的数据...
  • 我会试一试的。

标签: python linux perl security command


【解决方案1】:

如果您想调用命令并简单地获取其输出,请使用subprocess.check_output

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

但是请注意,如果您的命令的返回码不为零,此方法将引发异常,但该异常将在其output 属性中包含输出。

如果您想同时捕获命令的标准错误和标准输出,请添加参数stderr=subprocess.STDOUT

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-19
    • 2022-11-30
    • 2017-01-22
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    相关资源
    最近更新 更多