Показать вывод команд Linux в веб-браузере - Python - PullRequest
0 голосов
/ 14 сентября 2018

Я запускаю CGI-скрипт на основе Python и испытываю трудности с выводом команды «копать» в браузере.Я запускаю тот же сценарий, используя 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())

Я ожидаю увидеть вывод digg www.google.com в веб-браузере, но этоэто не тот случай.Однако, если я сделаю «печать (имя хоста)», то www.google.com будет напечатан на веб-странице.

Что я делаю не так

1 Ответ

0 голосов
/ 18 сентября 2018

Я нашел решение на случай, если кому-то понадобится в будущем:

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