Parse / proc / net / route выводится в шаблоне Django - PullRequest
0 голосов
/ 26 января 2019

У меня есть следующий скрипт python для анализа вывода файла / proc / net / route, и он отлично работает, когда я запускаю его в оболочке. Код возвращает отдельный список для каждой записи маршрутизации в таблице

Мне нужно отобразить вывод этого скрипта в таблице в шаблоне django. Я пытался использовать цикл for, но он ничего не отображает.

def routes(request):
    with open("/proc/net/route") as fh:
        next(fh)
        for line in fh:
            routes = line.strip().split()
            destination = socket.inet_ntoa(struct.pack("<L", int(routes[1], 16)))
            gateway = socket.inet_ntoa(struct.pack("<L", int(routes[2], 16)))
            mask = socket.inet_ntoa(struct.pack("<L", int(routes[7], 16)))
            metric = routes[6]
            interface = routes[0]
    context_routes = {'routes': routes }
    return render(request, 'lwp_admin/routes.html', context_routes )

CLI-вывод скрипта:

0.0.0.0 192.168.1.1 0.0.0.0 100 enp1s0
172.17.0.0 0.0.0.0 255.255.0.0 0 docker0
192.168.1.0 0.0.0.0 255.255.255.0 100 enp1s0
192.168.34.0 0.0.0.0 255.255.255.0 0 vmnet1
192.168.64.0 0.0.0.0 255.255.255.0 0 vmnet8
192.168.122.0 0.0.0.0 255.255.255.0 0 virbr0

Я хочу, чтобы этот вывод отображался в шаблоне django в таблице.

Код шаблона Django:

<table class="table table-bordered table-responsive table-striped table-condensed">
                  <thead class="bg-maroon-gradient">
                    <tr>
                        <th scope="col" class="col-xs-1 text-center">Destination</th>
                        <th scope="col" class="col-xs-1 text-center">Subnet mask</th>
                        <th scope="col" class="col-xs-1 text-center">Gateway</th>
                        <th scope="col" class="col-xs-1 text-center">Metric</th>
                        <th scope="col" class="col-xs-1 text-center">Interface</th>
                    </tr>
                  </thead>
                  <tbody>
                      {% for route in routes %}
                      <tr class="text-center">
                              <td> {{ route }}</td>
                      </tr>
                      {% endfor %}
                  </tbody>
              </table>

1 Ответ

0 голосов
/ 26 января 2019

Разобрался с проблемой сам.Это код вида Django:

    with open("/proc/net/route") as fh:
    next(fh)
    route_list = []
    for line in fh:
        routes = line.strip().split()
        destination = socket.inet_ntoa(struct.pack("<L", int(routes[1], 16)))
        gateway = socket.inet_ntoa(struct.pack("<L", int(routes[2], 16)))
        mask = socket.inet_ntoa(struct.pack("<L", int(routes[7], 16)))
        metric = routes[6]
        interface = routes[0]
        route_table = (destination + ' ' + gateway + ' ' + mask + ' ' + metric + ' ' + interface).split()
        route_list.append(route_table)
context_routes = {'route_list': route_list, 'arp_list': arp_list }
return render(request, 'lwp_admin/routes.html', context_routes )

А вот часть шаблона Django:

<table class="table table-bordered table-responsive table-striped table-condensed">
              <thead class="bg-maroon-gradient">
                <tr>
                    <th scope="col" class="col-xs-1 text-center">Destination</th>
                    <th scope="col" class="col-xs-1 text-center">Gateway</th>
                    <th scope="col" class="col-xs-1 text-center">Subnet mask</th>
                    <th scope="col" class="col-xs-1 text-center">Metric</th>
                    <th scope="col" class="col-xs-1 text-center">Interface</th>
                </tr>
              </thead>
              <tbody>
              {% for routes in route_list %}
                  <tr class="text-center">
                    {% for items in routes %}
                        <td> {{ items }}</td>
                    {% endfor %}
                  </tr>
                {% endfor %}
              </tbody>
          </table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...