如何解决有没有办法在使用 Python CGI 时以与默认格式不同的格式输出 bash 命令结果
当从 Python 运行 bash 命令到网页时,如果没有设置输出选项,则会成功输出到网页。但是,我想将输出保存到 xml 文件并将输出显示到网页。尝试执行此操作时出现错误:
代码:
#!/usr/bin/python
import subprocess
import os
# Import modules for CGI handling
import cgi,cgitb; cgitb.enable()
import time
# Create instance of FieldStorage
form = cgi.FieldStorage()
# Get data from fields
niktoValue = form.getvalue('niktoInput')
# Get data from fields
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "</head>"
print "<body>"
print "<h2>Nikto Scan Information for %s </h2>" % (niktoValue)
def bash(command):
return subprocess.check_output(['bash','-c',command])
def niktoScan():
res = bash("nikto -h %s -output xml" % niktoValue).splitlines()
print(res)
niktoScan()
print "</body>"
print "</html>"
解决方法
错误 13 通常是“权限被拒绝”。
当您在桌面上登录时,我怀疑您的 CGI 脚本是以 _www
用户而不是常规用户身份运行的。您可以通过在 http 服务器下的 id
脚本中运行 bash
或查看您的 http 服务器配置文件来进行测试 - 也许 /etc/apache2/httpd.conf
看起来像这样的部分:
用户/组:运行 httpd 的用户/组的名称(或 #number)。 创建一个专门的用户和组通常是一种很好的做法 与大多数系统服务一样运行 httpd。
用户_www 群_www
我不熟悉 nikto
程序,所以你需要从它的作者那里找出如何允许 www
用户运行它 - 也许通过将该用户添加到 Unix 组,也许通过 sudo
,也许是别的东西。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。