Как стать автором
Обновить

Комментарии 45

и чем он лучше paramiko?
Здесь например показано jessenoller.com/blog/2009/02/05/ssh-programming-with-paramiko-completely-different как через AutoAddPolicy() решить вопрос с RSA key fingerprint
Да, paramiko не умеет работать с telnet, но на большинстве коммутаторов, маршрутизаторов есть поддержка ssh
Paramiko хорошая альтернатива. Но конкретно мне нужен был telnet и SSHv1 для ASA, ввезённой без строгого шифрования.
«netmiko» это по факту и есть оболочка для «paramiko» (название намекает).
Просто в ней куски кода, которые сетевики писали раза от раза используя paramiko (распознование конца вывода, смена промпта, непосредственно процесс подключения и т.п.), объеденены в сподручные функции, и он из коробки довольно стабильно (у меня небыло глюков) работает с самыми распространенными осями сетевых устройств.

Пришёл разместить эту ссылку, а она уже здесь ;-)
Хороший курс. Рекомендую.

Извини «автор» но на рисунке тянущие телегу на квадратных колесах это похоже ваши сотрудники. А мужичек предлагающий колеса это тот кто знает: bash, command line utilities.
Не гонитесь за популярностью изучайте классику.
Если что-то изучать с нуля, то из бесплатных продуктов Python выглядит наиболее подходящим для сетевого инженера. Кроме изменения конфигурации через CLI его можно использовать для взаимодействия через RestAPI. Кроме того, у Cisco, Huawei и Juniper уже есть встроенный интерпретатор Python в некоторых маршрутизаторах и коммутаторах. Для Cisco это ISR 4000, Nexus 9000. Думаю, этот список будет расширяться.
а можно детальнее об этом:
python on Cisco это ISR 4000
? настраивал ISR 4331 и не заметил ничего :(
Для ISR нужен отдельный софт из линейки Everest. Сейчас последний — isr4300-universalk9.16.06.01.SPA.bin. С версии Everest 16.5.1b появилась поддержка Python 2.7/3.0 для ISR 4k, CSR, ASR.

Вот полезная вводная статья:
https://communities.cisco.com/community/developer/blog/2017/04/17/introducing-python-and-guest-shell-on-ios-xe-165
Тут ведь как — если у вас в руках молоток, любая проблема будет казаться гвоздём.
Автор явно написал — ему нужно было «одинаково под Windows и Mac OS X». И какие есть возможности под Windows? Баша «из коробки» там нет, PowerShell — это свой отдельный мир, можно ещё cygwin поставить (большой, тяжёлый, со своими проблемами). Python в данном случае не худший выбор.
Вот только сам Борн говорил в этом десятилетии, что решать сколько-нибудь большие задачи — не то, на что рассчитывались шелл-скрипты (в процессе дизайна, разработки языка), и рекомендовал избегать этого, иначе костылей в процессе собирается (и грабель проходится) немерено.

А в общем случае задачи системного администратора могут требовать довольно сложных комбинаций действий, и тогда становится и проще, и разумнее использовать тот же Python.
небольшой оффтопик: со стилем программирования на python от ученых и инженеров ничего не поделать, надо привыкать ;)
согласен, например это
print(bcolors.FAIL + "Invalid IP - " + str(ip_address) + bcolors.ENDC)

очень красиво можно сделать так
print("%s Invalid IP - %s %s "%(bcolors.FAIL,ip_address,bcolors.ENDC))
да там много чего: несоблюдение pep8, общий except, открытие файла по-старому и т.д.
и файлики кошернее открывать через with :)

или через format:


print('{} Invalid IP - {} {}'.format(bcolors.FAIL, ip_address, bcolors.ENDC))
Раз уж на 3.6+
print(f'{bcolors.FAIL}Invalid IP - {ip_address}{bcolors.ENDC}')
Вот это действительно наглядно и красиво.
Спасибо за советы. Элегантность кода, надеюсь, появится с опытом.
Оно может и некрасиво, но это простительно — вы в конце концов не программист. Главное, чтоб оно корректно работало. а под стандарты и представления о прекрасном можно и потом подогнать, если очень припрет.
Мне одному написанное ниже кажется хуже читаемым?
возможно хуже, но правильней

Я склоняюсь к тому, что Lua удобнее во всех отношениях по сравнению с Python. Для задач администрирования.

С Lua не работал, но насколько я знаю, там нет такого количества доступных библиотек, как для Python. В интернете по запросу cisco+lua находятся в основном статьи про SIP и CUCM. Не поделитесь ссылкой на какую-нибудь полезную статью про использование lua для работы с конфигами сетевых устройств? Будет интересно почитать.
Со стороны рынка и спроса — конечно Python несомненный лидер.

