0

BGP ログ ファイル: bgplog.log

Host local.domain.net [11.130.55.2] with interface to BGP peer 11.130.44.65: the number of BGP UPDATE messages received changed from '110376' to '110393'
Host local.domain.net [11.130.55.2] with interface to BGP peer 11.130.44.93: the number of BGP UPDATE messages received changed from '133736' to '134146'
Host local.domain.net [11.130.55.2] with interface to BGP peer 11.130.44.65: the number of BGP UPDATE messages sent changed from '108252' to '108348'
Host local.domain.net [11.130.55.2] with interface to BGP peer 11.130.44.93: the number of BGP UPDATE messages sent changed from '2094' to '2132'
Host local.domain.net [11.130.55.2] with interface to BGP peer 11.130.44.103: the number of BGP UPDATE messages sent changed from '91440' to '91462'
Host local.domain.net [11.130.55.2] with interface to BGP peer eth1-local.domain.net [11.8.44.10]: the number of BGP UPDATE messages sent changed from '1411' to '1413'
Host local.domain.net [11.130.55.2] with interface to BGP peer 10.81.244.18: the number of BGP UPDATE messages sent changed from '112347' to '112506'
Host local.domain.net [11.130.55.2] with interface to BGP peer 11.130.44.65: the number of messages received from the remote peer changed from '538672' to '538691'
Host local.domain.net [11.130.55.2] with interface to BGP peer 11.130.44.93: the number of messages received from the remote peer changed from '547397' to '547814'

目的:

  1. 特定の IP を見つけます。たとえば、11.130.44.93 とします。
  2. 任意の行が上記の IP に一致し、行を分割して特定の値を各キーに保存します。
  3. キーをソートした

私が試したコードは次のとおりです。

import re
import os


def find(line):
    findThis = ""
    found = re.match(r'.*?11.130.44.103.*', line)
    # Find is true:
    if found:
        # found a item and adds in to findThis
        findThis = found.group()
    else:
        findThis = "NONE"
    return findThis


def generateDicts(log):
    currentDict = {}
    for line in log:
        if line.startswith(find(line)):
            currentDict = {
                "host": line.split(" ")[1][:24],
                "ip": line.split(" ", 9)[2],
                "peer": line.split(" ")[8],
                "info": line.split(" ", 9)[-1]}
        else:
            # currentDict = {"info":line.split("-",6)[-1]}
            currentDict = line


with open("bgplog.txt") as f:
    print list(generateDicts(f))

私は最後の値を取得しているだけで、どういうわけか追加されていません。最善のアプローチは何ですか?

4

2 に答える 2