이 문서에서는 CISCO-FTP-CLIENT-MIB를 사용하여 CISCO-BULK-FILE-MIB를 사용하고 해당 MIB(Management Information Base)에서 생성한 파일을 전송하는 방법에 대해 설명합니다.
Cisco IOS® 소프트웨어 릴리스 12.0부터 Cisco는 장치에 SNMP(Simple Network Management Protocol) 개체 또는 테이블을 파일로 저장하는 방법을 구현했습니다.그런 다음 CISCO-FTP-CLIENT-MIB를 사용하여 이 파일을 검색할 수 있습니다.이 기술을 사용하면 신뢰할 수 있는 전송 방법을 사용하여 대량의 데이터를 전송할 수 있습니다.
이 구성을 시도하기 전에 다음 요구 사항을 충족해야 합니다.
Cisco IOS® 소프트웨어 릴리스 12.0 이상을 실행하는 Cisco 장치가 있습니다.MIB Locator Tool을 선택하여 CISCO-BULK-FILE-MIB가 디바이스에 대해 지원되는지 확인합니다.툴에 대한 링크는 Cisco IOS MIB Tools 페이지에서 찾을 수 있습니다.
참고: 이 MIB는 Catalyst OS 디바이스에서 지원되지 않습니다.
SNMP는 읽기 전용 및 읽기-쓰기 커뮤니티 문자열로 디바이스에 구성해야 합니다.이 문서에서는 다루지 않습니다.IOS® 디바이스에서 SNMP를 구성하는 방법에 대한 자세한 내용은 라우터, Cisco IOS 소프트웨어 기반 XL 스위치, RSM, MSFCs 및 Catalyst 스위치에서 SNMP 커뮤니티 문자열을 구성하는 방법을 참조하십시오.
이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.
12.1(12)을 실행하는 7507 라우터의 ifTable을 파일에 저장하는 CISCO-BULK-FILE-MIB를 사용한 다음 CISCO-FTP-CLIENT-MIB를 사용하여 라우터에서 FTP 서버로 해당 파일을 전송합니다.
UNIX 또는 Windows에 설치된 net-snmp SNMP 명령 모음입니다.
다음 MIB가 사용됩니다.
SNMPv2-TC
SNMPv2-SMI
SNMPv2-CONF
SNMPv2-MIB
IANAifType-MIB
IF-MIB
CISCO-SMI
CISCO-TC
CISCO-BULK-FILE-MIB
CISCO-FTP-CLIENT-MIB
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다.이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다.현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참조하십시오.
이 표의 MIB가 관리 플랫폼에 로드되었는지 확인하십시오.이렇게 하면 숫자 OID(개체 식별자) 대신 위에 나열된 개체 이름과 값을 사용할 수 있습니다. 일반적으로 이 문서는 OID가 아닌 객체 이름을 참조합니다.
이 예에서는 라우터에서 ifTable을 캡처하여 대량 파일에 저장합니다.그러나 MIB 개체 또는 테이블을 사용할 수 있습니다.
snmpset의 net-snmp 버전을 사용합니다.라우터의 IP 주소는 14.32.8.2입니다. 읽기-쓰기 커뮤니티 문자열은 private입니다.읽기 전용 커뮤니티 문자열은 public입니다.
새 대량 파일 작업을 생성할 때마다 행 인스턴스에 대해 두 개의 난수를 선택합니다.1과 4294967295 사이의 숫자일 수 있습니다.이 예의 목적에는 333 및 444를 사용합니다.
BULK-FILE 작업을 만드는 절차는 다음과 같습니다.
만들 파일을 설정합니다.
$ snmpset -c private 14.32.8.2 cbfDefineFileEntryStatus.333 i 5 $ snmpset -c private 14.32.8.2 cbfDefineFileName.333 s ifTable.txt $ snmpset -c private 14.32.8.2 cbfDefineFileFormat.333 i bulkASCII
캡처할 MIB 개체를 지정합니다.
이 개체에는 올바른 작업을 위한 두 개의 인덱스가 필요합니다.333은 위의 파일 생성 테이블의 333입니다.444는 cbfDefineObjectTable의 기본 인덱스에 사용되는 새 난수입니다.
이 예제에서는 cbfDefineObjectID(ifTable)에 개체 이름을 사용하는 방법을 보여 줍니다. 여기에서 정규화된 OID도 사용할 수 있습니다.
$ snmpset -c private 14.32.8.2 cbfDefineObjectID.333.444 o ifTable
새로 만든 행을 활성화합니다.
cbfDefineObjectTable 행에 대한 두 개의 인덱스가 있어야 합니다.
$ snmpset -c private 14.32.8.2 cbfDefineObjectEntryStatus.333.444 i 1 $ snmpset -c private 14.32.8.2 cbfDefineFileEntryStatus.333 i 1
파일을 만듭니다.
$ snmpset -c private 14.32.8.2 cbfDefineFileNow.333 i 3
대량 파일이 생성됩니다.
cbfStatusFileState 개체에서 snmpget을 사용하여 파일이 성공적으로 생성되었는지 확인합니다.
이 개체에는 두 개의 인덱스가 필요합니다.첫 번째 인덱스는 파일 테이블에 대해 선택한 임의의 번호입니다(이 예에서는 333). 두 번째 인덱스는 라우터에서 생성한 파일 수에 따라 달라집니다.첫 번째 파일이므로 인덱스는 1입니다. 따라서 다음 명령을 사용합니다.
$ snmpget -c public 14.32.8.2 cbfStatusFileState.333.1
running(1) 값은 파일이 작성되고 있음을 의미합니다.값이 ready(2)이면 파일이 성공적으로 작성되었으며 읽기를 기다리고 있음을 의미합니다.
그러나 이 파일은 라우터에서 직접 액세스할 수 없습니다.이 파일을 읽으려면 CISCO-FTP-CLIENT-MIB를 사용합니다.
각 FTP 클라이언트 작업에 대해 행 인스턴스의 난수를 선택해야 합니다.위에서 사용한 것과 동일한 난수 중 하나를 사용할 수 있습니다.이 예에서는 555를 사용합니다.
CISCO-FTP-CLIENT-MIB를 사용하여 파일을 전송하는 절차는 다음과 같습니다.
FTP 클라이언트의 행 인스턴스를 만듭니다.
$ snmpset -c private 14.32.8.2 cfcRequestEntryStatus.555 i 5
필요한 매개변수를 입력합니다.LocalFile은 위에서 만든 파일과 이름이 같아야 합니다.putASCII를 사용하여 bulkASCII 파일을 전송합니다.
위에서 cbfDefineFileFormat을 bulkBinary로 설정하면 cfcRequestOperation을 putBinary로 설정해야 합니다.
$ snmpset -c private 14.32.8.2 cfcRequestOperation.555 i putASCII $ snmpset -c private 14.32.8.2 cfcRequestLocalFile.555 s ifTable.txt $ snmpset -c private 14.32.8.2 cfcRequestRemoteFile.555 s /home/Marcus/ifTable.txt $ snmpset -c private 14.32.8.2 cfcRequestServer.555 s 172.18.123.33 $ snmpset -c private 14.32.8.2 cfcRequestUser.555 s Marcus $ snmpset -c private 14.32.8.2 cfcRequestPassword.555 s marcus123
행을 활성으로 설정하여 전송을 시작합니다.
$ snmpset -c private 14.32.8.2 cfcRequestEntryStatus.555 i 1
FTP 전송이 시작됩니다.완료되면 파일이 /home/Marcus/ifTable.txt에 저장됩니다.
FTP 전송 상태를 가져오려면 cfcRequestResult 개체에서 snmpget을 다시 사용합니다.
이 개체는 다른 FTP 개체에 사용한 것과 동일한 인덱스를 사용합니다.
$ snmpget -c public 14.32.8.2 cfcRequestResult.555
pending(1) 값은 파일이 여전히 전송 중임을 의미합니다.success(2) 값은 파일이 성공적으로 전송되었음을 의미합니다.다른 값은 오류입니다.
파일 전송이 완료되면 cbfStatusFileState 개체의 snmpget을 다시 시도하십시오.이제 다른 가치를 갖게 되었습니다.
$ snmpget -c public 14.32.8.2 cbfStatusFileState.333.1 enterprises.cisco.ciscoMgmt.ciscoBulkFileMIB.ciscoBulkFileMIBObjects.cbfStatus. cbfStatusFileTable.cbfStatusFileEntry.cbfStatusFileState.333.1 = emptied(3)
비우기(3) 값은 파일이 성공적으로 읽혔음을 의미합니다.파일을 다시 전송할 수 없습니다.
이제 파일 상태 행을 제거하여 이 파일을 삭제하는 것이 안전합니다.이 개체는 위의 cbfStatusFileState와 동일한 인덱스를 사용합니다.
$ snmpset -c private 14.32.8.2 cbfStatusFileEntryStatus.333.1 i 6
파일이 삭제되면 해당 Object 및 File 행을 삭제합니다.
$ snmpset -c private 14.32.8.2 cbfDefineObjectEntryStatus.333.444 i 6 $ snmpset -c private 14.32.8.2 cbfDefineFileEntryStatus.333 i 6
이러한 방법으로 FTP를 사용하여 CISCO-FTP-CLIENT-MIB를 사용하여 라우터에서 파일을 전송할 수 있습니다.
이 섹션에서는 이 파일의 일부 구문을 읽는 과정을 안내합니다.
첫 번째 줄은 접두사 줄입니다.ifTable 예의 경우
prefix 1.3.6.1.2.1.2.2.1
이는 ifEntry 객체의 OID에 해당합니다.ifTable은 하나 이상의 ifEntries로 구성됩니다.
다음 행에는 테이블의 객체 수가 나열됩니다.행은 키워드 테이블, 그 뒤에 테이블의 객체 수, 그 뒤에 각 객체의 인덱스로 구성됩니다.
예를 들면 다음과 같습니다.
table 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
이 행에는 테이블에 22개의 객체가 포함되며 각 객체에는 증가된 인덱스가 있음을 나타냅니다.이러한 객체는 ifTable 예에서 가져온 것입니다.
ifIndex ifDescr ifType ifSpeed ...
이 행 뒤에는 여러 행 항목이 있습니다.ifTable 예에서 각 행은 인터페이스에 해당합니다.행은 키워드 행으로 시작하고 그 뒤에 인덱스 식별자가 오고 그 뒤에 이전 테이블 항목으로 열거된 개체가 옵니다.
예를 들면 다음과 같습니다.
row 1 1 546F6B656E52696E67302F30 9 4464 16000000 0008B0851800 2 2 6551 0 0 0 0 0 0 0 0 0 0 0 0 0.0
네 번째 항목은 인터페이스 1에 대한 ifDescr입니다. 그러나 ifDescr은 16진수로 인코딩된 ASCII입니다.
이 행을 읽기 쉬운 형식으로 변환하려면 다음 Perl 명령을 사용합니다.
$ perl -e 'print pack("H*", "546F6B656E52696E67302F30")' TokenRing0/0
이 항목은 인터페이스 TokenRing0/0에 해당합니다. 일반적으로 문자열인 모든 개체는 대량 파일에서 16진수로 인코딩된 ASCII로 표시됩니다.이 Perl 명령을 사용하여 16진수 ASCII 문자열을 읽을 수 있는 텍스트로 변환할 수 있습니다.Perl이 없는 경우 이 ASCII 문자 테이블 을 사용하여 문자열을 변환합니다.
일부 항목은 값의 ~ 문자를 표시합니다.즉, 해당 개체의 값이 NULL입니다.즉, 개체가 디바이스에 설치되지 않습니다.
예를 들면 다음과 같습니다.
row 9 9 41544D312F302F302D61746D206C61796572 37 ~ 0 1 1 5971 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
이는 ATM1/0/0-atm 레이어 인터페이스에 해당합니다.Mtu가 이 인터페이스에 대해 NULL인 경우에 주의하십시오.가상 인터페이스이므로 MTU가 없는 것이 좋습니다.원하는 경우 이 명령을 디바이스 컨피그레이션에 추가하여 이러한 NULL을 0으로 대체할 수 있습니다.
Router(config)#no snmp-server sparse-table
cbfStatusFileState 개체를 폴링할 때 실행(1), 준비(2) 또는 빈(3) 이외의 값을 받으면 작업에 오류가 발생했습니다.다음은 오류의 원인입니다.
noSpace no data due to insufficient file space badName no data due to a name or path problem writeErr no data due to fatal file write error noMem no data due to insufficient dynamic memory buffErr implementation buffer too small aborted short terminated by operator command
파일의 개체 수가 예상한 수보다 적을 경우 CISCO-BULK-FILE-MIB의 cbfDefineMaxObjects가 너무 낮게 설정될 수 있습니다.개체의 현재 값을 확인하려면 snmpget을 사용합니다.
$ snmpget -c public 14.32.8.2 cbfDefineMaxObjects.0
값이 0이면 제한이 구성되지 않음을 의미합니다.값은 0에서 4294967295 사이의 정수로 설정할 수 있습니다(포함).파일당 최대 객체를 10으로 설정하려면 snmpset 명령을 사용합니다.이 개체의 인덱스는 항상 0입니다.
$ snmpset -c private 14.32.8.2 cbfDefineMaxObjects.0 u 10
이 개체는 일부 플랫폼에서 구성할 수 없습니다.이 오류로 snmpset에 장애가 발생하면 플랫폼에서 객체를 구성할 수 없습니다.
Error in packet. Reason: (noSuchName) There is no such variable name in this MIB. Failed object: enterprises.cisco.ciscoMgmt.ciscoBulkFileMIB.ciscoBulkFileMIBObjects.cbfDefine.cbfDefineMaxObjects.0
cfcRequestResult 개체를 폴링할 때 pending(1) 또는 success(2) 이외의 값을 받으면 FTP 작업에 오류가 발생했습니다.다음은 오류의 원인입니다.
aborted user aborted the transfer fileOpenFailLocal local bulk file was not found fileOpenFailRemote remote file could not be opened for writing badDomainName FTP server's hostname could not be resolved unreachableIpAddress route to the FTP server could not be found linkFailed connection could not be made to the remote server fileReadFailed local file could not be read fileWriteFailed remote file could not be written
현재 벌크 파일에 직접 액세스하는 방법은 지원되지 않습니다.파일을 읽으려면 CISCO-FTP-CLIENT-MIB를 거쳐야 합니다.
cbfDefineFileStorage 개체는 세 가지 유형을 정의합니다.임시, 휘발성 및 영구적.현재 IOS에서 지원되는 유일한 유형은 일시적입니다.임시 파일은 읽기 전까지 소량으로 존재합니다.
파일을 읽은 후에는 다시 읽을 수 없습니다.먼저 다시 만들어야 합니다.
cbfDefineFileFormat 개체는 세 가지 유형을 정의합니다.standardBER, bulkBinary 및 bulkASCII.지원되는 형식은 bulkBinary 및 bulkASCII뿐입니다.기본 형식은 bulkBinary입니다.
Windows용 Chameleon FTP 서버는 올바른 결과 코드를 반환하지 않으므로 CISCO-FTP-CLIENT-MIB와 함께 작동하지 않는 것으로 알려져 있습니다.