О деактивации форума Eltex

Уважаемые коллеги! В связи с потерей актуальности данного ресурса, нами было принято решение о частичной деактивации форума Eltex. Мы отключили функции регистрации и создания новых тем, а также возможность оставлять сообщения. Форум продолжит работу в "режиме чтения", так как за долгие годы работы здесь накопилось много полезной информации и ответов на часто встречающиеся вопросы.

Мы активно развиваем другие каналы коммуникаций, которые позволяют более оперативно и адресно консультировать наших клиентов. Если у вас возникли вопросы по работе оборудования, вы можете обратиться в техническую поддержку Eltex, воспользовавшись формой обращения на сайте компании или оставить заявку в системе Service Desk. По иным вопросам проконсультируют наши менеджеры коммерческого отдела: eltex@eltex-co.ru.

Работа со свитчами через paramiko из Python

MES, ESR
Evgen_94
Сообщения: 239
Зарегистрирован: 16 дек 2016 09:15
Reputation: 0

Re: Работа со свитчами через paramiko из Python

Сообщение Evgen_94 » 21 мар 2017 14:03

Эм.. Ребят я не пойму почему в случае использования Exscript enable не требуется. А в случае простого подключения требуется?

Модуль Exscript по командне login автоматически логинится на устройство и автоматически заходит в привилегированный режим (enable) если не увидит # в приглашении.
дополнительный вопрос зачем делается вот эта команда:

Код: Выделить всё
conn.execute('terminal datadump')

terminal datadump нужен для отображения вывода команд без разделения на страницы.
Евгений Киселев / Элтекс / Сервисный центр ШПД / https://eltex-co.ru/support/

Голубцов Дмитрий
Сообщения: 85
Зарегистрирован: 16 окт 2014 12:50
Reputation: 0

Re: Работа со свитчами через paramiko из Python

Сообщение Голубцов Дмитрий » 21 мар 2017 14:34

Приведите пример скрипта на perl, который "не работает".
Голубцов Дмитрий / Eltex / Сервисный центр ШПД / techsupp@eltex.nsk.ru

Dzirrot
Сообщения: 4
Зарегистрирован: 11 ноя 2016 13:56
Reputation: 0

Re: Работа со свитчами через paramiko из Python

Сообщение Dzirrot » 29 май 2017 14:45

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

norguhtar
Сообщения: 19
Зарегистрирован: 30 янв 2017 01:54
Reputation: 0

Re: Работа со свитчами через paramiko из Python

Сообщение norguhtar » 31 май 2017 23:18

Dzirrot писал(а):Добрый день, все таки хотелось бы узнать почему не работает библиотека paramiko из Python с Cli. И когда возможно заработает. Увы не нашел ожидания конца строки в paramiko.


Она работает. Только не через exec_command. Пример работающего скрипта:

Код: Выделить всё

#!/usr/bin/python

import paramiko
import re
import time
import logging
logging.basicConfig(level=logging.DEBUG)

host = "test"
user = "test"
pwd = "test"
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, username=user, password=pwd)

channel = client.invoke_shell()

output = channel.recv(65535)
print "login: ", output

channel.send("sh ver\n")
time.sleep(.5)
output = channel.recv(65535)
print "send:", output

channel.send("enable\n")
time.sleep(.5)
output = channel.recv(65535)
print "enable:", output

channel.send("sh interfaces switchport gi 0/1\n")
time.sleep(.5)
output = channel.recv(65535)
print "sh interfaces:", output

client.close()


Через exec_command не работает так-как там идет ожидание события, которого не наступает. Дополнительно в случае MES2124 нужно обновиться до 1.1.46. Иначе при вызове команд может повиснуть ssh. В приведенной версии эта проблема устранена и проблем при работе не возникает.

norguhtar
Сообщения: 19
Зарегистрирован: 30 янв 2017 01:54
Reputation: 0

Re: Работа со свитчами через paramiko из Python

Сообщение norguhtar » 31 май 2017 23:43

Дополнительно выяснено что работает netmiko с использованием типа устройства hp_procurve. Но сильно тупит на такой вот команде

Код: Выделить всё

sh interfaces switchport gi 0/1


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

