亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? storage.pm

?? 開發snmp的開發包有兩個開放的SNMP開發庫
?? PM
字號:
#########################################################################package AnyData::Storage::SNMP;########################################################################### XXX: TODO:##   scalar sets?##   multi-hosts$AnyData::Storage::VERSION = '5.0401';use strict;use vars qw(@basecols);@AnyData::Storage::SNMP::basecols = qw(hostname iid);$AnyData::Storage::SNMP::iidptr = 1; # must match array column of above@AnyData::Storage::SNMP::basetypes = qw(OCTETSTR OBJECTID);$AnyData::Storage::SNMP::debug = 0;$AnyData::Storage::SNMP::debugre = undef;use Data::Dumper;use AnyData::Storage::File;use SNMP;SNMP::init_snmp("AnyData::SNMP");sub new {#    DEBUG("calling AnyData::Storage::SNMP new\n");#    DEBUG("new storage: ",Dumper(\@_),"\n");    my $class = shift;    my $self  = shift || {};    $self->{open_mode} = 'c';    return bless $self, $class;}sub open_table {    DEBUG("calling AnyData::Storage::SNMP open_table\n");    my ($self, $parser, $table, $mode, $tname) = @_;    $self->{'process_table'} = $tname;    DEBUG("open_table: ",Dumper(\@_),"\n");}sub get_col_names {    DEBUG("calling AnyData::Storage::SNMP get_col_names\n");    my ($self, $parser, $tname) = @_;    DEBUG("get_col_names\n",Dumper(\@_),"\n");    $tname = $self->{'process_table'} if (!$tname);    # get cached previous results    return $self->{col_names}{$tname} if (defined($self->{col_names}{$tname}));    # table name    $tname = $self->{'process_table'} if (!$tname);    # mib node setup    my $mib = $SNMP::MIB{$tname} || return warn "no such table $tname";    my $entry = $mib->{'children'}[0];    # base columns and types    my @cols = @AnyData::Storage::SNMP::basecols;    my @types = @AnyData::Storage::SNMP::basetypes;    my %donecol;    my $count = $#cols;    foreach my $index (@{$entry->{'indexes'}}) {	push @cols, $index;	push @types, $SNMP::MIB{$index}{type};	$donecol{$index} = 1;	$count++;	if ($SNMP::MIB{$index}{parent}{label} eq $entry->{label}) {	    # this index is a member of this table	    $self->{columnmap}[$count] = $index;	    $self->{coloffset} += 1;	}    }    # search children list    foreach my $child  ( sort { $a->{'subID'} <=> $b->{'subID'} } @{$entry->{'children'}}) {	push @{$self->{real_cols}}, $child->{'label'};	next if ($donecol{$child->{label}});	push @cols, $child->{'label'};	push @types, $child->{'type'};	$count++;	$self->{columnmap}[$count] = $child->{'label'};    }    # save for later.    $parser->{col_names} = \@cols;    $self->{col_types} = \@types;    $self->{col_names} = \@cols;    map { $self->{col_uc_map}{uc($_)} = $_ } @cols;    return \@cols;}sub set_col_nums {    DEBUG("calling AnyData::Storage::SNMP set_col_nums\n");    DEBUG("set_col_nums\n",Dumper(\@_),"\n");    my ($self, $tname) = @_;    return $self->{col_nums} if (defined($self->{col_nums}));    my $mib = $SNMP::MIB{$tname};    my $entry = $mib->{'children'}[0];    my (%cols, %mibnodes);    my $cnt = -1;    foreach my $i (@{$self->{col_names}}) {	$cols{$i} = ++$cnt;    }    $self->{col_nums} = \%cols;    return \%cols;}# not needed?sub get_file_handle {    DEBUG("calling AnyData::Storage::SNMP get_file_handle\n");    DEBUG("get_file_handle\n",Dumper(\@_),"\n");    return shift;}# not needed?sub get_file_name {    DEBUG("calling AnyData::Storage::SNMP get_file_name\n");    DEBUG("get_file_name\n",Dumper(\@_),"\n");    my $self = shift;    return $self->{process_table} || $self->{table_name};}sub truncate {    DEBUG("calling AnyData::Storage::SNMP truncate\n");    my ($self) = @_;    DEBUG("trunacte, ", Dumper(@_));    # We must know how to delete rows or else this is all pointless.#     return $self->{col_nums}{$tname} if (defined($self->{col_nums}{$tname}));    my $tablemib = $SNMP::MIB{$self->{process_table}};    my $entrymib = $tablemib->{'children'}[0];    my ($delcolumn, $delcolumnname, $delcolumnvalue);    foreach my $child  (@{$entrymib->{'children'}}) {	if ($child->{'textualConvention'} eq 'RowStatus') {	    $delcolumn = $child->{subID};	    $delcolumnname = $child->{label};	    $delcolumnvalue = 6; # destroy	    last;	}    }    if (!$delcolumn) {	return warn "Can't (or don't know how to) delete from table $self->{process_table}.  Failing.\n";    }    # we should have a session, or else something is really wierd but...    $self->{'sess'} = $self->make_session() if (!$self->{'sess'});    # for each key left in our cache, delete it    foreach my $key (keys(%{$self->{'existtest'}})) {	# xxx: fullyqualified oid better	my $vblist = new SNMP::VarList([$delcolumnname, $key,					$delcolumnvalue]);	DEBUG("truncate $key: \n", Dumper($vblist));	$self->{'sess'}->set($vblist) || warn $self->{'sess'}->{ErrorStr};    }    return;}sub make_session {    DEBUG("calling AnyData::Storage::SNMP make_session\n");    my $self = shift;    my @args = @_;    my @sessions;    foreach my $key (qw(SecName Version SecLevel AuthPass Community RemotePort Timeout Retries RetryNoSuch SecEngineId ContextEngineId Context AuthProto PrivProto PrivPass)) {	push @args, $key, $self->{$key} if ($self->{$key});    }    foreach my $host (split(/,\s*/,$self->{DestHost})) {	push @sessions, new SNMP::Session(@args, 'DestHost' => $host);    }    return \@sessions;}sub file2str {    DEBUG("calling AnyData::Storage::SNMP file2str\n");    my ($self, $parser, $uccols) = @_;    my ($cols, @retcols);    DEBUG("file2str\n",Dumper(\@_),"\n");  restart:    if (!$self->{lastnode}) {#	my @vbstuff = @{$parser->{'col_names'}};#	splice (@vbstuff,0,1+$#AnyData::Storage::SNMP::basecols);#	map { $_ = [ $_ ] } @vbstuff;#	$self->{lastnode} = new SNMP::VarList(@vbstuff);#	splice (@$cols,0,1+$#AnyData::Storage::SNMP::basecols);	map { push @$cols,$self->{col_uc_map}{$_} } @$uccols;	if ($#$cols == -1) {	    $cols = $self->{'col_names'};	    # remove base columns	    splice (@$cols,0,1+$#AnyData::Storage::SNMP::basecols);	    # remove not accessible columns	    foreach my $col (@$cols) {		my $mib = $SNMP::MIB{$col};		push @retcols, $col if ($mib->{'access'} =~ /Read|Create/);	    }	} else {	    @retcols = @$cols;	    # remove base columns	    foreach my $c (@AnyData::Storage::SNMP::basecols) {		@retcols = grep(!/^$c$/, @retcols);	    }	    # remove non-accessible columns	    @retcols = grep {$SNMP::MIB{$_}{'access'} =~ /Read|Create/} @retcols;	}	map { $_ = [ $_ ] } @retcols;	$self->{lastnode} = new SNMP::VarList(@retcols);    }    if (!$self->{'sess'}) {	$self->{'sess'} = $self->make_session();	if ($#{$self->{'sess'}} == 0 && $self->{'silence_single_host'}) {	    $self->{'hostname'} = '';	} else {	    $self->{'hostname'} = $self->{'sess'}[0]{'DestHost'};	}    }    # perform SNMP operation    my $lastnode = $self->{'lastnode'}[0][0];    my $result;    $result = $self->{'sess'}[0]->getnext($self->{lastnode});    if (!defined($result)) {	warn " getnext of $self->{lastnode}[0][0] returned undef\n";    }    DEBUG(" result: ",Dumper($self->{lastnode}),"\n");    # XXX: check for holes!    # need proper oid compare here for all nodes    if ($self->{'lastnode'}[0][0] ne $lastnode) {	if ($#{$self->{'sess'}} > 0) {	    shift @{$self->{'sess'}};	    delete($self->{'lastnode'});	    @$cols = ();	    $self->{'hostname'} = $self->{'sess'}[0]{'DestHost'} if($self->{'hostname'});	    goto restart;	}	return undef;    }        # add in basecols information:    my @ret = ($self->{'hostname'}, $self->{'lastnode'}[0][1]);    DEBUG("Dump row results: ",Dumper($self->{'lastnode'}),"\n");    # build result array from result varbind contents    map { $ret[$self->{'col_nums'}{$_->[0]}] = map_data($_); } @{$self->{'lastnode'}};    # store instance ID for later use if deletion is needed later.    $self->{'existtest'}{$self->{'lastnode'}[0][1]} = 1;    DEBUG("Dump row results2: ",Dumper(\@ret),"\n");    return \@ret;}sub map_data {    if ($_->[3] eq "OBJECTID") {	$_->[2] = pretty_print_oid(@_);    }    return $_->[2];}sub pretty_print_oid {    use NetSNMP::default_store qw(:all);    netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 			   NETSNMP_DS_LIB_DONT_BREAKDOWN_OIDS,0);    my $new = SNMP::translateObj($_->[2], 0);    netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 			   NETSNMP_DS_LIB_DONT_BREAKDOWN_OIDS,1);    my $new2 = SNMP::translateObj($_->[2], 0);    if ($new) {	$_->[2] = $new2 . "$new";    } else {	$_->[2] = $_->[0] . $_->[1];    }    return $_->[2];}sub push_row {    DEBUG("calling AnyData::Storage::SNMP push_row\n");    DEBUG("push_row: ",Dumper(\@_),"\n");    DEBUG("push_row\n");    my ($self, $values, $parser, $cols) = @_;    my @callers = caller(3);    my $mode = $callers[3];    if ($mode =~ /DELETE/) {	DEBUG("not deleting $values->[$AnyData::Storage::SNMP::iidptr]\n");	delete $self->{'existtest'}{$values->[$AnyData::Storage::SNMP::iidptr]};	return;    }    my @origvars;    if ($#$cols == -1) {	# no column info passed in.  Update everything (mode probably INSERTS).#	@origvars = @{$self->{'col_names'}}};#	splice (@origvars,0,1+$#AnyData::Storage::SNMP::basecols);		map { push @origvars, $_ if $SNMP::MIB{$_}{'access'} =~ /Write|Create/; } @{$self->{'real_cols'}} ;	DEBUG("set cols: ", Dumper(\@origvars));    } else {	# only update the columns in question.  (mode probably UPDATE)	map { push @origvars, $self->{col_uc_map}{$_} } @$cols;    }    my @vars;    foreach my $var (@origvars) {	my $access = $SNMP::MIB{$var}{'access'};	# not in this table, probably (hopefully) an index from another:	next if ($SNMP::MIB{$var}{'parent'}{'parent'}{'label'} ne 		 $self->{process_table});	DEBUG("$var -> $access\n");	if ($access =~ /(Write|Create)/) {	    push @vars, $var;	} elsif ($mode eq 'insert') {	    DEBUG("XXX: error if not index\n");	} elsif ($mode eq 'update') {	    DEBUG("update to non-writable column attempted (SNMP error coming)\n");		}    }    # generate index OID component if we don't have it.    if ($values->[$AnyData::Storage::SNMP::iidptr] eq '') {	$values->[$AnyData::Storage::SNMP::iidptr] = 	    $self->make_iid($self->{process_table}, $values);    }    # add in values to varbind columns passed in from incoming parameters    my @newvars;    foreach my $v (@vars) {	my $num = $self->{'col_nums'}{$v};	DEBUG("types: $v -> $num -> ", $self->{'col_types'}[$num], 	      " -> val=", $values->[$num], "\n");	next if (!defined($values->[$num]));	# build varbind: column-oid, instance-id, value type, value	push @newvars, [$v, $values->[1], $values->[$num],			$self->{'col_types'}[$num]];    };    # create the varbindlist#    print STDERR Dumper(\@newvars);    my $vblist = new SNMP::VarList(@newvars);#    print STDERR Dumper($vblist);    DEBUG("set: ", Dumper($vblist));    $self->{'sess'} = $self->make_session() if (!$self->{'sess'});    if (!$self->{'sess'}[0]) {	warn "couldn't create SNMP session";    } elsif (!$self->{'sess'}[0]->set($vblist)) {	my $err = "$self->{process_table}: " . $self->{'sess'}[0]->{ErrorStr};	if ($self->{'sess'}[0]->{ErrorInd}) {	    $err = $err . " (at varbind #" 		. $self->{'sess'}[0]->{ErrorInd}  . " = " ;	    my $dump = Data::Dumper->new([$vblist->[$self->{'sess'}[0]->{ErrorInd} -1]]);	    $err .= $dump->Indent(0)->Terse(1)->Dump;	}	warn $err;    }}sub seek {    DEBUG("calling AnyData::Storage::SNMP seek\n");    my ($self, $parser) = @_;    DEBUG("seek\n",Dumper(\@_),"\n");}sub make_iid {    DEBUG("calling AnyData::Storage::SNMP make_iid\n");    my ($self, $tname, $vals) = @_;        # Get indexes    my $mib = $SNMP::MIB{$tname};    my $entry = $mib->{'children'}[0];    my $indexes = $entry->{'indexes'};    my $iid;    # XXX: implied#    print STDERR "INDEXES: ", Dumper($vals),"\n";    foreach my $index (@$indexes) {	warn "A null index value was found, which I doubt is correct." if (!defined($vals->[$self->{col_nums}{$index}]));	my $val = $vals->[$self->{col_nums}{$index}];	my $type = $SNMP::MIB{$index}->{'type'};	DEBUG("index type: $index -> $type -> $val -> " . length($val) . "\n");	if ($type eq "OCTETSTR") {	    $iid .= "." . length($val) . "." . join(".", unpack("c*", $val));	} elsif ($type eq "OBJID") {	    $iid .= "." . (scalar grep(/\./,$val) + 1) . "." . $val;	} else {	    # should be only an INTEGER?	    $iid .= "." . $val;	}    }    DEBUG("made iid: $iid\n");    return $iid;}sub DEBUG {    my @info = caller(1);    if ($AnyData::Storage::SNMP::debug	|| ($AnyData::Storage::SNMP::debugre &&	    $_[0] =~ /$AnyData::Storage::SNMP::debugre/)) {	DEBUGIT(\@info, @_);    }}sub DEBUGIT {    my $info;    if (ref($_[0]) eq 'ARRAY') {	$info = shift @_;    } else {	my @y;	my $c=0;	print STDERR "debug chain: ";	for(@y = caller($c); $#y > -1; $c++, @y = caller($c)) {	    print STDERR "  $c: $y[3]\n";	}	my @x = caller(1);	$info = \@x;    }    print STDERR "$info->[3]: ";    print STDERR @_;}1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜亚洲精品羞羞网站| 欧美视频你懂的| 国产福利一区二区三区| 日本女优在线视频一区二区| 三级影片在线观看欧美日韩一区二区| 亚洲人成网站色在线观看| 18欧美亚洲精品| 一区二区成人在线观看| 午夜电影网一区| 国产揄拍国内精品对白| 国产精品亚洲一区二区三区妖精| 国产91对白在线观看九色| 成人av一区二区三区| 欧美在线免费观看亚洲| 精品久久人人做人人爰| 亚洲人精品午夜| 久久精品99久久久| 在线免费视频一区二区| 欧美大片一区二区| 亚洲影视资源网| 亚洲午夜久久久久久久久电影院| 日韩电影免费在线| 91激情五月电影| 国产亚洲一二三区| 免费一区二区视频| 色狠狠色狠狠综合| 欧美国产一区二区| 久国产精品韩国三级视频| 色狠狠av一区二区三区| 国产精品理伦片| 国内偷窥港台综合视频在线播放| 精品视频一区二区不卡| 一区二区三区不卡视频| 成人av网站免费观看| 久久综合狠狠综合久久综合88 | 另类小说综合欧美亚洲| 欧美视频一区二区三区四区| 中文字幕一区二区三区在线观看| 美国精品在线观看| 日韩欧美www| 久久99精品久久久久婷婷| 欧美刺激脚交jootjob| 久久国产精品无码网站| 日韩视频在线一区二区| 蜜桃视频一区二区| 精品国产91洋老外米糕| 久久电影国产免费久久电影| 日韩美女一区二区三区四区| 精品伊人久久久久7777人| 精品国产露脸精彩对白| 国产成人精品一区二区三区四区 | 国产伦精一区二区三区| 国产肉丝袜一区二区| 成人午夜在线播放| 亚洲综合色婷婷| 精品欧美一区二区久久| 成人激情开心网| 天天综合色天天| 精品国产污污免费网站入口| 波多野结衣在线aⅴ中文字幕不卡| 国产精品电影院| 欧美成人激情免费网| 不卡区在线中文字幕| 亚洲福利一二三区| 国产亚洲精品免费| 欧美一卡在线观看| 色婷婷综合中文久久一本| 国产精品一区二区男女羞羞无遮挡 | 日韩欧美一区二区视频| 91视频国产观看| 国产精品亚洲成人| 天天射综合影视| 亚洲区小说区图片区qvod| 久久久久久麻豆| 日韩精品一区二区三区视频播放 | 久久精品国产亚洲aⅴ| 一区二区三区美女视频| 国产精品免费看片| 久久久精品黄色| 精品欧美一区二区在线观看| 欧美一区二区三区免费观看视频| 久久精品72免费观看| 国产最新精品免费| 久久精品男人天堂av| 久久精品久久99精品久久| 偷拍日韩校园综合在线| 亚洲综合免费观看高清完整版| 国产精品久久久一区麻豆最新章节| 欧美一区二区三区四区在线观看| 欧美性受xxxx黑人xyx| 欧美在线高清视频| 欧美日韩国产一级| 在线成人小视频| 久久午夜免费电影| 国产精品无码永久免费888| 中文字幕一区二区5566日韩| 亚洲男同性恋视频| 午夜精品久久久久久久99樱桃| 午夜久久久久久电影| 日本aⅴ精品一区二区三区| 日本不卡视频在线| 成人动漫一区二区三区| 欧美怡红院视频| 91精品国产综合久久久久久漫画 | 亚洲色图.com| 蜜桃av一区二区在线观看| 风流少妇一区二区| 精品婷婷伊人一区三区三| 欧美电影免费观看高清完整版在线观看 | 欧美高清在线视频| 一区二区在线免费| 国产剧情一区在线| 欧美三级电影在线看| 欧美国产视频在线| 免费视频一区二区| 一本色道亚洲精品aⅴ| 国产欧美日韩亚州综合| 日韩电影免费在线| 欧美aaaaaa午夜精品| 成人av网在线| 国产精品对白交换视频| 国内精品写真在线观看| 91精品国产入口在线| 成人免费在线播放视频| 国产伦精品一区二区三区视频青涩 | 久久网站热最新地址| 蜜臀av性久久久久蜜臀aⅴ流畅| www.亚洲在线| 中文字幕视频一区| 成人高清视频在线| 国产欧美日韩不卡| 成人性生交大片免费看视频在线| 欧美电视剧在线观看完整版| 免费观看91视频大全| 欧美一级精品大片| 精品一区二区三区免费播放 | 国产在线麻豆精品观看| 精品久久久久久久久久久院品网 | 精品国产免费人成在线观看| 麻豆国产91在线播放| 久久五月婷婷丁香社区| 成人97人人超碰人人99| 亚洲同性gay激情无套| 在线观看一区二区视频| 蜜臀av性久久久久av蜜臀妖精| 欧美一区二区三区免费视频| 国产精品99久久久| 国产精品午夜春色av| 欧美日韩www| 国产曰批免费观看久久久| 国产精品久久久久久久裸模 | 一区二区三区四区中文字幕| 337p亚洲精品色噜噜噜| 成人av在线网| 日本不卡视频一二三区| 亚洲丝袜制服诱惑| 欧美xxxxxxxx| 欧美精品tushy高清| 国产成人鲁色资源国产91色综 | 欧美成人一区二区| 在线免费观看日本一区| 国产真实乱子伦精品视频| 一区二区三区加勒比av| 国产网站一区二区| 欧美α欧美αv大片| 欧美日韩国产一区| 91久久国产综合久久| av在线不卡网| 成人精品国产一区二区4080 | 制服丝袜亚洲精品中文字幕| 91在线国产福利| 波多野结衣亚洲| 国产成人自拍网| 成人国产精品免费网站| 国产伦精品一区二区三区免费迷| 毛片av一区二区| 久久99精品国产.久久久久久| 午夜激情综合网| 婷婷丁香久久五月婷婷| 午夜久久久久久久久久一区二区| 亚洲制服丝袜一区| 夜夜精品浪潮av一区二区三区| 一区二区三区蜜桃| 免费日韩伦理电影| 国产美女久久久久| 色美美综合视频| 欧美日韩一卡二卡三卡| 欧美电影免费观看高清完整版在线观看| 日韩限制级电影在线观看| 久久综合九色欧美综合狠狠| 欧美激情一区二区三区不卡 | 另类小说一区二区三区| 国产成人一级电影| 欧美日本高清视频在线观看| 91精品国产一区二区三区| 久久精品人人做| 亚洲成a人片在线观看中文| 国内精品视频666| 色香色香欲天天天影视综合网| 91精品国产综合久久久久|