Как я могу перебрать все порты коммутатора и отключить их один за другим, используя python и ssh? - PullRequest
2 голосов
/ 12 июня 2019

Мне интересно, как я могу перебирать 48 портов коммутатора SAN один за другим и включать или отключать их?Для некоторой справочной информации я пишу скрипты на python для работы по автоматизации тестирования сетевых устройств.Я использую библиотеку под названием paramiko, которая подключается к этим устройствам с помощью SSH.

Вот простая функция, которую я написал, когда пользователь вводит, в какой порт он хочет отключить

def disablePort(ssh):
    user_input = input("Enter the port number you want to disable\n")

    channel = ssh.invoke_shell()

    ssh.exec_command("portdisable " + user_input)

    channel.close()

    print("Port " + user_input + " " + "disabled\n")

    print("Waiting 10 seconds as instructed by the test case\n")

    time.sleep(10)

Теперь,У меня есть 48 портов на этом коммутаторе, и я хочу отключить их один за другим.Я чувствую, что наивным решением было бы создать список, в котором все имена портов жестко закодированы, перебрать каждое из них и передать его в метод ssh.exec_command (), но есть ли более элегантное / практическое решение для этого?Как бы я мог сделать это?Спасибо за помощь!

1 Ответ

2 голосов
/ 12 июня 2019

Сначала вы должны иметь возможность подключиться к Paramiko, а затем запустить что-то вроде (для cisco)

show interfaces status

и прочитать стандартный вывод из paramiko, чтобы получить все интерфейсы.Затем вы можете использовать это для итерации, первый столбец будет именами.

Получив список портов, вы можете зациклить их один за другим и отключить их таким же образом.Например,

for port in myListOfPorts:
    ssh.exec_command(f"portdisable {port}")

Хотя вы должны проверить Netmiko, это порт paramiko для сетевых устройств.https://github.com/ktbyers/netmiko

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

...