我有一个实验室设置,正在尝试通过SNMP使用SCP到cisco路由器。我找到了一些在线文档,例如:http://ccie20728.wordpress.com/2008/05/20/get-the-cisco-在snmp上进行配置/

这是我的高级设置。在路由器上:

R1(config)# username cisco password cisco
R1(config)# ip domain-name somedomain.com
R1(config)# crypto key generate rsa general-keys modulus 1024
R1(config)# aaa new-model
R1(config)# aaa authentication login cisco local
R1(config)# aaa authorization exec cisco local
R1(config)# ip scp server enable
R1(config)# line vty 0
R1(config)# login authentication cisco
R1(config)# snmp-server community cisco RW


为了使路由器充当SCP服务器,需要使用以上cmd启用。在ubuntu服务器上,我已经安装/正在运行openSSH并执行以下cmds:

snmpset -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.2.111 i 4
snmpset -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.3.111 i 4
snmpset -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.4.111 i 1
snmpset -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.5.111 a <svr ip addr>
snmpset -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.6.111 s cisco.txt
snmpset -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.7.111 s cisco
snmpset -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.8.111 s cisco
snmpset -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.14.111 i 1


然后检查状态是什么,我通过以下方式执行snmpget和/或snmpwalk :

snmpwalk -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.10.111


当我运行它时,我得到整数(2),这意味着它正在运行,然后它变为整数(4),这意味着它失败了。

然后检查失败的原因:

snmpwalk -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.13.111


,我得到整数(2),表示“错误文件名”。

所以我尝试了上面“ .6.111字符串”的文件名的不同排列,包括不同的文件扩展名,带有或不带有连字符,与运行config cmds相同的文件名,甚至指定了绝对路径文件名,但没有似乎可以正常工作。上班吗?

评论

这是我用于文档编制的另外两个链接:tools.cisco.com/Support/SNMP/do/…和cisco.com/en/US/tech/tk648/tk362/…

为了丢弃SCP服务器上的问题,如果您从路由器手动运行副本,它是否可以正常工作?我似乎记得一些TFTP服务器,它不允许我们在写入时创建新文件,因此首先我们必须在服务器端创建一个空文件,然后使用目标文件指向空文件名运行复制文件

是的,我也尝试通过scp从路由器到服务器手动进行此操作,效果很好。即使以前没有创建空文件,我也可以手动将文件复制到服务器。

有什么答案对您有帮助吗?如果是这样,您应该接受答案,这样问题就不会永远弹出来寻找答案。或者,您可以发布并接受自己的答案。

#1 楼

我只是在CPE上尝试过此操作:

[ytti@lintukoto ~]% cat moi2.sh 
#!/bin/sh

snmp="snmpset -v2c -cfoo bu.ip.fi"

$snmp 1.3.6.1.4.1.9.9.96.1.1.1.1.2.9 i 4 \
      1.3.6.1.4.1.9.9.96.1.1.1.1.3.9 i 4 \
      1.3.6.1.4.1.9.9.96.1.1.1.1.4.9 i 1 \
      1.3.6.1.4.1.9.9.96.1.1.1.1.5.9 a 91.198.120.2 \
      1.3.6.1.4.1.9.9.96.1.1.1.1.6.9 s filename \
      1.3.6.1.4.1.9.9.96.1.1.1.1.7.9 s username \
      1.3.6.1.4.1.9.9.96.1.1.1.1.8.9 s password \
      1.3.6.1.4.1.9.9.96.1.1.1.1.14.9 i 4
sleep 10
$snmp 1.3.6.1.4.1.9.9.96.1.1.1.1.14.9 i 6
[ytti@lintukoto ~]% 


将配置(4)运行到网络(1)的副本,通过交换这些副本,您可以更改方向正在运行)。 @daniel还提到您的'14'或'rowstatus'是错误的,您使用1'active',而应该使用4'createAndGo'。

评论


刚刚通过将“ 14”更改为整数4再次尝试,仍然在数据包中出现错误,原因:值不一致。我什至像每次一样都用“ 6”清除了snmpset。顺便说一句,您能够使其与上面的设置一起使用吗?

–user1609
2013年6月10日21:25



是。以上在运行15.1(2)T5的881G上正常工作。我添加了脚本的输出。如果索引/ id(9)挂了,那么我会收到同样的“不一致的价值”投诉,那么很长一段时间您才能销毁它。您可以使用新鲜的索引/ ID进行测试以确保。

–ytti
13年6月10日在21:38

尝试了不同的索引/ ID,仍然没有发生。我将尝试其他设备。可能实际上不支持此特定设备。事实是,即使在cisco mib和软件矩阵中,它也表明我正在测试的当前IOS支持这些MIB。

–user1609
2013年6月10日21:47

到现在为止,它已经很老了,大概是5 <10年。所以可能不是。通过IOS CLI可以完成此工作:'copy running-config scp:// username:password @ server / filename'

–ytti
13年6月10日在21:50

