gpt4 book ai didi

python - 在 Web 浏览器中显示 Linux 命令的输出 - Python

转载 作者:太空宇宙 更新时间:2023-11-03 21:47:59 24 4
gpt4 key购买 nike

我正在运行基于 Python 的 CGI 脚本,但在浏览器中打印“dig”命令的输出时遇到困难。我使用 Idle 运行相同的脚本并且它有效。

这是脚本:

#!/usr/bin/python3.5

#================================================================
# Modules

import cgi
import subprocess
import re

#================================================================
# Create HTML page

form = cgi.FieldStorage()

regex_url = re.compile(r'(^https?:\/\/)(.*?)(\/.*)')

url = form.getvalue('url')
origin = form.getvalue('origin')

print ("Content-type:text/html\r\n\r\n")

print ("<html>")
print ("<head>")
print ("<title>Lookup Tool</title>")
print ("<body>")

print ("<h1>DNS lookup tool</h1><br>")

print("<form method='post' action='/cgi-bin/test.py'>")
print("<p>Full URL including http/s: <input type='url' name='url'/></p>")
print("<p>Leave empty: <input type='text' name='origin'/></p>")
print("<input type='submit' value='Submit' />")
print("</form>")

host = regex_url.search(url)
hostname = host.group(2)

print("Hostname is: " + hostname )
resolver = subprocess.Popen(['dig', hostname], stdout=subprocess.PIPE)
print(resolver.communication())

我希望在网络浏览器中看到 dig www.google.com 的输出,但事实并非如此。但是,如果我执行“print(hostname)”,那么 www.google.com 将打印在网页中。

我做错了什么

最佳答案

我找到了一个解决方案,以防将来有人需要它:

resolver = subprocess.Popen(['dig', hostname], stdout=subprocess.PIPE)
lookup_output = resolver.communicate()[0]
lookup = 'STDOUT:{}'.format(lookup_output)

关于python - 在 Web 浏览器中显示 Linux 命令的输出 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52335195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com