использование Python / Pexpect для сканирования сети - PullRequest
0 голосов
/ 29 июля 2010

Это скорее логическое мышление, нежели кодирование.У меня уже есть несколько рабочих блоков кода - один, который подключается к устройству, один, который анализирует результаты команды, один, который заполняет словарь и т. Д. И т. Д.

Теперь допустим, что я хочу проанализировать сеть с неизвестными узлами,, b, c и т. д. (но я знаю только о 1)

Я даю свой узел кодового блока a.Результаты в таблице, включая б, в.Я сохраняю это в словаре

Затем я хочу использовать эту первую запись (b) в качестве цели и посмотреть, что она может видеть.Возможно, d, e и т. Д. И добавьте их (если они есть) к dict

, а затем сделайте то же самое для следующего узла в этом недавно заполненном словаре.В конечном итоге все узлы были посещены только один раз, и все увиденные устройства записаны в этом (или другом) словаре.

Однако я не могу понять, как продолжать повторное чтение словаоно растет, и я не могу понять, как не смотреть на устройство более одного раза.

Я понимаю, что для меня это понятнее, чем я объяснил, извиняюсь, если это сбивает с толку

1 Ответ

2 голосов
/ 29 июля 2010

Вы смотрите на алгоритмы графа, в частности DFS или BFS . Вы спрашиваете конкретно о деталях реализации или, в более общем смысле, об алгоритмах?

Рекурсия была бы очень аккуратным способом сделать это.

seen = {}
def DFS( node ):
    for neighbour in node.neighbours():
        if neighbour not in seen:
            seen[ neighbour ] = some_info_about_neighbour
            DFS( neighbour )
...