С академической точки зрения — Python это бастард.
К примеру Tcl, или Lua — то есть такие скриптовые языки,
которые ни на что серьёзное не претендуют, оставаясь именно что языками
командно-скриптовыми, предназначенными для управления другими программами.
Опять же, в администрении всё-таки чаще применяется Bourne Shell (при всей
его дубовости это однозначное must know для эксплуатационщика).
С моей точки зрения Python не имеет права на существование, как и Perl, и
Ruby, и вообще любой интерпретируемый (и тем более командно-скриптовой)
язык, имеющий претензии на роль языка общего назначения.

Но… рынок труда со мной не согласен. ;-)

P.S.
www.ibm.com/developerworks/ru/library/l-lua_3/index.html

robot-develop.org/archives/3717

Опять же, в администрении всё-таки чаще применяется Bourne Shell (при всей его дубовости это однозначное must know для эксплуатационщика).

Достоинство у него ровно одно — в любой юникс-подобной операционке он есть «из коробки». Никакой алгоритм, подразумевающий работу с данными, организованными более сложно, чем последовательность строк, на нём реализовать невозможно, просто нет соответствующих средств.

С моей точки зрения Python не имеет права на существование, как и Perl, и Ruby, и вообще любой интерпретируемый (и тем более командно-скриптовой)
язык, имеющий претензии на роль языка общего назначения.


А, собственно, почему? Даже спрошу иначе — а где, по вашему, проходит граница между компилируемым и интерпретируемым (Java какая?), а также командно-скриптовым и «не-скриптовым» языками (php какой)?
Никакой алгоритм, подразумевающий работу с данными, организованными более сложно, чем последовательность строк, на нём реализовать невозможно, просто нет соответствующих средств.
Да ладно вам. Я сам лично несколько лет назад писал скрипт, который олавливал зависимости между пакетами и делал удобный инсталлятор с помощью NSIS. Всё на bash, включая топологичествую сортировку, проверки зависимостей и прочее.

Дополнительный плюс: за 5 лет скрипт никто так и не изуродовал, так как никто просто не знает — с какой стороны к нему подступиться.
ansible — это довольно кривая и хреново документированная надстройка над голым питоном ) вместо того чтоб изучать питон, придется изучать ансибл, причем изучать по слухам, т.к. нормальной информации о том как оно работает нету.
нормальный инструмент называется HP Network Automation Tool
Годный вброс, но не сработало :)
а эта книга актуальна для какой версии ansible?
уверены? там нет никакой актуальной информации про использование промежуточного hop-off сервера, например.
Это следующий шаг для администрирования. Модули для Ansible пишутся в том числе и на Python, поэтому знакомство с ним лишним не будет. Python сам по себе более гибкий инструмент и позволяет решать более широкий спектр задач. Например, можно написать скрипт, собирающий с оборудования необходимые данные и записывающий их в Excel-файл. И это могут быть не только конфигурации устройств, но и таблицы mac, ARP, RIB, состояние сессий протоколов маршрутизаций.
Можно еще fabric. Вопрос же про изобретение велосипеда :)
Я бы еще посмотрел в сторону NAPALM.
Сорри за дурацкий вопрос, а под Windows это вообще работоспособно? Сразу все упало с ModuleNotFoundError: No module named 'pyasn1' при том, что
D:\PycharmProjects\cisco>«C:\Program Files\Python36\Scripts\pip.exe» install pyasn1
Requirement already satisfied: pyasn1 in c:\program files\python36\lib\site-packages\pyasn1-0.3.3-py3.6.egg
Долго и нудно с библиотеками шаманить надо?
Вопрос действительно дурацкий. Я думаю что мало кто подобные вещи в принципе пытается делать под Windows, соотвественно и откуда брать библиотеки — никто не знает. В PIPе pyasn1 есть, но работает ли оно на Windows… попробуйте и узнаете?

Нельзя не напомнить что в 10 можно включить линуксовый Шелл и установить в него линуксовый же пакеты и делать вот это все в нем.

Я использовал этот скрипт на Windows 10. Также перед публикацией пробовал запустить его на чистой Windows 7, действуя по шагам из статьи. То есть установив только Python 3.6 и библиотеку netmiko. К сожалению, такой ошибки ни разу не встречал. Pyasn1 нужен библиотеке paramiko, которая поставится сама при установке netmiko. Может, попробовать переустановить библиотеки pyasn1, netmiko и paramiko? (pip uninstall/pip install)

Также выложил скрипт на GitHub. Предлагаю скопировать его оттуда. В скрипте из статьи могут быть лишние символы.
https://github.com/aagarshin/habr/
Спасибо. банально поставил 3.6.2 вместо просто 3.6, который притащил PyCharm и переставил все библиотеки под него. Все заработало. Уже нарубил штук 10 скриптов для управления свей убогой инфраструктурой. Особенно порадовался когда туда ASA смог включить.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий