




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、巡检模板函数说明当前支持的分析方式有三种, 行索引查找方式, 行特征查找方式, 分块查找方式,对每种分析方式具体说明请看分析函数使用说明.具体到程序内部变量,函数说明请看:全局变量说明,函数说明1. 分析函数使用说明1.1. 行索引查找方式1.1.1. 适用范围命令返回结果结构为规则矩阵,且对象的标识在此矩阵中,能确定判断对象所在行号如:show environment fansAutomatic thermal fanspeed control is: DISABLEDSlot # Fan 0 Fan 1 Fan 2 (RPM) (RPM) (RPM)28 3237 3366 3381 12
2、000/10/16-BLWER29 3237 3366 3381 12000/10/16-BLWERSH-SH-MS-S-1.CN21.1.2. 使用方式ParseResult(1);1.1.3. 分析流程1.1.4. 使用例程. 例子1命令返回结果show environment fansAutomatic thermal fanspeed control is: DISABLEDSlot # Fan 0 Fan 1 Fan 2 (RPM) (RPM) (RPM)28 3237 3366 3381 12000/10/16-BLWER29 3237 3366 3381 12000
3、/10/16-BLWERSH-SH-MS-S-1.CN2检查规则判断系统中各风扇的转速是否正常,如小于1000RPM告警。槽位28和29需要共有两条记录错误原因(红)1.异常:风扇转速小于阀值1000或状态异常,请开Case。(-5, 步进-5)(红)2.异常:28和29槽位应同时存在,请开Case。(-10)(红)3.异常:风扇模块工作不正常,请开Case。(-10)使用该方式检查的原因在结果中需要检查的为第6,7行或倒数第2,3行的内容,当能确定检查第几行的内容时,可以使用行索引查找方式进行分析.分析模板程序exec_cmd('show environment fans')
4、; #执行命令if ($CMD_ERROR ne '') #判断telnet执行是否正确writelog("! interface check error:$CMD_ERROR");return -1;SetParmDefault(); #参数初始化SetCheckRowsByRowNo( #设定需要分析的行的判断条件'-INC-INDEX=-3.-2', #包括倒数第3到倒数第2行之间的内容(注意,结果中的第一行和最后一行不参与分析,这两行一般为开始执行的命令和最后的提示符)'-EXC-INDEX=""'
5、 #没有不需要包括的行,所以用”赋空值即可,也可以省略该行);AddCheckRowsCondition( #设定在上一判断行条件中取得的行的分析方式'CONDITION=$COLUMN_VALUE1 > 1000 && $COLUMN_VALUE2 > 1000 && $COLUMN_VALUE3 > 1000 ', #判断条件,第1,2,3列的值要大于1000'ERROR_TYPE=1', #如果不符合判断条件,该错误的错误类型为1,对应错误原因中(红)后面的数字,如果检查项不打分,需要自定义错误类型 ,以下
6、均参照此处'RESULT_TYPE=E', #如果不符合判断条件,该错误的错误结果类型为E,即为红色告警,对应开始的括号中的类型,红为E,黄为U, 以下均参照此处'OBJ_COLUMN=0', #获取分析行的槽位号,取第0列的值保存在$obj_column0里面,如果在倒数第一列,则使用-1,以此类推,以下均参照此处'SEPARATOR= ', #分割符,对分析行进行的分割的分隔符,默认值为空格,(注意:分割后,得到的列值的前后空格会被去掉) 如不需覆盖默认操作 无需传递此参数'TRUE_ACTION=SetLineLog(); '
7、; , #判断为真的动作,当前动作为默认动作,即记录当前行到日志中, 如不需覆盖默认操作 无需传递此参数'FALSE_ACTION=SetErrorMark();' , #判断为假的动作,当前动作为默认动作,即标红当前行并记录到日志中, 如不需覆盖默认操作 无需传递此参数);AddCheckRowsConditionByFeature( #设定在上一判断行条件中取得的行的分析方式'INC-FEATURE=28|29', #判断条件,取得的槽位号(第0列的数字)必须为28或29(注意:如果该处设置的条件在匹配字符时为不区分大小写,如写”ab”,则”ab”,”AB”
8、都会匹配)'ERROR_TYPE=2', #如果不符合判断条件,该错误的错误类型为2, 'OBJ_COLUMN=0', #获取分析行的槽位号);AddGlobalCondition( #设定全局条件,在所有的行分析结束后进行判断'CONDITION=GetTrueObjectNum(2) = 2', #判断条件,错误类型2的正确对象个数是否为2个'ERROR_TYPE=2', #如果不符合判断条件,该错误的错误类型为2,在统计错误时全局条件的错误类型优先级比行条件的优先级高,则最后计算错误类型2时,只计算了全局条件的错误个数,而不
9、计算行条件中的错误个数'RESULT_TYPE=E', #如果不符合判断条件,该错误的错误结果类型为E,即为红色告警);ParseResult(1); #使用第1种分析方式分析,即行索引查找方式分析SetRCheckLog(); #对结果的分数统计并入库return 1; #返回1,说明程序正确结束. 例子2命令返回结果:见规则说明检查规则:SH-SH-HB-S-6.CN2#show environment fans (RPM) (RPM) (RPM)28 3000 3099 3330 12000/10/16-BLWER29 3075 3309 3288 1200
10、0/10/16-BLWER判断系统中各风扇的转速是否正常,如小于1000RPM告警。周期建议:每天一次(红色)槽位在24(V设备) 的只有一条记录,如果在28和29,需要共有两条记录BJ-BJ-JA-V-1.CN2#sh environment fans Slot # Fan Array24 OK GSR04-FABRIC= US-MI-MIA-F-1.CN2#sh environment fanAutomatic thermal fanspeed control is: DISABLEDSlot # Fan 0 Fan 1 Fan 2 (RPM) (RPM) (RPM)29 2208 221
11、7 2211 12000/10/16-BLWER GSR12410槽位在29(F设备) 的只有一条记录。错误原因(红)1.异常:风扇转速小于阀值1000或状态异常,请开Case。(-5, 步进-5)(红)2.异常:28和29槽位应同时存在,请开Case。(-10)(红)3.异常:风扇模块工作不正常,请开Case。(-10)使用该方式检查的原因同例子1,本例针对多型号情况进行了分析.分析模板程序my %device = getResDetailInfo();if($device'name' = /-V-/) #V设备检查exec_cmd('show environment
12、 fans'); #执行命令if ($CMD_ERROR ne '') #判断telnet执行是否正确writelog("! interface check error:$CMD_ERROR");return -1;SetParmDefault(); #参数初始化SetCheckRowsByRowNo( #设定需要分析的行的判断条件'-INC-INDEX=3' #包括第3行的内容);AddCheckRowsCondition( 'CONDITION=$COLUMN_VALUE1 eq "OK" ',
13、 #判断条件,第1列值要为OK'ERROR_TYPE=3', #如果不符合判断条件,该错误的错误类型为3'RESULT_TYPE=E', #如果不符合判断条件,该错误的错误结果类型为E,即为红色告警'OBJ_COLUMN=0', #获取分析行的槽位号,取第0列的值保存在$obj_column0里面);ParseResult(1); #使用第1种分析方式分析,即行索引查找方式分析elsif($device'name' = /-F-/) #F设备检查exec_cmd('show environment fans');
14、#执行命令if ($CMD_ERROR ne '') #判断telnet执行是否正确writelog("! interface check error:$CMD_ERROR");return -1;SetParmDefault(); #参数初始化SetCheckRowsByRowNo( #设定需要分析的行的判断条件'-INC-INDEX=-2' #包括倒数第2行的内容);AddCheckRowsCondition( 'CONDITION=$COLUMN_VALUE1 > 1000 && $COLUMN_VALUE
15、2 > 1000 && $COLUMN_VALUE3 > 1000 ', #判断条件,第1,2,3列的值要大于1000'ERROR_TYPE=1', #如果不符合判断条件,该错误的错误类型为1'RESULT_TYPE=E', #如果不符合判断条件,该错误的错误结果类型为E,即为红色告警'OBJ_COLUMN=0', #获取分析行的槽位号,取第0列的值保存在$obj_column0里面);ParseResult(1); #使用第1种分析方式分析,即行索引查找方式分析else #其余设备检查exec_cmd(
16、9;show environment fans'); #执行命令if ($CMD_ERROR ne '') #判断telnet执行是否正确writelog("! interface check error:$CMD_ERROR");return -1;SetParmDefault(); #参数初始化SetCheckRowsByRowNo( #设定需要分析的行的判断条件'-INC-INDEX=-3.-2', #包括倒数第3到倒数第2行之间的内容);AddCheckRowsCondition( #设定在上一判断行条件中取得的行的分析方式&
17、#39;CONDITION=$COLUMN_VALUE1 > 1000 && $COLUMN_VALUE2 > 1000 && $COLUMN_VALUE3 > 1000 ', #判断条件,第2,3,4列的值要大于1000'ERROR_TYPE=1', #如果不符合判断条件,该错误的错误类型为1'RESULT_TYPE=E', #如果不符合判断条件,该错误的错误结果类型为E,即为红色告警'OBJ_COLUMN=0', #获取分析行的槽位号,取第0列的值保存在$obj_column0里面);
18、AddCheckRowsCondition( #设定在上一判断行条件中取得的行的分析方式'CONDITION=$OBJ_VALUE0 = 28 | $OBJ_VALUE0 = 29', #判断条件,取得的槽位号必须为28或29'ERROR_TYPE=2', #如果不符合判断条件,该错误的错误类型为2 'RESULT_TYPE=E', #如果不符合判断条件,该错误的错误结果类型为E,即为红色告警'OBJ_COLUMN=0', #获取分析行的槽位号,取第0列的值保存在$obj_column0里面);AddGlobalCondition
19、( #设定全局条件,在所有的行分析结束后进行判断'CONDITION=GetTrueObjectNum(2) = 2', #判断条件,错误类型2的正确对象个数是否为2'ERROR_TYPE=2', #如果不符合判断条件,该错误的错误类型为2'RESULT_TYPE=E', #如果不符合判断条件,该错误的错误结果类型为E,即为红色告警);ParseResult(1); #使用第1种分析方式分析,即行索引查找方式分析SetRCheckLog(); #对结果的分数统计并入库return 1; #返回1,说明程序正确结束1.2. 行特征查找方式1.2.1
20、. 适用范围命令返回结果结构为类似行、列格式,提取的行为规则矩阵格式,且对象的标识在此矩阵中。对取值的判断为一个统一条件, 能确定判断对象所在行的特征值如show context summaryCRASH INFO SUMMARY Slot 0 : 0 crashes Slot 1 : 0 crashes Slot 2 : 0 crashes Slot 3 : 0 crashesRESET INFO SUMMARY Slot 0 : 0 resets Slot 1 : 0 resets Slot 2 : 0 resets Slot 3 : 0 resetsSH-SH-HB-S-6.CN2#1.
21、2.2. 使用方式ParseResult(2);1.2.3. 分析流程1.2.4. 使用例程命令返回结果show context summaryCRASH INFO SUMMARY Slot 0 : 0 crashes Slot 1 : 0 crashes Slot 2 : 0 crashes Slot 3 : 0 crashesRESET INFO SUMMARY Slot 0 : 0 resets Slot 1 : 0 resets Slot 2 : 0 resets Slot 3 : 0 resetsSH-SH-HB-S-6.CN2#检查规则检查输出结果中冒号后的数字,非0则告警错误原因
22、(红)1.异常:板卡有Crash记录,请开Case处理。(-1,步进-1)使用该方式检查的原因在结果中需要判断的为存在”Slot”特征字符串的行,当能确定行特征时,可以使用行特征查找方式进行分析分析模板程序exec_cmd('show context summary'); #使用exec_cmd执行命令if ($CMD_ERROR ne '') #判断telnet执行是否正确writelog("! interface check error:$CMD_ERROR");return -1;SetParmDefault(); #初始化参数SetC
23、heckRowsByRowFeature( #设定需要分析的行的判断条件'INC-FEATURE=Slot' #必须包含的特征,”Slot”); AddCheckRowsCondition( #设定在上一判断行条件中取得的行的分析方式'CONDITION=$COLUMN_VALUE2 eq "0" ', #判断条件,第2列的值必须为0'ERROR_TYPE=1', #如果不符合判断条件,该错误的错误类型为1'RESULT_TYPE=E', #如果不符合判断条件,该错误的错误结果类型为E,即为红色告警'O
24、BJ_COLUMN=1', #获取分析行的槽位号'SEPARATOR=" |:"' #分割符为空格或者”:” ); ParseResult(2); #使用第2种分析方式分析,即行特征查找方式分析SetRCheckLog(); #对结果的分数统计并入库return 1; #返回1,说明程序正确结束1.3. 分块查找方式1.3.1. 适用范围命令返回结构为类似行、列格式,提取的行为符合某些特征,对象与取值在不同的段中如exec all sh proc cpu | i CPU utilization= Line Card (Slot 0) =CPU uti
25、lization for five seconds: 1%/0%; one minute: 2%; five minutes: 2%= Line Card (Slot 1) =CPU utilization for five seconds: 0%/0%; one minute: 2%; five minutes: 2%= Line Card (Slot 2) =CPU utilization for five seconds: 2%/0%; one minute: 3%; five minutes: 3%= Line Card (Slot 3) =CPU utilization for fi
26、ve seconds: 3%/0%; one minute: 2%; five minutes: 2%= Line Card (Slot 4) =CPU utilization for five seconds: 3%/0%; one minute: 2%; five minutes: 2%= Line Card (Slot 5) =CPU utilization for five seconds: 0%/0%; one minute: 2%; five minutes: 2%SH-SH-HB-S-6.CN2#或show controllers fia | b FIAFrom Fabric F
27、IA Errors-redund overflow 0 cell drops 0 cell parity 0 Switch cards present 0x001F Slots 16 17 18 19 20 Switch cards monitored 0x001F Slots 16 17 18 19 20 Slot: 16 17 18 19 20Name: csc0 csc1 sfc0 sfc1 sfc2 - - - - -los 0 0 0 0 0 state Off Off Off Off Off crc16 0 0 0 0 0 To Fabric FIA Errors-sca not
28、pres 0 req error 0 uni fifo overflow 0 grant parity 0 multi req 0 uni fifo undrflow 0 cntrl parity 0 uni req 0 multi fifo 0 empty dst req 0 handshake error 0 cell parity 0SH-SH-HB-S-6.CN2#1.3.2. 使用方式ParseResult(3);1.3.3. 分析流程a1.3.4. 使用例程. 例子1命令返回结果sh proc cpu | i CPU utilizationCPU utilizatio
29、n for five seconds: 7%/0%; one minute: 15%; five minutes: 17%SH-SH-MS-S-1.CN2#exec all sh proc cpu | i CPU utilization= Line Card (Slot 0) =CPU utilization for five seconds: 8%/0%; one minute: 27%; five minutes: 28%= Line Card (Slot 1) =CPU utilization for five seconds: 22%/1%; one minute: 29%; five
30、 minutes: 28%= Line Card (Slot 2) =CPU utilization for five seconds: 0%/0%; one minute: 29%; five minutes: 30%= Line Card (Slot 3) =CPU utilization for five seconds: 6%/0%; one minute: 46%; five minutes: 46%= Line Card (Slot 4) =CPU utilization for five seconds: 31%/0%; one minute: 32%; five minutes
31、: 31%= Line Card (Slot 6) =CPU utilization for five seconds: 99%/8%; one minute: 50%; five minutes: 50%= Line Card (Slot 9) =CPU utilization for five seconds: 1%/0%; one minute: 44%; five minutes: 46%= Line Card (Slot 10) =CPU utilization for five seconds: 1%/0%; one minute: 30%; five minutes: 30%=
32、Line Card (Slot 11) =CPU utilization for five seconds: 100%/0%; one minute: 48%; five minutes: 47%= Line Card (Slot 12) =CPU utilization for five seconds: 1%/0%; one minute: 45%; five minutes: 46%= Line Card (Slot 13) =CPU utilization for five seconds: 0%/0%; one minute: 43%; five minutes: 45%SH-SH-
33、MS-S-1.CN2#检查规则将输出结果中标红的域与网管系统中设置的阀值进行对比(设置为50%)。错误原因(红)1.异常:CPU五分钟统计利用率超过阀值50%,请开Case。 (-2,步进-2)使用该方式检查的原因槽位号(Slot 5)与检查的值(five minutes: 2%)不在一行上, ,可以使用分块查找方式进行分析分析模板程序exec_cmd('sh proc cpu | i CPU utilization');if ($CMD_ERROR ne '')writelog("! interface check error:$CMD_ERROR&
34、quot;);return -1;SetParmDefault();SetCheckRowsByRowFeature('INC-FEATURE=for five seconds' #行特征为存在” for five seconds”字符串);AddCheckRowsCondition('CONDITION=$COLUMN_VALUE11 < 50', #第11列的值不能大于50%'ERROR_TYPE=1','RESULT_TYPE=E');ParseResult(2); #使用第2种分析方式分析,即行特征查找方式分析exe
35、c_cmd('exec all sh proc cpu | i CPU utilization');if ($CMD_ERROR ne '')writelog("! interface check error:$CMD_ERROR");return -1;SetParmDefault();SetCheckRowsByRowFeature('INC-FEATURE=for five seconds' #行特征为存在” for five seconds”字符串);AddCheckRowsCondition('CONDITI
36、ON=$COLUMN_VALUE11 < 50', #第11列的值不能大于50%'ERROR_TYPE=1','RESULT_TYPE=E','');SetCheckRowsObjFeature( #设定获取槽位号的行的条件'INC_FEATURE=Line Card', #槽位号所在行的特征为” Line Card”'SEPARATOR=" |(|)"', #分隔符为空格或”(”或”)”'OBJ_COLUMN=4' #取第4列的值为槽位号);ParseResult
37、(3); #使用第3种分析方式分析,即分块查找方式分析SetRCheckLog();return 1;. 例子2命令返回结果show controllers fia | b FIAFrom Fabric FIA Errors-redund overflow 0 cell drops 0 cell parity 0 Switch cards present 0x001F Slots 16 17 18 19 20 Switch cards monitored 0x001F Slots 16 17 18 19 20 Slot: 16 17 18 19 20Name: csc0 csc1
38、 sfc0 sfc1 sfc2 - - - - -los 0 0 0 0 0 state Off Off Off Off Off crc16 0 0 0 0 0 To Fabric FIA Errors-sca not pres 0 req error 0 uni fifo overflow 0 grant parity 0 multi req 0 uni fifo undrflow 0 cntrl parity 0 uni req 0 multi fifo 0 empty dst req 0 handshake error 0 cell parity 0SH-SH-HB-S-6.CN2#检查
39、规则Switch cards处,16 17 18 19 20必须都存在los及crc16必须为0错误原因(红)1.异常:交换矩阵(Slots 16 17 18 19 20)必须都存在,请开Case。(-10)(红)2.异常:交换矩阵有误码,请开Case处理。(-3)使用该方式检查的原因槽位号(Slot: 16 17 18 19 20)与检查的值(los 0 0 0 0 0)( crc16 0 0 0 0 0)不在一行上, ,可以使用分块查找方式进行分析分析模板程序exec_cmd('show controllers fia | b FIA');if ($CMD_ERROR ne
40、 '')writelog("! interface check error:$CMD_ERROR");return -1;SetParmDefault();#处理”Switch cards present 0x001F Slots 16 17 18 19 20”中16,17,18,19,20必须全部#存在的情况SetCheckRowsByRowFeature('INC-FEATURE=Switch cards' #行特征为”Switch cards”);#判断槽位16必须存在的条件AddCheckRowsConditionByFeature(
41、'INC-FEATURE=16','ERROR_TYPE=1','RESULT_TYPE=E','OBJ_COLUMN=5','FALSE_ACTION=SetErrorMark();SetFailureObject("16");' #强制设定错误槽位号为16);#判断槽位17必须存在的条件AddCheckRowsConditionByFeature('INC-FEATURE=17','ERROR_TYPE=1','RESULT_TYPE=E',&
42、#39;OBJ_COLUMN=6','FALSE_ACTION=SetErrorMark();SetFailureObject("17");');#判断槽位18必须存在的条件AddCheckRowsConditionByFeature('INC-FEATURE=18','ERROR_TYPE=1','RESULT_TYPE=E','OBJ_COLUMN=7','FALSE_ACTION=SetErrorMark();SetFailureObject("18")
43、;');#判断槽位19必须存在的条件AddCheckRowsConditionByFeature('INC-FEATURE=19','ERROR_TYPE=1','RESULT_TYPE=E','OBJ_COLUMN=8','FALSE_ACTION=SetErrorMark();SetFailureObject("19");');#判断槽位20必须存在的条件AddCheckRowsConditionByFeature('INC-FEATURE=20','ERRO
44、R_TYPE=1','RESULT_TYPE=E','OBJ_COLUMN=9','FALSE_ACTION=SetErrorMark();SetFailureObject("20");');#处理los及crc16不能为0的情况SetCheckRowsByRowFeature('INC-FEATURE=los|crc16',);#判断第2列是否为0AddCheckRowsCondition('CONDITION=$COLUMN_VALUE1 = 0','ERROR_TYPE=2
45、','RESULT_TYPE=E','OBJ_COLUMN=0','FALSE_ACTION=SetErrorMark();SetFailureObject($OBJ_VALUE1);');#判断第3列是否为0AddCheckRowsCondition('CONDITION=$COLUMN_VALUE2 = 0','ERROR_TYPE=2','RESULT_TYPE=E','OBJ_COLUMN=0','FALSE_ACTION=SetErrorMark();Set
46、FailureObject($OBJ_VALUE2);');#判断第4列是否为0AddCheckRowsCondition('CONDITION=$COLUMN_VALUE3 = 0','ERROR_TYPE=2','RESULT_TYPE=E','OBJ_COLUMN=0','FALSE_ACTION=SetErrorMark();SetFailureObject($OBJ_VALUE3);');#判断第5列是否为0AddCheckRowsCondition('CONDITION=$COLUMN_
47、VALUE4 = 0','ERROR_TYPE=2','RESULT_TYPE=E','OBJ_COLUMN=0','FALSE_ACTION=SetErrorMark();SetFailureObject($OBJ_VALUE4);');#判断第6列是否为0AddCheckRowsCondition('CONDITION=$COLUMN_VALUE5 = 0','ERROR_TYPE=2','RESULT_TYPE=E','OBJ_COLUMN=0',
48、9;FALSE_ACTION=SetErrorMark();SetFailureObject($OBJ_VALUE5);');#获取第1,2,3,4,5列对应的槽位号SetCheckRowsObjFeature('INC_FEATURE="Slot:"', #槽位号所在列的特征字符串'OBJ_COLUMN=1,2,3,4,5' #取第1,2,3,4,5列); ParseResult(3);SetRCheckLog();return 1;2. 全局变量说明2.1. 接口变量2.1.1. $LINE变量说明:当前分析的结果的行内容操作建议
49、:可以对变量进行直接操作.2.1.2. OBJ_VALUE变量说明:保存当前错误对象的数组操作建议:可以对该变量进行直接操作,OBJ_VALUE内的值与obj_column列的索引对应,如obj_column=(1,3,5),则,OBJ_VALUE保存的第1,3,5列值为分析行的第1,3,5列的值接口函数: SetFailureObject();2.1.3. COLUMN_VALUE变量说明: 对分析的行使用分隔符分割后得到的数组操作建议:可以对该变量进行直接操作,对”abc def = ghi”使用空格分隔符” ”,在COLUMN_VALUE的第0,1,2,3列值分别为”abc”,”def”,”=”,”ghi”,如果使用分割符空格和等号为” |=”,则COLUMN_VALUE的第0,1,2列值分别为”abc”,”def”,”ghi”接口函数: GetColumnValueByIndex ();2.1.4. $UsrScalar1,$UsrScalar2变量说明: 全局的简单变量,可以选用操作建议:可以对该变量进行直接操作2.1.5. UsrArray变量说明: 全局的数组,可以选用操作建议:可以对该变量进行直接操作2.1.6. %UsrHash变量说明: 全局的哈希,可以选用操作建议:可以对该变量进行直接操作3. 函数说明3.1. 整体说明参数格式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论