Показаны сообщения с ярлыком настройка. Показать все сообщения
Показаны сообщения с ярлыком настройка. Показать все сообщения

пятница, 15 января 2016 г.

массовая настройка маршрутизаторов Cisco по ssh (mass configuring cisco router via ssh)

Написал небольшой скрипт как пример массовой настройки маршрутизаторов Cisco по ssh на python.
Использовал paramiko, а не модуль clogin из rancid, потому что было интересно уменьшить зависимости.

От других подобных скриптов мне кажется отличает такое
1) за счет ожидания wait for string работает и на каналах с большой латентностью (спутниках и наземных в перемешку)
2) в тоже время за счет выноса цикла отправки и ожидания ответа в функцию код получается более-менее компактным и добавлять команды довольно просто
3) за счет getpass получается скрытый ввод пароля
4) да и вообще в скрипте не храняться учетные данные
5) так как в моем списке ip могут попадаться и неактивные устройства, то используется try и  expect  для вывода адресов, до которых не удалось достучаться.
 
#!/usr/bin/python
#for work with SSH we need paramiko pip install paramiko
import paramiko
import getpass
#build in library socket for with exception
import socket
list_bad_ip=[]
client = paramiko.SSHClient()
#for connection via ssh you need to accept SSH keys
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#create function for send command and check answer
def send_string_and_wait_for_string(command, wait_string):
#send command
    shell.send(command)
#clear buffer
    receive_buffer = ""
#until receive WAIT_STRING - remote device ready
    while not wait_string in receive_buffer:
        receive_buffer += shell.recv(1024)
#read list of IPs from text file one by line
ips = [i.strip() for i in open("./1")]
username1 = raw_input("enter login :")
password1 = getpass.getpass("enter password :")
#create loop for each IPs
for ip in ips:
#if we use try easy to work with expection
    try:
#connect to device
        client.connect(ip,port=22,username=username1,password=password1)
#check state
        print "connect to ",ip
        shell = client.invoke_shell()
#wait for enable
        send_string_and_wait_for_string("", "#")
#enter conf t and wait for #
        send_string_and_wait_for_string("conf t\n", "(config)#")
#enter command and wait for return to #
        send_string_and_wait_for_string("login on-failure log\n","(config)#")
        send_string_and_wait_for_string("login on-success log\n","(config)#")
#end is important, exit worse in this case
        send_string_and_wait_for_string("end\n","#")
#don't forget store in flash
        send_string_and_wait_for_string("wr mem\n","#")
#we are near end with device
        print ip+" ok"
#close with this device
        shell.close()
        client.close()
#work with timeout error
    except socket.error:
        print ip + '=== Device unreachable'
#add ip with errors to list
        list_bad_ip.append(ip)
#save this list to file
with open('bad_ip', 'w') as f:
    for s in list_bad_ip:
        f.write(s + '\n')
#show list at the screen for lazy admin
print list_bad_ip

среда, 14 октября 2015 г.

Идея для очистки Cisco ACL IOS на маршрутизаторах

Условия:
  • Есть большое количество маршрутизаторов
  • ACL большого размера
  • ACL более менее похожи
  • ACL используют локальные адреса в качесте source
Идея:
Удалить неиспользуемые правила хотя бы более менее массово, чтобы сделать acl читаемыми человеком

Вариант решения:

  • Зайти на маршрутизатор, выбрать из ACL одного типа все destination у которых счетчики равны 0. 
  • Зайти на следующий маршрутизатор выбрать  destination у которых счетчики равны 0, сравнить с предыдущим, оставить только одинаковые
  • Зайти на следующий маршрутизатор.
В моем случае процент кандидатов на удаление очень приличный



четверг, 16 июля 2015 г.

Cisco NX OS кое что полезное

На устройстве nx/os можно хранить версии конфигов чуть удобнее чем раньше
http://www.cisco.com/c/en/us/td/docs/switches/datacenter/sw/5_x/nx-os/system_management/configuration/guide/sm_nx_os_cg/sm_7rollback.html

Раньше для этого применяли просто копирование
 copy run file (были особенности на разных устройствах, но можно было иметь под рукой конфиг

Разницу между сохраненным конфигом (checkpoint) и например текущим конфигом можно посмотреть так
http://www.cisco.com/web/techdoc/dc/reference/cli/nxos/commands/sec/show_diff_rollback-patch_running-config.html

Разницу в состоянии интерфейсов например так

show interface port-channel 10 | diff

только ввести команду надо пару раз
во втором увидим разницу

список всех комманд вводимых на устройстве с NX OS за последнее время

show accounting log | i нужные слова для поиска

быстрый обзор трафика на всех интерфейсах при выводе
show interfac | egrep eth|rate  (обращаю внимание на "или"= |)

очень полезная команда, чтобы найти нужный nexus (нужное шасси) включив индикацию на модуле

locator-led дальше по ?




среда, 18 марта 2015 г.

CDR Cisco Callmanager (CUCM) в легкочитаемый человеком вид

Для анализа CDR от Cisco CallManager нашел три более-менее удобных способа
Для любого из них нужно сначала
1) Залогиниться в CUCM CAR
2) выгрузить в csv CDR (при выгрузке отключите CMR будет немного меньше избыточных для простых задач данных)

Обработка
1)  открыть в excel и убрать вручную избыточные столбцы, привести формат даты и времени из unix формата timestamp в человекочитаемый формат, например с помощью двух формул. То есть добавил два столбца, вставил формулу и протянул мышкой вниз.

=(((C1/60)/60)/24)+ДАТА(1970; 1; 1) - дата
=(((C1/60)/60)/24)                                     - время

2) просмотреть с помощью небольшой утилиты с форума supportforum.cisco.com 
cisco 
https://learningnetwork.cisco.com/thread/50029?start=15&tstart=0
 прямая ссылка на всякий случай
https://dl.dropboxusercontent.com/u/53426117/PermLinks/UCMcdr.exe

3) красивый способ 

Взято здесь http://yurisk.info/2014/05/12/cisco-cucm-cdr-report-call-duration-and-called-numbers-extraction-script/

 awk -F,'BEGIN {OFS=","} {print strftime("%c",$5),$9,$31,$56}'report_cdr
Вместо report_cdr использовать ваше имя файла с отчетами
Такую строку удобно использовать в других, более сложных скриптах
Если просто обработать, то не забываем в конце добавить например
awk-F, 'BEGIN {OFS=","} {print strftime("%c",$5),$9,$31,$56}' report_cdr  перенаправляем в report.csv

воскресенье, 24 февраля 2013 г.

Seagate FAT+ ex.ua fs.ua

  1. Виды прошивок
  2. На плейере seagate fat+ есть две группы прошивок: до 1.55 и после.
    До 1.55 есть определенное количество прошивок написанных любителями-владельцами.
    Например, в них есть более крупный шрифт и дополнительные сервисы.
    Но однажды обновив устройство до 1.55 все эти сервисы становятся недоступны.
    Но раз назад дороги нет, остается вперед.
  3. Правильная прошивка

  4. Тогда нужно обновится до версии 2.20 EMEA (так называемый холодный метод файл на флешке и зажатый на 10 секунд reset  при включении.
    После этого нужно обновится до 2.23, но не с сайта seagate, а с разблокированным telnet и самое важное автозапуском. Процесс обновления с версии 2.20 на версию 2.23 - одна команда. 
Но подготовка:
- У меня получилось перепрошиться только если я подключал seagate fat+ кабелем Ethernet. Со вставленным wifi адаптером не получалось.
- Заходим telnet на плейер. Логин root без пароля.
- Вставляем флешку в формате fat32 желательно небольшого размера с файлом install.img. У меня нашлась 256 Мб со светодиодами (удобно видеть есть ли прогресс, а не просто ждать).
- Вводим команду kill -6 1. Ждем.



  • 3. Установка mos3service
  • Заходим с помощью telnet. Переходим во временную папку
    cd /tmp
    Скачиваем скрипт установки
     wget http://www.moservices.org/mos3/install 
    Говорим операционной системе плейера, что файл install это программа
    chmod +x install
    запускаем программу install из текущего каталога ./install.
    В моем случае возникли проблемы при старте web сервера.
    /usr/local/etc/mos/bin/php: can't resolve symbol '__isnan'
    /usr/local/etc/mos/bin/php: can't resolve symbol '__isnan'

    Помогло три вещи
    1. cd /tmp

      wget http://www.moservices.org/patches/lib.tar.bz2
      tar xjf lib.tar.bz2 -C /usr/local/etc/mos/lib/
    2. Пока возился переставил libiconv
    3. Прочитал скрипт установки (выполнил еще раз последнюю часть там где переменные окружения. Зашел на ip адрес/index.php  

    среда, 10 октября 2012 г.

    windows 7 prof из русского в английский

    Принесли ноутбук sony с купленной русской win7 prof. Нужен не русский язык, а английский. Скачиваем диск с language pack. Внимание там 3,5 Гб. Распаковываем iso, например, с помощью 7zip. Нам нужен в папке en-US файл lp.cab. Дальше четко по инструкции по установке русского языка (ну естественно заменяя ru ru на en US в нужных местах). Инструкция по установке русского есть, например, на ru-board.
    Не испытывая сомнений ставим через f8 и первый пункт.

    суббота, 2 мая 2009 г.

    Не нужно боятся оборудования

    Несколько дней назад мне пришлось помогать клиенту настраивать весьма нечасто встречающееся оборудование SDH мультиплексор Sagem adr-155c. Вернее построить SDH кольцо из трех узлов. Да зубры SDH три узла на MUX скажут - мелочь.
    Но мне было приятно построить первое SDH кольцо в своей жизни. Особенно, перестраивая уже работающие участки сети, в которых шло некоторое количество (больше полутора десятков) уже работающих E1 потоков.

    Почему я взялся за это с организационной точки зрения, потому что специалиста именно по этим мультиплексорам не нашлось среди моих знакомых.
    Были слухи что раньше их использовал Golden, но живых инженеров не удалось найти :).

    Какие материалы использовал:
    • описание вариантов применения (кольца, точка-точка и как ее подвариант цепочка) нашел на нескольких сайтах как описание устройства
    • инструкция по настройкек устройству. На сайте производителя не нашел, только на одном из харьковских сайтов
    • презентация по применению (самая полезная - серьезно ключи для поиска в google sagem adr 155c ppt и на ftp лежит)

    Исходные условия:

    есть центральная точка (А), от которой идут stm-1 в точку B и точку C. Есть канал B-C.
    В нормальном случае работает канал А- С. При аварии канала А-С, а мультиплексор С допускаем выживает, требуется такой алгоритм переключение. Начинает работу канал A-B, но часть потоков идет транзитом через точку B в C.
    Идея настройки- в точка А настраивается какой А-С резервируется -А-В, а в точке B- транзит части слотов в С.

    Решил поделится замечаниями, вдруг кому то нужно

    1. устройства управляются по HTTP, хорошо, что не slip (как у некоторых российсих мультиплексоров), но пункт в выборе маршрутизации none (варианты - none, RIP, OSPF) , означает не static - а таки none (легко потерять доступность удаленных устройств). Совсем как у старых маршрутизаторов Nortel.
    2. устройство убирает выбранные поля для переключения , поэтому для того сделать транзит (приходит с первого STM-1 уходит на второй stm-1 , если нет в выборе, а не настроено для преобразование на порты e1, которые встроены в материнскую плату, они начинаются с m. Кстати, распайка этих портов довольно оригинальная - на один разьем выведены все передачи от двадцати одного E1, на второй разьемы все приемы двадцати одного e1
    3. в устройствах есть две идеи резервирования
    • режим MSP (для режима точка, точка)
    • два режима SNCP (SNCP/I и SNCP/N - отличаются какие условия принимаются во внимание при переключении)Кнопка 1+1 относится все таки к точка точка (полностью переключает каналы)
    С чего начать настройку
    с последней страницы презентации.
    Позволю себе перевести - "Прежде всего - Планируйте!"

    1. Набросайте схему. ( от себя напишите название устройства, адреса IP, что куда должно идти)
    2. Планируйте соединения между ADR ( от меня - Проверьте что вся оптика скомутирована на те патч-панели, и так как вы ожидаете)
    3. Настройте IP адреса. (от меня при первой настройке проверьте что в вашем ноутбуке есть COM порт)
    4. Вставьте модули (от меня проверьте все ли модули находятся в service)
    5. Настройте PPP между устройствами ( от меня вполне можно использовать unnumbered)
    6. Настройте источники синхронизации и их приоритетность (от меня разберитесь в презентации есть вся информация, даже если вы очень смутно помните как работает SDH)
    7. Настройте что куда передавать (этот e1 сюда, если у вас есть еще ethernet модули соответственно - у меня не было)
    8. Разрешите мониторить E1 (просто разрешил и все)

    Что не доделал - автоматический возврат на основной канал. Заказчика устраивает. Значит меня тоже :). Главное - не боятся.

    P.S. Для полной уверенность можно перед настройкой быстро пролистать курс о SDH например Ростелеком