如何通过snmp获取SCP以与Cisco路由器一起使用?


10

我有一个实验室设置,试图通过SNMP在SCP路由器上使用SCP。我找到了一些在线文档,例如: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),表示“ badfilename”。

因此,我尝试了上面“ .6.111字符串”的文件名的不同排列,包括不同的文件扩展名,带有和不带有连字符的文件名,与运行config cmds的文件名相同,甚至指定了绝对路径文件名,但似乎都无效。

我尝试sshd用各种日志记录级别调试,并且从保存/存储的syslog文件中没有任何输出。

有人能使它正常工作吗?


这里是我用于文档其他两个环节: tools.cisco.com/Support/SNMP/do/...cisco.com/en/US/tech/tk648/tk362/...
user1609

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

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

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

Answers:


6

我只是在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),您可以更改方向(从网络到运行)。

在上面的脚本中运行,我的主目录将具有“文件名”文件,其中包含我的CPE running-config:

[ytti@lintukoto ~]% ls -la filename
ls: cannot access filename: No such file or directory
[2 ytti@lintukoto ~]% ./moi2.sh      
iso.3.6.1.4.1.9.9.96.1.1.1.1.2.9 = INTEGER: 4
iso.3.6.1.4.1.9.9.96.1.1.1.1.3.9 = INTEGER: 4
iso.3.6.1.4.1.9.9.96.1.1.1.1.4.9 = INTEGER: 1
iso.3.6.1.4.1.9.9.96.1.1.1.1.5.9 = IpAddress: 91.198.120.2
iso.3.6.1.4.1.9.9.96.1.1.1.1.6.9 = STRING: "filename"
iso.3.6.1.4.1.9.9.96.1.1.1.1.7.9 = STRING: "username"
iso.3.6.1.4.1.9.9.96.1.1.1.1.8.9 = STRING: "password"
iso.3.6.1.4.1.9.9.96.1.1.1.1.14.9 = INTEGER: 4
iso.3.6.1.4.1.9.9.96.1.1.1.1.14.9 = INTEGER: 6
[ytti@lintukoto ~]% ls -la filename
-rw-r--r-- 1 ytti ytti 16172 Jun 11 00:35 filename
[ytti@lintukoto ~]% 

除了@daniel还提到您的“ 14”或“ rowstatus”是错误的之外,您使用1“ active”,而应使用4“ createAndGo”。


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

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

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

到现在为止,这已经是相当古老的MIB,例如5 <10年。所以可能不是。从IOS CLI做这项工作:“复制运行配置SCP://用户名:密码@服务器/文件名”
ytti

是的,从路由器到服务器的手动scp复制工作正常。我什至可以创建一个kron调度程序或EEM脚本来做到这一点,并且可以很好地完成从路由器到服务器的scp。只是不通过snmp ...
user1609 2013年

4

根据Cisco SNMP Object Navigator,1.3.6.1.4.1.9.9.96.1.1.1.1.3不支持值4。相反,值2表示running-config:

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

也许这就是为什么您收到badFileName错误的原因。

编辑:

实际上似乎SNMP Object Navigator和MIB Definition之间存在矛盾,因为MIB定义的类型为ccCopySourceFileTypeccCopyDestFileTypeConfigFileType

ConfigFileType ::= TEXTUAL-CONVENTION

SYNTAX          INTEGER  {
                        networkFile(1),
                        iosFile(2),
                        startupConfig(3),
                        runningConfig(4),
                        terminal(5),
                        fabricStartupConfig(6) }

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


是的,我也看到了mib,但是即使将其更改为2的整数,我也会收到一条错误消息:*** snmpset -c <str> -v 2c <ip> 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

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

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

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

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”条目。否则,这是您snmpset在Linux机器的ssh服务器上针对2960S 的s 的确切序列。(如我的提示所示,是一个debian框。)


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

您正在使用什么设备?
Ricky Beam

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

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

badFileName(2)从12.4T 得到了 (2960S是15.x)
Ricky Beam

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.