norguhtar
Сообщения: 19
Зарегистрирован: 30 янв 2017 01:54
Reputation: 0

Re: Работа со свитчами через paramiko из Python

Сообщение norguhtar » 01 июн 2017 01:10

Еще одно дополнение. В netmiko есть поддержка eltex. Так что можно указывать как тип устройства. Судя по всему работает как надо.

Николаище
Сообщения: 9
Зарегистрирован: 22 ноя 2019 09:09
Reputation: 0

Re: Работа со свитчами через paramiko из Python

Сообщение Николаище » 22 ноя 2019 10:33

Добрый день.
Написал на Exscript пару простеньких скриптов, например поиск мак адреса по всем коммутаторам сети, или перезагрузка кластера из 40 точек доступа.
Работаю над скриптом, который мог бы менять текущую конфигурацию коммутатора и сохранять её. С первым проблем нет, а вот со вторым трабл.
Если запустить такой скрипт:

Код: Выделить всё

from Exscript import Account
from Exscript.protocols import SSH2

acc = Account('admin','password')

def exconnect(ip):
    conn = SSH2()
    print('\nConnecting to ' + ip)
    try:
        conn.connect(ip)
        conn.login(acc)
        conn.execute('conf')
        print(conn.response)
        conn.execute('ip igmp snooping')
        print(conn.response)
        conn.execute('ex')
        print(conn.response)
        conn.execute('wr')
       
       
        conn.execute('y')
        print(conn.response)
        conn.send('exit')
        conn.close()
       
    except Exception as e:
        print(e)
     
if __name__ == "__main__":
    exconnect('192.168.20.67')

, то вывод будет

Код: Выделить всё

Connecting to 192.168.20.67
conf

ip igmp snooping

ex

Timeout while waiting for response from device

, причём перед последним предложением скрипт думает секунд 30. То есть очевидно, что скрипт не знает как или когда отправить подтверждающее "Y".
Пробовал перед отправкой "Y" вставить ожидание запроса: conn.set_prompt(r'Overwrite file \[startup-config\].... (Y\/N)\[N\] \?')
Но результат аналогичный.
Питон 3.7
Прошу помочь, как всё это верно оформить.

Николаище
Сообщения: 9
Зарегистрирован: 22 ноя 2019 09:09
Reputation: 0

Re: Работа со свитчами через paramiko из Python

Сообщение Николаище » 04 дек 2019 17:57

Почитал документацию и сделал таким образом:

Код: Выделить всё

def exconnect(ip):
    conn = SSH2()
    print('\nConnecting to ' + ip)
    try:
        conn.connect(ip)
        conn.login(acc)
        conn.execute('conf')
        conn.execute('loopback-detection enable')
        conn.execute('ex')

        conn.set_prompt('\?')
        conn.execute('wr')
        conn.set_prompt()
        conn.execute('y')
        conn.send('exit')
        conn.close()
       
    except Exception as e:
        print(e)

Николаище
Сообщения: 9
Зарегистрирован: 22 ноя 2019 09:09
Reputation: 0

Re: Работа со свитчами через paramiko из Python

Сообщение Николаище » 24 сен 2021 13:05

От нефиг делать написал простенькую библиотеку-обёртку для Exscript. Может, будет интересно кому-то из ленивых. Хорошо работает с MES2324 из-под винды. Скачать: https://github.com/balduser/ex_wrapper

Например, можно быстро посмотреть в цикле, какая нагрузка на poe портах:

Код: Выделить всё

from ex_wrapper import Commutator

c = Commutator('192.168.1.1', 'admin', 'password')
for i in range(1, 25): # Checking GigabitEthernet ports from 1 to 24
   ans = c.get_poe(i, params=True):
   if ans['status']:
   print(i, ans['power'])


Или посмотреть конфигурацию vlan на портах:

Код: Выделить всё

from ex_wrapper import Commutator

c = Commutator('192.168.1.1', 'admin', 'password')
for i in range(1, 25): # Checking GigabitEthernet ports from 1 to 24
   if c.link_state(i):
      print(i, c.get_vlan(i))


Вернуться в «Коммутаторы и маршрутизаторы Ethernet»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 16 гостей