В браузере с помощью CGI скрипт выводит строки одна за одной, на перенос строки не реагирует
Запускаю python скрипт в CGI, выводит то, что мне надо, но вот отображение не очень.
Все строки которые выводит, идут друг за другом, вот так: test.ru - AAAAAAAAAAAAAA,10.0.0.12 test.ru - BBBBBBBBBBBBBB,10.0.0.112
В консоли и в pycharm отображается как надо:
test.ru - AAAAAAAAAAAAAA,10.0.0.12
test.ru - BBBBBBBBBBBBBB,10.0.0.112
Сам скрипт вот такой:
#!/usr/bin/python3
import os
import paramiko
import datetime
import cgi
form = cgi.FieldStorage()
name = form.getvalue('mac')
print("Content-type: text/html\r\n\r\n")
host = 'test'
user = 'test'
port = 22
secret = 'test'
now = datetime.datetime.now()
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, username=user, port=port, password=secret)
stdin, stdout, stderr = client.exec_command('cat /etc/openvpn/hosts.addr')
data = stdout.read() + stderr.read()
with open('/var/www/1/100.txt', 'wb') as f:
f.write(data)
i=0
with open('/var/www/1/100.txt', encoding='utf-8') as file:
for line in file:
list_words = line.split()
i=i+1
if name in line:
print(host + ' - ' + line)
Добавление '\n' в последний принт, ни как вообще не сказывается на выводе. Куда копать?
Ответы (1 шт):
Потому что браузер и консоль - это разные вещи. Хотите чтобы в браузере было всё с переводами строк? Не проблема... Приведите вывод к такому формату и будет вам счастье в браузере.
<pre>
test.ru - AAAAAAAAAAAAAA,10.0.0.12 (\n)
test.ru - BBBBBBBBBBBBBB,10.0.0.112 (\n)
...
</pre>
Или второй вариант, замените ваш '\n' на '<br>'.
Всё дело в том, что браузер собирает контент согласно тегов, и на переводы строк он не обращает внимания, можно весь HTML в одну строчку сложить, при этом ничего в отображении не поломается.