Writing a cisco device’s config via snmp

A quick reference guide to commanding a cisco switch or router to write out it’s config using only snmp.

Note that cat-os devices have only the running config (all changes are stored to flash within about 3-5s) so there is no equiv for wr mem on a cat-os device.


IOS

Rather than type this up here, I’ll just refer you to the Cisco page on the subject: http://www.cisco.com/warp/public/477/SNMP/copy_configs_snmp.shtml


Cat OS

First, you’ll proabably want a copy of the CISCO-STACK-MIB file.

Second, I am assuming here that you’re using the net-snmp package, available from sourceforge.

What Symbolic OID Command Line
Set the target tftp server tftpHost .1.3.6.1.4.1.9.5.1.5.1 snmpset -IR SWITCH WRCOMM tftpHost.0 s targetserver
Set the target filename tftpFile .1.3.6.1.4.1.9.5.1.5.2 snmpset -IR SWITCH WRCOMM tftpFile.0 s filename
Tell the switch which line card’s config to upload (in this case, slot 1) tftpModule .1.3.6.1.4.1.9.5.1.5.3 snmpset -IR SWITCH WRCOMM tftpModule.0 i 1
Instruct the switch to begin uploading the config
Options: 2 -> d/l config
3-> upload config
4-> download os sw
5->upload os sw
6-> download firmware
7-> upload firmware
tftpAction .1.3.6.1.4.1.9.5.1.5.4 snmpset -IR SWITCH WRCOMM tftpAction.0 i 3
Wait for a result code tftpResult .1.3.6.1.4.1.9.5.1.5.5 snmpget -IR SWITCH WRCOMM tftpResult.0

tftpResult codes can be:

  1. inProgress
  2. success
  3. noResponse
  4. tooManyRetries
  5. noBuffers
  6. noProcesses
  7. badChecksum
  8. badLength
  9. badFlash
  10. serverError
  11. userCanceled
  12. wrongCode
  13. fileNotFound
  14. invalidTftpHost
  15. invalidTftpModule

Commanding an IOS based device to write it’s config to to flash

The CcCopyEntry table (which all these variables are children of) is a sparse table. You need to first come up with a random number to identify this transaction, and then use it for all the following commands. When you turn “ccCopyEntryRowStatus” to active (1), that entry in the table becomes read-only until it completes.

If you want to do this symbolically, you’ll need the CISCO-CONFIG-COPY mib.

For the purposes of this demonstration, we’ll use entry # 26.

What Symbolic OID Command Line
Set the source to be the running-config ccCopySourceFileType .1.3.6.1.4.1.9.9.96.1.1.1.1.3 snmpset -IR iosdevice wrcomm ccCopySourceFileType.26 i 4
Set the dest to be the startup-config ccCopyDestFileType .1.3.6.1.4.1.9.9.96.1.1.1.1.4 snmpset -IR iosdevice wrcomm ccCopySourceFileType.26 i 3
Start the transfer (set this variable to 1, aka “active”) ccCopyEntryRowStatus .1.3.6.1.4.1.9.9.96.1.1.1.1.14 snmpset -IR iosdevice wrcomm ccCopyEntryRowStatus.26 i 1
Check the status of the transfer ccCopyState .1.3.6.1.4.1.9.9.96.1.1.1.1.10 snmpget -IR iosdevice wrcomm ccCopyState.26

The possible values for ccCopySourceFileType and ccCopyDestFileType:

  1. networkFile (file on another network device)
  2. iosFile (a file on flash)
  3. startupConfig
  4. runningConfig
  5. terminal (put the file onto the console window. Interesting uses?)

The possible values for ccCopyState are:

  1. waiting
  2. running
  3. successful (done, entry no longer write protected)
  4. failed (done, entry no longer write protected)

Interested in why it failed? Check ConfigCopyFailCause (

  1. unknown (actual quote from mib: “very descriptive”)
  2. badFileName (check perms/file name/etc)
  3. timeout
  4. noMem
  5. noConfig (“the agent-config selected as the source was non-existant”)

Original: http://www.notarus.net/networking/cisco_snmp_config.html

Cisco rate-limit

Cisco LogoДавеча нужно было ужать трафик на кошк

Решено было воспользоваться rate-limit

Вот часть конфига, ограничение скорости для аксес листа 199 до 512 Кбит/с

interface FastEthernet0/0.100
 description -=[Downlink]=-
 encapsulation dot1Q 905
 ip address 10.1.1.1 255.255.255.252
 rate-limit input access-group 199 512000 96000 192000 conform-action continue exceed-action drop
 rate-limit output access-group 199 512000 96000 192000 conform-action continue exceed-action drop
end

Вот формула для расчета:

normal burst1024000/8*1.5
maximum burst(1024000/8*1.5)*2

Cisco AS5300 Bad Modems

При построении модемного пула на Cisco AS5300 возникла очень не приятная вещь, а именно:

В логах аксес сервера сыпались ошибки:

Nov 9 16:54:00: %MODEM-3-MODEMOOS: Modem number 1/56 is marked oos, Cause: Onhook/Offhook failure
Nov 9 16:57:09: %MODEM-3-MODEMOOS: Modem number 1/36 is marked oos, Cause: Onhook/Offhook failure
Nov 9 17:00:39: %MODEM-3-MODEMOOS: Modem number 1/13 is marked oos, Cause: Onhook/Offhook failure

Версия IOS`а была 12.3(17a)

После обновления до 12.3(20), ошибок меньше не стало 🙁

Да и при таких версиях осов количество "bad" модемов достигало 100 штук 🙁 и это-то при 70 активных сессий.

После понижения версии иоса до 12.2(17f), проблема с "bad" модемами решилась 🙂 AS5300.png

Правда ценой решения стало отсутствие в этой версии параметра Radius сервера ConnectInfo_start он же 77 атрибут радиуса.

P.S. В новых версиях исосах была такая команда show caller ip как оказалось в старых тоже была 🙂 только она по табуляции не подсказывается.

P.P.S.

И снова новости 🙂 На этот раз нашёлся такой вот баг:

In 3640 and 5300 platform running any version after 12.3(6), mica modems
may randomly marked as BAD

Решено было эксперементальным путём залить иос младше указанного выше.

Сказано, сделано. Как результат в кошке стал жить такой вот иос: c5300-is-mz.123-5f.bin

Все проблеммы исчезли + появились все вкусности 3-ей ветки ИОСа.