シスコのルーターで動作するようにsnmpを介してscpを取得する方法


10

SNMP経由でCiscoルーターにSCPを使用しようとしているラボのセットアップがあります。http://ccie20728.wordpress.com/2008/05/20/get-the-cisco-などのオンラインドキュメントが見つかりました。configuration-over-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サーバーとして機能させるには、上記のコマンドで有効にする必要があります。ubuntuサーバーでは、openSSHをインストール/実行しており、次のコマンドを実行しています。

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ファイルから出力が得られないことを試しました。

誰かがこれを機能させることができましたか?


:ここで私は、ドキュメントに使用される2つの他のリンクあり tools.cisco.com/Support/SNMP/do/...cisco.com/en/US/tech/tk648/tk362/...
user1609

SCPサーバー上の問題を破棄するために、ルーターから手動でコピーを実行すると機能しますか?書き込み中に新しいファイルを作成できないTFTPサーバーを覚えているようです。そのため、最初にサーバー側で空のファイルを作成してから、空のファイル名を指す宛先ファイルを使用してコピーを実行する必要がありました
Daniel Yusteアロカ

うん、私もこれを手動でルーターからサーバーにscp経由で試しましたが、うまくいきました。以前に空のファイルを作成しなくても、ファイルをサーバーに手動でコピーできました。
user1609 2013年

何か回答がありましたか?もしそうなら、質問が永遠にポップアップし続けないように答えを受け入れ、答えを探します。または、独自の回答を提供して受け入れることもできます。
Ron Maupin

回答:


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)にコピーします。これらをスワップすることにより、方向を(ネットワークから実行に)変更できます。

上記のスクリプトを実行すると、ホームディレクトリに「filename」ファイルが含まれます。このファイルには、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つの「アクティブ」を使用し、4つの「createAndGo」を使用する必要があります。


"14"を整数4に変更して再試行したところ、パケットでエラーが発生しました。理由:値に一貫性がありません。私はあなたが毎回したように「6」でsnmpsetをクリアしました。ちなみに、上記の設定で動作させることができましたか?
user1609 2013年

はい。上記は、15.1(2)T5を実行している881Gで問題なく動作します。スクリプトの出力を追加しました。そのindex / id(9)がハングしている場合、同じ「一貫性のない値」のクレームが発生します。これを破棄するまでにかなり時間がかかります。確実にするために、新しいインデックス/ IDでテストする場合があります。
ytti、2013年

別のインデックス/ IDで試してみましたが、まだ起こりません。別のデバイスを試します。この特定のデバイスは実際にはサポートされていません。ことは、cisco mibとソフトウェアマトリックスでも、これらのMIBがテスト対象の現在のIOSでサポートされていることを示しています。
user1609 2013年

それは多分5 <10年のように、今ではかなり古いMIBです。おそらくそうではありません。IOS CLIからこれは機能します: 'copy running-config scp:// username:password @ server / filename'
ytti

はい、ルーターからサーバーへの手動のscpコピーは正常に機能します。これを行うためのkronスケジューラーまたはEEMスクリプトを作成することもでき、ルーターからサーバーへのscpを正常に実行します。snmp経由ではない...
user1609 2013年

4

Cisco SNMP Object Navigatorによると、値4は1.3.6.1.4.1.9.9.96.1.1.1.1.3ではサポートされていません。代わりに、値2は実行設定を意味します。

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オブジェクトナビゲータとの間に矛盾があると思われるMIB定義は、の型として、ccCopySourceFileTypeそしてccCopyDestFileTypeあるConfigFileTypeとMIB定義に従って:

ConfigFileType ::= TEXTUAL-CONVENTION

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

そして、これはイッティの答えに裏付けられているようです


ええ、私は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パケットのエラー。理由:wrongValue(設定値が不正であるか、何らかの方法でサポートされていません)失敗したオブジェクト:iso.3.6.1.4.1.9.9.96.1.1.1.1.3.111 *** .3と。 4おそらくどちらの場合でも整数は異なっていました。ルーターからサーバーにコピーしようとしています。これは、私が理解しているように、run-cfgからnetworkfileへのコピーです。
user1609 2013年

コピーmibには2世代あるため、矛盾しているのではないかと思います。オリジナルはかなり単純で、単純なもので、tftpだけを実行しました。思い出せませんが、おそらくその時代には、1がスタートアップで2が実行されていました。
ytti

それは良い点です。したがって、コードのアップグレードによって変更が加えられたようです。
user1609 2013年

"write-net" mibは(多くの理由で)減価され、 "config-copy" mibが採用されました。これは、現在の方法です。
リッキービーム

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

どのデバイスを使用していますか?
リッキービーム

cisco ubr10k CMTSでテストを行っており、これもcisco 3725(12.4Tコード)で試して、同じ結果が得られました
user1609

badFilenamesshログイン失敗を示すこともできますが、私はそのnoConfig(5)ために取得します。(これは言うべきことの反対です)
リッキービーム

badFileName(2)12.4Tからを取得します。(2960Sは15.xです)
リッキービーム

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.