Отображение табличного представления вывода в формате RAW - Django - PullRequest
0 голосов
/ 19 марта 2019

У меня есть необработанный вывод из функции печати, который выглядит примерно так:

b'\r\nsw-dektec#\r\nsw-dektec#terminal length 0\r\nsw-dektec#sh mvr members\r\nMVR Group IP        Status         Member          Membership \r\n-------------------------------------------------------------\r\n232.235.000.001     ACTIVE/UP      Gi1/0/21        Dynamic    \r\n232.235.000.002     ACTIVE/UP      Gi1/0/21        Dynamic    \r\n232.235.000.003     ACTIVE/UP      Gi1/0/21        Dynamic

Я хочу проанализировать вышеуказанный текст и отображать 232.235.000.x только когда я нажимаю кнопку на моемстраница интернета.

И я проверяю, можем ли мы отобразить вывод в следующем формате:

Multicast IP
------------
232.235.000.001

232.235.000.002

232.235.000.003

Вот мой view.py:

если 'RETRIEVE' в запросе.POST:

  remote_conn_pre = paramiko.SSHClient()
  remote_conn_pre.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  remote_conn_pre.connect(hostname='172.31.255.4', port=22, username='admin',
                        password='******',
                        look_for_keys=False, allow_agent=False)

  remote_conn = remote_conn_pre.invoke_shell()


  remote_conn.send("\n")


  remote_conn.send("terminal length 0\n")
  remote_conn.send("sh mvr members\n")
  time.sleep(1)
  iptv = remote_conn.recv(65535)
  print (iptv)
  for line in iptv:

      remote_conn.send("end\n")
      remote_conn.send("exit\n")

1 Ответ

0 голосов
/ 19 марта 2019

Вот один из способов, которым вы можете проанализировать вывод команды:

iptv = remote_conn.recv(65535)

ips, rec = [], False
for line in iptv.decode('utf-8').split('\r\n'):
    if '---' in line:
        rec = True
    elif rec:
        ip, *_ = line.split() 
        ips.append(ip)

remote_conn.send("end\n")
remote_conn.send("exit\n")

Если вы хотите отобразить это на своей веб-странице, то вам нужно отправить проанализированные IP-адреса в шаблон, гдеВы можете создать простую таблицу HTML.

return render(request, 'ip_address_template.html', {
    'ips': ips
})

Шаблон ip_address_template.html может выглядеть примерно так:

<table>
    <th>Multicast IP</th>
    {% for ip in ips %}
        <tr><td>{{ ip }}</td></tr>
    {% endfor %}
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...