是的,从路由器到服务器的手动scp复制工作正常。我什至可以创建一个kron调度程序或EEM脚本来执行此操作,并且从路由器到服务器的scp都可以正常工作。只是不通过snmp ...

–user1609
2013年6月11日5:12

#2 楼

根据Cisco SNMP Object Navigator,1.3.6.1.4.1.9.9.96.1.1.1.1.3不支持值4。取而代之的是,值2表示运行配置: >
实际上似乎SNMP Object Navigator和MIB定义之间存在矛盾,因为ccCopySourceFileTypeccCopyDestFileType的类型是ConfigFileType,并且根据MIB定义:

Object  ccCopySourceFileType
OID     1.3.6.1.4.1.9.9.96.1.1.1.1.3
Type    ConfigFileType
1:startupConfig
2:runningConfig
Permission  read-create


这似乎得到了ytti的回答的支持

评论


是的,我也在mib中看到了这一点,但是即使将其更改为2的整数,我也会收到一条错误消息:*** snmpset -c -v 2c 1.3.6.1.4.1.9.9 .96.1.1.1.1.3.111 i 2数据包中的错误。原因:错误值(设置值非法或以某种方式不受支持)失败的对象:iso.3.6.1.4.1.9.9.96.1.1.1.1.3.111 ***我也尝试使用.3和进行不同的排列。 4,在两种情况下整数都可能不同。我正在尝试从路由器复制到服务器,据我所知,是将run-cfg复制到networkfile。

–user1609
13年6月10日在21:08

我认为矛盾可能是因为有两代复制mib。原始版本非常简单/笨拙,只执行了tftp,我不记得了,但是也许在那个时代1是启动,2正在运行。

–ytti
2013年6月10日21:41

那是个很好的观点。因此,似乎是通过代码升级进行了更改。

–user1609
13年6月10日在21:48

(出于多种原因)折旧了“ write-net” mib,而采用了“ config-copy” mib,这仍然是目前的做法。

–瑞奇
2013年6月11日18:57

#3 楼

我之前曾发布过此文章:http://checkforbees.com/router-backup/

我认为您的问题出在多个snmpset上。您必须首先创建条目来执行此操作。 [14.xxx = 5(createAndWait)]然后,您可以根据需要设置条目,然后将rowStatus设置为“ 1”(活动)。

[注意:我的脚本已有数十年历史,因此它们重新调整为tftp。]

[root:pts/6{8}]debian1:/tmp/[01:32 AM]:./test.sh
CISCO-CONFIG-COPY-MIB::ccCopyProtocol.111 = INTEGER: scp(4)
CISCO-CONFIG-COPY-MIB::ccCopySourceFileType.111 = INTEGER: runningConfig(4)
CISCO-CONFIG-COPY-MIB::ccCopyDestFileType.111 = INTEGER: networkFile(1)
CISCO-CONFIG-COPY-MIB::ccCopyServerAddress.111 = IpAddress: 192.168.55.25
CISCO-CONFIG-COPY-MIB::ccCopyFileName.111 = STRING: cisco.txt
CISCO-CONFIG-COPY-MIB::ccCopyUserName.111 = STRING: cisco
CISCO-CONFIG-COPY-MIB::ccCopyUserPassword.111 = STRING: cisco
CISCO-CONFIG-COPY-MIB::ccCopyEntryRowStatus.111 = INTEGER: active(1)
..
Status: successful []
CISCO-CONFIG-COPY-MIB::ccCopyEntryRowStatus.111 = INTEGER: destroy(6)
[root:pts/6{8}]debian1:/tmp/[01:32 AM]:ls -l cisco.txt
-rw-r--r-- 1 root root 15790 Jun 12 01:32 cisco.txt


我正在循环运行... 10.111(状态)。我怀疑您从未删除过“ 111”条目。否则,这就是您使用Linux机器的ssh服务器对2960S进行snmpset的确切序列。 (如我的提示所示,是一个debian框。)

评论


我按照您的建议尝试了,但还是没用:-(。我遇到了同样的失败和失败的原因。我想知道对于这个特定的IOS代码,是否一定是一些错误,然后才可以。12.2(33)SCF4

–user1609
2013年6月11日5:38

您正在使用什么设备?

–瑞奇
2013年6月11日18:56

在cisco ubr10k CMTS上进行了我的测试,也尝试了cisco 3725(12.4T代码),得到了相同的结果

–user1609
2013年6月12日下午5:01

badFilename也可能表示ssh登录失败,但是我得到了一个noConfig(5)。 (这与应该说的相反)

–瑞奇
2013年6月12日下午5:53

我从12.4T得到badFileName(2)。 (2960S为15.x)

–瑞奇
2013年6月12日下午6:01

#4 楼

检查此处:如何在使用SNMP的Cisco IOS路由器之间复制配置文件和从中复制配置文件

ccCopyProtocol更改为所需的传输方法:
> ftp
rcp
sftp

这是一个bash脚本,用于自动执行配置备份。