⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snmp-v2tov1.pl

📁 OTP是开放电信平台的简称
💻 PL
字号:
# snmp-v2tov1.awk# nawk script - pass 1 of translation from SNMP v2 SMI to v1 SMI# mbj@erlang.ericsson.se 971114## Translate v2 IMPORTs to their v1 equivalents$[ = 1;			# set array base to 1$, = ' ';		# set output field separator$\ = "\n";		# set output record separatorline: while (<>) {    chomp;	# strip record separator    @Fld = split(' ', $_, 9999);    if (/IMPORT/) {	$import = 1;	$isave = 0;	print $_;	next line;    }    if (($import == 1) && ($Fld[1] eq ';')) {	$import = 0;    }    if (($import == 1) && ($Fld[1] ne 'FROM')) {	for ($i = 1; $i <= $#Fld; $i++) {	    $s = ',', $Fld[$i] =~ s/$s//;	    $imp{$i + $isave} = $Fld[$i];	}	$isave = $isave + ($i - 1);	next line;    }    if (($import == 1) && ($Fld[1] eq 'FROM')) {	&print_imp($Fld[2], *imp, $isave);	$isave = 0;	next line;    }    # str is 1 if we're inside a string, and 0 otherwise.    if (/\"/) {	$str = 1;    }    if ($Fld[$#Fld] =~ /\"$/) {	$str = 0;    }    # Just reprint all comments    if (/^--/) {	print $_;	next line;    }    # Place comments around MODULE-IDENTITY    if (/MODULE-IDENTITY/ && ($str == 0)) {	$moduleid = 1;	print '--', $_;	next line;    }    if (($moduleid == 1) && ($Fld[1] eq '::=')) {	$moduleid = 0;	print '--', $_;	next line;    }    if ($moduleid == 1) {	print '--', $_;	next line;    }    # Translate TEXTUAL-CONVENTION into an ordinary type assignement.    # Place comments around body.    if (/TEXTUAL-CONVENTION/ && ($str == 0)) {	$textual = 1;	print $Fld[1], $Fld[2];	print '--TEXTUAL-CONVENTION';	next line;    }    if (($textual == 1) && ($Fld[1] eq 'SYNTAX')) {	$textual = 0;	print "--SYNTAX\n";	for ($i = 2; $i <= $#Fld; $i++) {	    print $Fld[$i];	}	next line;    }    if ($textual == 1) {	$s = '--', s/$s/-- --/;	print '--', $_;	next line;    }    # Translate OBJECT-IDENTITY into an OBJECT IDENTIFIER.    # Place comments around body.    if (/OBJECT-IDENTITY/ && ($str == 0)) {	$objid = 1;	print $Fld[1], 'OBJECT IDENTIFIER';	print '--OBJECT-IDENTITY';	next line;    }    if (($objid == 1) && ($Fld[1] eq '::=')) {	$objid = 0;	print $_;	next line;    }    if ($objid == 1) {	$s = '--', s/$s/-- --/;	print '--', $_;	next line;    }    # Place comments around MODULE-COMPLIANCE    if (/MODULE-COMPLIANCE/ && ($str == 0)) {	$modcomp = 1;	print '--', $_;	next line;    }    if (($modcomp == 1) && ($Fld[1] eq '::=')) {	$modcomp = 0;	print '--', $_;	next line;    }    if ($modcomp == 1) {	$s = '--', s/$s/-- --/;	print '--', $_;	next line;    }    # Place comments around OBJECT-GROUP    if (/OBJECT-GROUP/ && ($str == 0)) {	$objgr = 1;	print '--', $_;	next line;    }    if (($objgr == 1) && ($Fld[1] eq '::=')) {	$objgr = 0;	print '--', $_;	next line;    }    if ($objgr == 1) {	$s = '--', s/$s/-- --/;	print '--', $_;	next line;    }    if (/OBJECT-GROUP/) {	print 'tjolaopp';    }    # Place comments around NOTIFICATION-GROUP    if (/NOTIFICATION-GROUP/ && ($str == 0)) {	$notgr = 1;	print '--', $_;	next line;    }    if (($notgr == 1) && ($Fld[1] eq '::=')) {	$notgr = 0;	print '--', $_;	next line;    }    if ($notgr == 1) {	$s = '--', s/$s/-- --/;	print '--', $_;	next line;    }    # Translate NOTIFICATION-TYPE into a TRAP-TYPE.    if (/NOTIFICATION-TYPE/ && ($str == 0)) {	$trap = 1;	print $Fld[1], ' TRAP-TYPE';	printf '    ENTERPRISE ';	$tri = 1;	next line;    }    if (($trap == 1) && ($Fld[1] eq 'OBJECTS')) {	$tra{$tri++} = $_;	next line;    }    if (($trap == 1) && ($Fld[1] eq 'STATUS')) {	next line;    }    if (($trap == 1) && ($Fld[1] eq '::=')) {	print $Fld[3];	&pr_trap(*tra, $tri);	printf '    ::= ';	print $Fld[4];	$tri = 1;	$trap = 0;	next line;    }    if ($trap == 1) {	$tra{$tri++} = $_;	next line;    }    if (/UNITS/) {	$s = '--', s/$s/-- --/;	print '--', $_;	next line;    }    print $_;    # Print v1 IMPORT statements    # Print a trap}sub print_imp {    local($mib, *imp, $isave) = @_;    for ($i = 1; $i <= $isave; $i++) {	if ($imp{$i} eq 'Counter32') {	    print '   ', $imp{$i};	    print '        FROM RFC1155-SMI';	}	elsif ($imp{$i} eq 'Gauge32') {	    print '   ', $imp{$i};	    print '        FROM RFC1155-SMI';	}	elsif ($imp{$i} eq 'TimeTicks') {	    print '   ', $imp{$i};	    print '        FROM RFC1155-SMI';	}	elsif ($imp{$i} eq 'Opaque') {	    print '   ', $imp{$i};	    print '        FROM RFC1155-SMI';	}	elsif ($imp{$i} eq 'IpAddress') {	    print '   ', $imp{$i};	    print '        FROM RFC1155-SMI';	}	elsif ($imp{$i} eq 'NetworkAddress') {	    print '   ', $imp{$i};	    print '        FROM RFC1155-SMI';	}	elsif ($imp{$i} eq 'enterprises') {	    print '   ', $imp{$i};	    print '        FROM RFC1155-SMI';	}	elsif ($imp{$i} eq 'private') {	    print '   ', $imp{$i};	    print '        FROM RFC1155-SMI';	}	elsif ($imp{$i} eq 'experimental') {	    print '   ', $imp{$i};	    print '        FROM RFC1155-SMI';	}	elsif ($imp{$i} eq 'mgmt') {	    print '   ', $imp{$i};	    print '        FROM RFC1155-SMI';	}	elsif ($imp{$i} eq 'internet') {	    print '   ', $imp{$i};	    print '        FROM RFC1155-SMI';	}	elsif ($imp{$i} eq 'directory') {	    print '   ', $imp{$i};	    print '        FROM RFC1155-SMI';	}	elsif ($imp{$i} eq 'DisplayString') {	    print '   ', $imp{$i};	    print '        FROM RFC1213-MIB';	}	elsif ($imp{$i} eq 'mib-2') {	    print '   ', $imp{$i};	    print '        FROM RFC1213-MIB';	}	elsif ($imp{$i} eq 'OBJECT-TYPE') {	    print '   ', $imp{$i};	    print '        FROM RFC-1212';	}	elsif ($imp{$i} eq 'Integer32') {	    ;	}	elsif ($imp{$i} eq 'MODULE-IDENTITY') {	    ;	}	elsif ($imp{$i} eq 'TEXTUAL-CONVENTION') {	    ;	}	elsif ($imp{$i} eq 'OBJECT-IDENTITY') {	    ;	}	elsif ($imp{$i} eq 'OBJECT-GROUP') {	    ;	}	elsif ($imp{$i} eq 'MODULE-COMPLIANCE') {	    ;	}	elsif ($imp{$i} eq 'NOTIFICATION-GROUP') {	    ;	}	elsif ($imp{$i} eq 'NOTIFICATION-TYPE') {	    print '    TRAP-TYPE';	    print '        FROM RFC-1215';	}	elsif ($imp{$i} eq 'DateAndTime') {	    print '   ', $imp{$i};	    print '        FROM STANDARD-MIB';	}	elsif ($imp{$i} eq 'TruthValue') {	    print '   ', $imp{$i};	    print '        FROM STANDARD-MIB';	}	elsif ($imp{$i} eq 'RowStatus') {	    print '   ', $imp{$i};	    print '        FROM STANDARD-MIB';	}	else {	    print '   ', $imp{$i};	    print '        FROM', $mib;	}    }}sub pr_trap {    local(*tra, $tri) = @_;    for ($i = 1; $i < $tri; $i++) {	print $tra{$i};    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -