Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ Python ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

SQL\T-SQL

FreeBSD and Nix

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Python: SSH к CISCO с помощью Paramiko


Установить paramiko можно с помощью например pip, у меня в заметках можно найти по нему статьи

Сам скрипт элементарен:

(Важное замечание!!! В конце любой команды пример: chan.send('ping 8.8.8.8 ') в конце обязательно прибавлять \n)

import paramiko 
import time

host = '192.168.0.1'
user = 'User'
pass1 = 'Pass'
port = 22

#simple ssh connect sample
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, username=user, password=pass1, port=port)

chan = client.invoke_shell()
time.sleep(1)
chan.send('ping 8.8.8.8 \n')
time.sleep(3)
chan.send('ping 8.8.8.8 \n')
time.sleep(3)

output = chan.recv(99999)
print output

client.close()

chan = client.invoke_shell() нужен чтоб сессия не отваливалась

Живой пример с перебором оборудования CISCO

import paramiko 
import time

user = 'User'
pass1 = 'Pass'
port = 22

cisco = ['192.168.1.1', '192.168.1.2', '192.168.1.3']

for host in cisco:
    print '------Start---'+host+'------'

    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(hostname=host, username=user, password=pass1, port=port)

    chan = client.invoke_shell()
    time.sleep(2)

    chan.send('conf term\n ')
    time.sleep(2)
    #Включение
    chan.send('logging on\n ')
    time.sleep(2)
    #Для вывода в виртуальный терминал (включить terminal monitor)
    chan.send('logging monitor\n ')
    time.sleep(2)
    #Буфер по умолчанию
    chan.send('logging buffered 4096 \n')
    time.sleep(2)
    #Ограничение числа выводимых сообщений
    chan.send('logging rate-limit 30 \n')
    time.sleep(2)
    #Нумерация выводимых сообщений
    chan.send('service sequence-numbers\n ')
    time.sleep(2)
    #Даем указание выводить локальное время
    chan.send('service timestamps debug datetime localtime\n ')
    time.sleep(2)
    chan.send('service timestamps log datetime localtime\n ')
    time.sleep(2)
    #Отправка логов на сервер
    chan.send('no logging 192.168.1.100 ')
    time.sleep(2)
    #Глубина отправляемых логов
    chan.send('logging trap warnings \n')
    time.sleep(2)
    chan.send('end\n ')
    time.sleep(2)
    chan.send('wr\n ')
    time.sleep(6)

    output = chan.recv(99999)
    print output

    client.close()

    print '------End-----'+host+'------'


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект