Перейти к публикации
iT4iT.CLUB
Kitsum

Автоматическое сохранение конфигурации на удаленном tftp сервере

Рекомендованные сообщения

Для данной процедуры использую автоматическое архивирование которое происходит при записи изменений в NVRAM.
Архивы хранятся на удаленном TFTP сервере.

Настройка маршрутизатора:

Router>enable
Router#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#archive
Router(config-archive)#path tftp://10.10.10.10/OBJ-NAME/$H
Router(config-archive)#write-memory
Router(config-archive)#^Z
Router#write
  1. OBJ-NAME - папка с именем агрегата\помещения\т.п (должна уже быть на TFTP сервере) для удобства поиска т.к это все потом будет съедать другая программа
  2. $H - имя устройства (устройство знает этот макрос как и $T - время создания архива)
  3. write-memory - создание архива происходит при изменении (записи в nvram) конфигурации

Можно сделать автоматическое создание архивов раз в день или как душе угодно

Router(config-archive)#time-period 1440

Просмотр созданных архивов

Router#show archive

Сравнение архивов

Router#show archive config differences tftp://10.10.10.10/router-1  tftp://10.10.10.10/router-2

Восстановление конфигурации из множества источников

Router#configure replace ?
  archive:    URL of config file that will replace running-config
  cns:        URL of config file that will replace running-config
  flash:      URL of config file that will replace running-config
  ftp:        URL of config file that will replace running-config
  http:       URL of config file that will replace running-config
  https:      URL of config file that will replace running-config
  null:       URL of config file that will replace running-config
  nvram:      URL of config file that will replace running-config
  rcp:        URL of config file that will replace running-config
  scp:        URL of config file that will replace running-config
  system:     URL of config file that will replace running-config
  tar:        URL of config file that will replace running-config
  tftp:       URL of config file that will replace running-config
  usbflash0:  URL of config file that will replace running-config
  xmodem:     URL of config file that will replace running-config
  ymodem:     URL of config file that will replace running-config

TFTP

Router#configure replace tftp://10.10.10.10/router-1

USB

Router#configure replace usbflash0:router-1

 

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Еще один интересный вариант, это воспользоваться планировщиком задач.
Любопытно, что CRON у CISCO называется KRON! Ну, Бог с ним, лишь бы работал.

Делаем копию текущей конфигурации раз в день, в час ночи:

cisco-test#configure terminal
cisco-test(config)#kron policy-list put_config_tftp
cisco-test(config-kron-policy)#cli show startup-config | redirect tftp://10.10.10.10/cisco-test-running-config
cisco-test(config-kron-policy)#exit
cisco-test(config)#kron occurrence daily at 1:00 recurring
cisco-test(config-kron-occurrence)#policy-list put_config_tftp
cisco-test(config-kron-occurrence)#^Z
cisco-test#write

 

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Столкнулся с проблемой сохранения конфига по сети на tftp сервер. Файл создаётся в директории с нулевым размером.

cr#wr
Building configuration...
[OK]
.....
%Error opening tftp://IP.IP.IP.IP/cisco-conf/IP.IP.IP.IP/1 (Timed out)

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

ip tftp source-interface ИМЯ_ИНТЕРФЕЙСА

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопрос такой:

Если я применяю

Router(config-archive)#path tftp://10.10.10.10/OBJ-NAME/$H-$T

Т.е. хочу сохранять файлы с именем устройства и временем создания архива, то получаю файл вида:

Building configuration...
[OK]
Translating "ftp"...domain server (ip) [OK]

Writing router-01-Apr-19-12:20:08-1 !

В формате даты hh:mm:ss он не запишет на FTP (он на винде) windows не поддерживает имена файлов с ":"

Если я тоже самое делаю на коммутаторе, то там сохранение происходит через "-"

switch-01#sho archive
The maximum archive configurations allowed is 14.
The next archive file will be named ftp://user:pass@ftp/router-01-Apr-19-12-24-46-4

Как поменять формат?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Никогда не задумывался о формате часов т.к в моем случае все архивы хранятся на машине под управлением Linux. Думаю, что формат времени жестко зашит в iOS.

Осмелюсь предложить сохранять архивы без указания метки времени в их названиях, а ориентироваться на данные от самого устройства о последнем созданном архиве, а также по дате создания файла на сервере под управлением Windows.

Router(config-archive)#path tftp://10.10.10.10/OBJ-NAME/$H
Router#sh arch
The next archive file will be named tftp://10.10.10.10/test/router-2
 Archive #  Name
   0
   1       tftp://10.10.10.10/test/router-1 <- Most Recent
   2
   3

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Смею предположить, что версия iOS у вас 12. На одном из моих устройств с такой версией как раз файлы сохраняются в таком формате. Всевозможные попытки смастрячить то-же самое на iOS 15 версии, не увенчались успехом, сохраняет с разделителем " - ". Как-то так... Может всё-таки развернуть tftp на unix ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: Kitsum
      Набросок небольшой программы на PHP для облегчения жизни IT отделу. Позволяет просматривать какие хосты располагаются на портах сетевого оборудования (за основу взято оборудование фирмы Cisco). Для связи используется SNMP протокол. Из информации об узле выводятся:
      MAC IP DNS имя Производитель оборудования Подробное описание можно посмотреть в следующей теме.
       
    • Автор: Kitsum
      Делюсь шаблоном для мониторинга состояния маршрутизаторов CISCO, zabbix 2.4
      Работа с устройством реализована по протоколу SNMP и тут есть ряд подводных камней, но самый основной это изменения стандарта от одной версии прошивки к другой.
      Если понадобится изменить OID значения, то поискать их можно тут http://tools.cisco.com/Support/SNMP/do/BrowseOID.do но часть старый параметров в базе отсутствует. Тут уж или через поисковик или "Селяви, что в перевод с древнегреческого - не повезло!".
      Простая конфигурация устройства:
      cisco-test#configure terminal Enter configuration commands, one per line. End with CNTL/Z. cisco-test(config)#snmp-server community public RO cisco-test(config)# Но при этом любой может подключиться к устройству и читать с него данные, если вы хотите чтобы плохие люди могли еще и отдавать команды то RO необходимо заменить на RW
      Если Вы желаете ограничить доступ к SNMP серверу устройства по IP, то необходимо использовать access-list:
      cisco-test#configure terminal Enter configuration commands, one per line. End with CNTL/Z. cisco-test(config)#ip access-list standard SNMP_ACCESS_RO cisco-test(config-std-nacl)#permit 192.168.1.2 cisco-test(config)#snmp-server community public RO SNMP_ACCESS_RO cisco-test(config)#^Z cisco-test# Сommunity можно обозвать как угодно, хоть BLABLABLA место public. IP естественно заменить на адрес Вашего сервера. RO - только чтение, RW - полный доступ
      Мы будем только читать, поэтому RO. В теории конечно можно отлавливать определенные события на устройстве и предпринимать ответные действия автоматически, только в таких случаях RW. Но об этом мы поговорим в другой раз.
      Теперь необходимо добавить макрос в zabbix Администрирование -> Общие -> Макросы
      {$SNMP_COMMUNITY} = имя community указанное в конфигурации CISCO, например "public" Сам шаблон можно забрать в конце поста.
      Немного о шаблоне.

      На данным момент собираются данные:
      Аптайм Модель маршрутизатора Загрузка центрального процессора за: 5 секунд, 1 минуту, 5 минут Статус (online\offline) Память: ОЗУ, ПЗУ Список доступных интерфейсов Статусы сетевых интерфейсов Количество byte RX\TX на каждом интерфейсе Количество error byte RX\TX на каждом интерфейсе По этим данным строятся соответствующие графики (ОЗУ, ПЗУ и т.п не выведены, можете добавить самостоятельно)
      Пока маловато триггеров, но по мере обновления шаблона, их количество увеличится:
      Маршрутизатор выключен или с ним нет связи по Ethernet Маршрутизатор был пере запущен менее 5 минут назад Нагрузка на ЦП выше 80%  PS: следите за обновлениями!
      zbx_templates_router_cisco.xml
    • Автор: Kitsum
      Update 03.12.2015
      Добавлена возможность отображать DNS имена для определенных хостов, это позволит явно и человеко-понятно идентифицировать соответствующие узлы в сети. Отсутствие записи на DNS сервере должно привлечь соответствующее внимание к хосту.  
      В конфигурацию добавлен параметр $domain позволяющий удалять из DNS имени хоста имя домена. Чтобы из name.domain.com сделать name, необходимо указать $domain = ".domain.com" Обновлена база производителей сетевого оборудования - oui.txt Мелки доработки интерфейса.  
      Update 26.11.2015
      Добавлена возможность отображать реальные имена портов (Fa1, Ethernet1/0/1, Port1 ...). Внимание: не все устройства способны передавать данную информацию, в связи с этим оставлены числовые идентификаторы, чтобы в таких случаях иметь систему идентификации.  
      Добавлена возможность описывать в конфигурации настройки для каждого устройства отдельно. Если не использовать эту возможность, то для оборудования будет применена общая конфигурация. Добавлена возможность описывать в конфигурации уникальные OID-ы для конкретного оборудования аналогично п.2. Мелкие доработки интерфейса и кода.  

      В данной теме мы будем рассуждать о мониторинге сетевого оборудования и подключенных к нему хостах. Следовало бы разместить её в другом разделе, но 90% всех манипуляций и дальнейшая эксплуатация будет производиться на UNIX-подобной платформе. В моем случае используется:
      Linux Ubuntu 14.04 Apache/2.4.7 PHP 5.5.9 Библиотека php5-snmp Также само сетевое оборудование (маршрутизаторы и свичи) должно поддерживать работу по протоколу SNMP и соответствовать стандартам ISO.
      Проект разработан отталкиваясь от топологии сети - звезда. Имеются множество отдельных подсетей 192.168.0.0 все они ходят во внешний мир через маршрутизаторы (в моем случае фирмы Cisco). В самих подсетях используются различные свичи, по большей части поддерживающие SNMP v1 и выше.
      Ранее я уже поднимал данную тему на другом, дружественном, форуме, но потом работа над проектом бала остановлена. На данный момент вопрос опять стал актуален и решено переделать как основную программу, так и внешний вид. Старая версия была написана на скорую руку и выглядела невзрачно и с большими изъянами в коде.
      На данный момент проект преобразился и выглядит следующим образом. Ваш браузер должен поддерживать HTML5.
      Чтобы избежать вопроса "зачем это нужно?" предлагаю Вам задачку. Попробуйте назвать номер порта на свиче к которому подключен компьютер дяди Васи зная лишь его IP. Или еще интереснее - зная лишь производителя его сетевого оборудования. Или вопрос от начальника "Скажи мне, кто подключен к этому свичу, а я пока узнаю, кого нужно искать".
      Раньше это делалось следующим образом. Подключаемся к маршрутизатору и спрашиваем, какой MAC принадлежит интересующему нас IP, пусть это будет 192.168.0.3
      cisco-router#sh arp | include Vlan1 Internet 192.168.0.1 210 0800.0694.d027 ARPA Vlan1 Internet 192.168.0.2 210 0800.bdf0.0010 ARPA Vlan1 Internet 192.168.0.3 210 000e.be08.001c ARPA Vlan1 Internet 192.168.0.4 210 000e.42ee.20cf ARPA Vlan1 Internet 192.168.0.5 210 0800.218e.be09 ARPA Vlan1 Internet 192.168.0.6 5 20cf.0800.000e ARPA Vlan1 Internet 192.168.0.7 - 001c.0010.000e ARPA Vlan1 Internet 192.168.0.8 6 0010.1fc4.0800 ARPA Vlan1 Internet 192.168.0.9 2 d027.0694.0800 ARPA Vlan1 ... Теперь мы знаем MAC, это 000e.be08.001c. Подключаемся к свичу и просим его показать нам таблицу MAC адресов с сортировкой по конкретному MAC-у.
      cisco-switch#sh mac-address-table | include 000e.be08.001c 000e.be08.001c Dynamic 1 FastEthernet21 Теперь мы знаем, что интересующий нас (или не нас) хост использует порт FastEthernet21
      Все прошло относительно быстро и гладко. Но что делать, если порт имеет порядковый номер превышающий общее число физических портов на свиче, оборудование разных производителей и оно не поддерживает одинаковый формат MAC адресов, отсутствуют различные фильтры, как например "include" в оборудовании Cisco. При этом может быть несколько свичей с десятками хостов. Все это повлияет на время поиска и на конечный результат.
      Реализация
      Мы знаем, что и у какого оборудования спрашивать. Так и давайте спрашивать это используя SNMP протокол. Первым делом необходимо настроить Ваше сетевое оборудование, выставить необходимые разрешения и community. Описывать этот пункт нету смысла т.к у Вас своё оборудования, а у дяди Васи совсем другое.
      На сервере, где установлен Apache необходимо доставить библиотеку реализующий работу snmpwalk в PHP
      apt-get install php5-snmp service apache2 restart На самом деле большая часть работы уже сделана. Теперь необходимо скачать сам скрипт, он будет прикреплен к данному посту и отредактировать его под себя.
      Редактируем .htaccess
      RewriteEngine On Options +FollowSymlinks Options -MultiViews RewriteBase /switch/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) index.php?$1 [L] Убедитесь, что у Вас подключен модуль mod_rewrite и измените относительный путь указанный в RewriteBase на удобный Вам. Если закинуть каталог switch в корневую веб директории Apach, то вносить изменений в файл не нужно.
      Редактируем index.php
      $url = 'http://'.$_SERVER["HTTP_HOST"].'/switch/'; $domain = '.domain.com'; $community = 'public'; $unit = array( 'network_id' => array( 'name' => 'Желаемое для отображения имя подсети или объекта где сеть эксплуатируется', 'router' => '192.168.1.1', 'switch' => array('192.168.1.2'), ), 'object_name' => array( 'name' => 'Желаемое для отображения имя подсети или объекта где сеть эксплуатируется', 'router' => '192.168.2.1', 'switch' => array('192.168.2.2', '192.168.2.3', '192.168.2.4'), ), // UPDATE 26.11.2015 'new_object' => array( 'name' => 'new object name', 'router' => '192.168.3.1', 'switch' => array('192.168.3.2', '192.168.3.3'), // Уникальные настройки для маршрутизатора 192.168.3.2 '192.168.3.1' => array( 'community' => 'public2', ), // Уникальные настрокий для свича 192.168.3.3 '192.168.3.3' => array( 'community' => 'public3', 'ifName' => '.1.3.6.1.2.1.31.1.1.1.1', 'dot1dBasePortIfIndex' => '.1.3.6.1.2.1.17.1.4.1.2', ), ), ); Мы старались сделать конфигурацию интуитивно понятной, получилось это или нет, спорный вопрос. Поживем увидем, а пока разберем, что тут к чему.
      $url - содержит http адрес до каталога со скриптом. Измените /switch/ на используемый Вами network_id, object_name - любой понравившийся идентификатор для подсети. Используйте латиницу и\или цифры и не используйте пробелы. name - описание для подсети. Оно будет отображаться в списке на главной странице скрипта и в навигационном баре router - IP адрес маршрутизатора, через который подсеть ходит во внешний мир switch - список IP адресов свичей используемых в подсети Можно производить уникальную конфигурацию для любого сетевого устройства. Для этого в конфигурации нужного объекта необходимо указать адрес устройства и описать массив настроек для него. Можно изменять абсолютно любые существующие значения в скрипте. ВНИМАНИЕ: если Вы не понимаете, за что отвечает та или иная переменная и как устроена эта кухня, лучше обратитесь к нам, и мы Вам обязательно поможем!
      Список рекомендуемых для изменения значений (описание значений имеется в самом скрипте):
      community atPhysAddress sysDescr dot1dTpFdbAddress dot1dTpFdbPort dot1dBasePortIfIndex ifName Определение производителя по MAC адресу
      Каждому производителю выделяется определенный список MAC адресов для использования в его сетевом оборудовании. Ознакомиться с этим списком можно по адресу http://standards-oui.ieee.org/oui.txt Мы включили этот файл в состав архива, но советуем Вам периодически обновлять его.
      В скрипте используется shell_exec
      $vendor = explode('(hex)', shell_exec("cat ./oui.txt | grep ".str_replace(' ', '-', substr($mac, 0, 8)))); Это потенциально не безопасно, но мы не передаем ей данные полученные от пользовательского ввода, только MAC адреса. В любом случае shell_exec должен быть разрешен или часть кода, отвечающая за определения производителя, должна быть удалена.
      Есть очень интересная статья на сайте CISCO. Она поможет Вам разобраться в принципах работы данного скрипта. К сожалению я узнал об этой статье уже после написания большей части кода программы. Но уже имеются идеи для следующей версии!
      PS: Если все сделано правильно, то Вы сможете насладится нашим велосипедом. Проект будет дорабатываться и обрастать всяческими "свистульками". Приятного использования 😃
       
    • Автор: Maerhekil
      Бывает так случается, что мы замечаем, что через устройство проходит какой-то необычно большой трафик.
      Что же, сейчас посмотрим  кто там усиленно старается что-то скачать.
      Заходим в интерфейс с которого будем снимать статистику
       
      home-cisco#conf t home-cisco(config)#int fa0/0 home-cisco(config-if)#ip flow ingress home-cisco(config-if)#ip flow egress home-cisco(config-if)#exit home-cisco(config)# Ну а потом в режиме глобальной конфигурации настраиваем параметры отображения
       
      home-cisco(config)#ip flow-top-talkers home-cisco(config-flow-top-talkers)#top 20 home-cisco(config-flow-top-talkers)#sort-by bytes home-cisco(config-flow-top-talkers)#cache-timeout 100 home-cisco(config-flow-top-talkers)#end home-cisco#wr Building configuration... [OK] home-cisco# И смотрим кто там у нас, командой sh ip flow top-talkers .
      Удачи!
    • Автор: Maerhekil
      На сей раз мы настроим подключение по протоколу PPPOE от провайдера. Конечно сейчас уже мало таких способов предоставлять услуги интернета, но всё же ещё встречаются.
      Начнём.
      Подготовим интерфейс
      home-cisco#conf t home-cisco(config)#int Fa0/1 home-cisco(config-if)#no ip address home-cisco(config-if)#pppoe enable home-cisco(config-if)#pppoe-client dial-pool-number 1 home-cisco(config-if)#exit home-cisco(config)# Создадим новый интерфейс
      home-cisco(config)#interface Dialer1 home-cisco(vonfig-if)#ip address negotiated home-cisco(vonfig-if)#ip mtu 1492 home-cisco(vonfig-if)#encapsulation ppp home-cisco(vonfig-if)#dialer pool 1 home-cisco(vonfig-if)#no cdp enable home-cisco(vonfig-if)#ppp authentication chap callin home-cisco(vonfig-if)#ppp chap hostname ВАШ-ЛОГИН home-cisco(vonfig-if)#ppp chap password ВАШ-ПАРОЛЬ home-cisco(vonfig-if)#exit home-cisco(config)# Пропишем маршрут по умолчанию
      home-cisco(config)#ip route 0.0.0.0 0.0.0.0 Dialer1 home-cisco(config)# Проверим соединение
      home-cisco(config)#end home-cisco#ping 8.8.8.8 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 8.8.8.8, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 12/13/16 ms home-cisco# Если всё нормально, то мы получим ответ от адреса который пинговали.
      Итак, на устройстве интернет у нас появился, но надо раздать нам его во внутреннюю сеть, приступим.
      Идём на локальный интерфейс который мы настраивали ранее тут
      home-cisco#conf t home-cisco(config)#int fa0/0 home-cisco(config-if)#ip nat inside home-cisco(config-if)#exit home-cisco(config)# Далее на интерфейс который создали
      home-cisco(config)#int Dialer1 home-cisco(config-if)#ip nat outside home-cisco(config-if)#exit home-cisco(config)# Создадим список доступа (по желанию)
      home-cisco(config)#ip access-list extended НАЗВАНИЕ-СПИСКА-ДОСТУПА home-cisco(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 any home-cisco(config-ext-nacl)#deny ip any any home-cisco(config-ext-nacl)#exit home-cisco(config)# И конечный штрих
      ip nat inside source list НАЗВАНИЕ-СПИСКА-ДОСТУПА interface Dialer1 overload Всё, всем устройствам в вашей сети стал доступен интернет.
      Естественно, как я уже повторял, в некоторых случаях нужно производить другие настройки. Пишите.
      Если у нас не PPPOE соединение, так называемый прямой интернет  то всё намного проще.
      На внешнем интерфейсе, у нас это fa0/1 прописываем:
      home-cisco#conf t home-cisco(config)#int fa0/1 home-cisco(config-if)#ip nat inside home-cisco(config-if)#ip add DHCP (если провайдер нам не предоставил статический адрес или статика по DHCP) home-cisco(config-if)#ip add ИП-АДРЕС МАСКА-СЕТИ (если провайдер нам дал статику без DHCP) home-cisco(config-if)#exit home-cisco(config)# Меняем строку с правилом. А так-же Шлюз по умочанию.
      home-cisco(config)#ip nat inside source list НАЗВАНИЕ-СПИСКА-ДОСТУПА interface fa0/1 overload home-cisco(config)#ip route 0.0.0.0 0.0.0.0 ШЛЮЗ-ПРОВАЙДЕРА home-cisco(config)#exit home-cisco# Из всего остального оставляем только список доступа, ну и естественно ip nat inside на внутреннем, у нас это fa0/0.
      Вообще с PPPOE от провайдера бывают частенько танцы с бубном.
      Возможно я что-то упустил, у меня бывает. Если так, то поправьте.
      Enjoy.
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×