资源描述
工学学士论文 目 录
引言
数据管理和数据处理是计算机系统的重要支柱,随着计算机技术的发展,这一重要支柱的地位始终没有改变。而数据库系统正式当今数据管理的主要形式。因此数据库系统在当今的计算机技术中站着举足轻重的地位。
当前的大型数据库有DB2、Oracle、Sybase、SQL Server等。而本次的任务就是对Sybase数据库的辅助管理。
当Sybase数据库空间已满的时候,数据库将不再存储任何新的数据信息,这表示数据库将无法正常工作。这种情况显然需要网管人员及时处理。网管人员不可能一直去检查数据库的空间使用情况,因此需要一个软件来协助网管人员的工作。这也是本次实验的第一个任务。
另外,数据库中存放着很多经常使用的重要数据,那么就有必要保持数据库中的内容的正确,需要经常对数据库内容检查。但是 有些内容取得方法比较麻烦,而且如果数据较多的时候,人工核查比较困难,最好由系统自动完成。以上便是本次实验的第二个任务,采集端口的监测。为了使数据库中经常使用的网络路由器端口号与实际值一致,就需要对路由器端口号监测。本次实验端口号的取得通过SNMP向采集平台发送数据采集请求,得到数据后再核查数据库中的内容,如有错误则及时更正。
由于个人知识及能力的不足,自此任务仍然有很多缺点,需要大家的指点.。如有不足之处请大家多多原谅!
第 47 页
目录
引言 1
目录 2
摘要 4
Abstract 5
第一章 系统知识介绍 6
§1 系统实现目的 6
§2 系统设计结构 6
§3 solaris 简介 7
§4 Sybase数据库管理 8
§5 SQL 概 述 10
§6 DB-Library概 述 11
§7 Linux/Unix环境下的make和makefile详解 12
§8 SNMP协议 17
第二章 数据库容量监测 20
§1 察看数据库中的数据对象 20
Name 21
§2 数据库空间满的处理 22
§3数据库空间监测 23
第三章 路由器的监测 25
§1JDBC简介 25
§2 SNMP协议的发与接收 28
§3 程序介绍 31
结束语 33
谢辞 34
附录1 参考书目 35
附录2:中英文对照 36
原文: 36
译文 42
工学学士论文 摘 要
摘要
随着网络的应用和数据管理层次的提高,各行各业都在建立自己的数据库,数据库的应用越来越广泛,作用也越来越大。因此对数据库的管理、维护工作更加重要。
本次任务MUDMAN数据库容量管理及采集端口监控的实现,是数据库管理的两个细节。
一是数据库容量监测。当Sybase数据库空间满的时候,数据库将不再接收新的存储内容。本系统是通过调用Sybase中的DB-Library函数完成Sybase下的各个数据库可用空间的监测,当出现剩余空间不足时,报警通知网管人员扩展数据库空间。
二是路由器端口号的监控。由于数据库中的路由器端口号需要经常使用,因此必需保持数据库中数据的正确。本系统通过SNMP协议向采集平台发送命令,采集各个路由器的端口号,同时完成检查数据库中的数据是否正确,错误的给予改正。
第一章介绍了系统及知识背景,第二、三章分别具体的介绍了两个系统。
关键字:数据库 DB-Library SNMP
工学学士论文 abstract
Abstract
Database is used widely now. Many companies have there own databases.And database plays an important part in the computer’s world.Database management is more and more important now.
This time I would finish the task of database mangement.One is that monitoring the space of database used.I must understand DB-Library the function in Sybase.In order to keep the database system having space to use.
And the othe one is monitoring the port number of the router .So keep the port number in the database the same with the port number in the database.
Key words: db DB-Library SNMP
工学学士论文 第一章 系统知识介绍
第一章 系统知识介绍
§1 系统实现目的
数据库的广泛应用,要求保持数据库内容的正确性及可其使用性。但是完全使用人工对数据库管理,耗时巨大,而且效果较低,因此要求使用软件协助管理人员的工作,提高数据库管理的效率。本次任务有两个目标,一要求完成数据库空间管理,即定期检测数据库容量,在数据库容量达到警戒线,向网管人员发出警告,网管人员得到消息后可以修改数据库的空间,保持数据库的可使用;二是网络路由器的监测,通过SNMP协议完成网络路由器端口号的采集,并且保持数据库中关于路由器端口与实际值保持一致,完成数据库内容的正确性。本次实验目的是为了实现以上两个功能。
§2 系统设计结构
开始
连接数据库
数据库容量监测:
sql语句
数据库空间
是否报警
N
报警
Y
退出数据库
开始
路由器的监控:
网络采集的数据
数据库中数据
订正数据库
=?
N
Y
结束
§3 solaris 简介
Solaris是一个SUN公司为其基于SPARC处理器和Intel提供的操作系统。SUN曾经占领了绝大部分的UNIX工作站市场,在90年代时,随着Internet的发展,Sun的SPARC/Solaris系统成为了许多网站的服务器。Sun强调系统的可用性,也就是很少死机,还强调其它的特点,和专门为Internet功能而设计的特点。SUN强调Solaris以下的几个重要特点:
很少失败,在安装新功能后不用重新启动;可以在远程对机器进行升级,监视和控制;
它可扩充性好;
它为网络计算而设计;
它的安全机制比较出色,支持IPSec,Kerberos,AMI和智能卡;
Solaris正在取代原来的SunOS。
----事实证明,Solaris不仅是非常好的Internet服务器,它与其他网络操作系统和服务器的互操作能力也非常好。最大的迁移费用必然会限制你采用把用户从现有的系统迁移到新系统时使用的方法。没有其他的管理费用,无须对用户进行培训。
技术案例
----Solaris一向基于其他工业现在采用的协议和开放标准,因此它在互操作性方面独具优势。引入或迁移系统,例如使用IP、POP、LDAP等都非常容易。
优点
本地支持LDAP、IP和POP
使用Samba共享Windows文件
即运行在多数64位硬件平台上
缺点
没有容易的工具完成系统用户到LDAP的迁移。
§4 Sybase数据库管理
Sybase数据库是基于客户/服务器体系结构的数据库。般的关系数据库都是基于主/从式的模型的。在主/从式的结构中,所有的应用都运行在一台机器上。用户只是通过终端发命令或简单地查看应用运行的结果。
而在客户/服务器结构中,应用被分在了多台机器上运行。一台机器是另一个系统的客户,或是另外一些机器的服务器。这些机器通过局域网或广域网联接起来。
客户/服务器模型的好处是:
· 它支持共享资源且在多台设备间平衡负载
· 允许容纳多个主机的环境,充分利用了企业已有的各种系统
它是真正开放的数据库 。由于采用了客户/服务器结构,应用被分在了多台机器上运行。更进一步,运行在客户端的应用不必是Sybase公司的产品。对于一般的关系数据库,为了让其它语言编写的应用能够访问数据库,提供了预编译。Sybase数据库,不只是简单地提供了预编译,而且公开了应用程序接口DB-LIB,鼓励第三方编写DB-LIB接口。由于开放的客户DB-LIB允许在不同的平台使用完全相同的调用,因而使得访问DB-LIB的应用程序很容易从一个平台向另一个平台移植。
ybase真正吸引人的地方还是它的高性能。体现在以下几方面:
·可编程数据库
通过提供存储过程,创建了一个可编程数据库。存储过程允许用户编写自己的数据库子例程。这些子例程是经过预编译的,因此不必为每次调用都进行编译、优化、生成查询规划,因而查询速度要快得多。
· 事件驱动的触发器
触发器是一种特殊的存储过程。通过触发器可以启动另一个存储过程,从而确保数据库的完整性。
· 多线索化
Sybase数据库的体系结构的另一个创新之处就是多线索化。一般的数据库都依靠操作系统来管理与数据库的连接。当有多个用户连接时,系统的性能会大幅度下降。Sybase数据库不让操作系统来管理进程,把与数据库的连接当作自己的一部分来管理。此外,Sybase的数据库引擎还代替操作系统来管理一部分硬件资源,如端口、内存、硬盘,绕过了操作系统这一环节,提高了性能。
Sybase数据库主要由三部分组成:
(1) 进行数据库管理和维护的一个联机的关系数据库管理系统Sybase SQL Server;
Sybase SQL Server是个可编程的数据库管理系统,它是整个Sybase产品的核心软件,起着数据管理、高速缓冲管理、事务管理的作用。
(2) 支持数据库应用系统的建立与开发的一组前端工具Sybase SQL Toolset;
ISQL是与SQL Server进行交互的一种SQL句法分析器。ISQL接收用户发出的SQL语言,将其发送给SQL Server,并将结果以形式化的方式显示在用户的标准输出上。
DWB是数据工作台,是Sybase SQL Toolset的一个主要组成部分,它的作用在于使用户能够设置和管理SQL Server上的数据库,并且为用户提供一种对数据库的信息执行添加、更新和检索等操作的简便方法。在DWB中能完成ISQL的所有功能,且由于DWB是基于窗口和菜单的,因此操作比ISQL简单,是一种方便实用的数据库管理工具。
APT是Sybase客户软件部分的主要产品之一,也是从事实际应用开发的主要环境。APT工作台是用于建立应用程序的工具集,可以创建从非常简单到非常复杂的应用程序,它主要用于开发基于表格(Form)的应用。其用户界面采用窗口和菜单驱动方式,通过一系列的选择完成表格(Form)、菜单和处理的开发。Sybase Open Client/Open Server。
通过Open Client的DB-LIB库,应用程序可以访问SQL Server。而通过Open Server的SERVER-LIB,应用程序可以访问其它的数据库管理系统。
Master包含许多系统表和系统过程,从总体上控制用户数据库和SQL Server的操作,构成了SYBASE系统的数据字典。
Model供了新用户数据库的初型。当我们每次用CREATE DATABASE命令 时,SQL Server都产生一个model数据库的拷贝,然后把它扩展到命令要求的尺寸。如果我们修改了model数据库,那么以后新创建的数据库都将随它而改变。
当用户执行一存储过程(以sp_开始)时,SQL 服务器首先在用户当前数据库中搜索指定的存储过程,如果没有相应过程,则到系统过程数据库中寻找,若没有,再到MASTER数据库中寻找。
数据库中保存系统的安全审核信息,它可跟踪记录每个用户的操作情况,为维护系统安全提供控制手段。
用户数据库是指用Create database 命令创建的数据库。所有新的用户数据库都要在master数据库中创建,也就是说,不能存取master数据库的用户是无权创建新的数据库的。SA可以将创建数据库的权限授予其他用户。新建数据库中存在一些系统表,在sysusers表中至少有一条记录,既该数据库的创建者。数据库创建时,创建者既为该数据库的 owner, 当然创建者可以将这一地位或这一所有权用系统过程授予别的用户。
储过程是用T-SQL语言编写成的SQL子例程,它存储于SQL服务器上供用户调用执行。与一般的SQL语句和批处理语句不同的是,存储过程是经过预编译的。当首次运行一个存储过程时,SQL Server的查询处理器将对其分析,并产生最终的执行方案。由于查询处理的大部分工作已经完成,所以以后执行存储过程时速度将会很快。执行存储过程时可带参数并可调用其他存储过程,执行完毕后返回信息以指示是否成功完成相应操作。存储过程有两种:一种是SQL服务器安装时自动建立的系统存储过程(系统过程),另一种是用户自己创建的存储过程。
系统过程是用于系统管理,并且为用户提供了从事数据库管理的一种途径。这些系统过程都是以sp_开头的,它们都放在master数据库中且隶属于sa(系统管理员) 。也有很多可以在任一个数据库中运行的系统过程。
§5 SQL 概 述
DB-Library/C就是一种对数据库的存取和服务器控制的接口。C语言与此接口的形式不同于其它数据库(如ORACLE、INFORMIX等)与C语言的嵌入式接口。与嵌入式接口相反,这个接口与C语言的结合不需要C语言预编译器,而是普通的C例程。
当然,仅有C语言与这些接口是不够的,在数据库中还有一个非常重要的概念是存储过程。它是C/S体系大力提倡的特性之一,是被赋予名字、得到编译被存储在数据库中SQL语句。一旦确定了数据库中的存储过程,应用程序就能利用上述接口按名字调用。因此,C语言就是利用DB-Library/C的丰富的例程和宏去调用有具体名字和功能的存储过程实现对数据库中数据的管理。
Sysbase 数据库具有强大的功能,Sql语言是从一个关系数据库中以抽象化的形式来定义和产生请求的一种方法。话句话说,Sql提供了一个通用语言,可以用来管理一个关系数据库中的数据而无须了解底层的数据结构。Sql是一种基于集合的语言,这意味着每个操作都是针对数据集合进行的,这个集合可以是一个表中的一行或多行。基于集合操作的目的是所有操作在逻辑上是同时进行的。 Sql的设计目的就是查询和处理数据库数据的过程中用户不必考虑数据的实际存储情况。这就是所谓的抽象化数据存储。
§6 DB-Library概 述
在编写程序来处理关系型客户机/服务器数据库中存储的数据时,有许多有效的方法,例如:sysbase的Dblibrary,Client Library和structured Query Report Writer。程序设计接口可以完成繁重的数据处理、创建文件、执行面向数据的任务和在多种操作系统上运行程序,更高级的应用程序使用库函数封装与数据库的通讯,从而创建的一个分层的程序设计机构。
我所使用的是DB-Library,它是用C语言写的一个函数集,它能使用应用程序与一台sybase system XI服务器或任一sysbase open server应用程序通讯。使用DBLibrary函数写的程序能在客户机上运行,也能在数据库服务器上运行。DB-Library/C是Client这边的应用编程接口。它由一组历程或宏组成,包括:
①发送命令;
②处理返回结果;
③为一个应用打开多个连接;
④完成数据类型转换;
⑤自动完成数据从数据库到程序变量的赋值;
DB-Library/C应用程序与数据库服务器的通信是通过一个或多个DBPROCESS结构实现的。DBPROCESS是一个结构型的变量类型,用来定义连接服务器的数据变量,用DB-Library/C作为接口编程都是执行以下几个步骤的:
登录到一个服务器;将SQL命令放进一个缓冲,并传给服务器,要求服务器执行;接收并处理返回结果;处理DB-Library错误和服务器的消息;关闭与服务器的连接并释放缓冲。
为了获得对转有服务器的访问,dblibrary使用一个称为LOGINREC的结构。程序使用一个或多个叫做DBPROCESS的对象与Sybase System XI通信。一个DBPROCESS是数据库唯一的句柄,它表示控制连接数据库的一个环境变量集。每个DBPROCESS都独立运行并负责以下的活动:
发给服务器的命令;
从服务器返回结果;
服务器提供的消息。
使用函数,就能存取保存在DBPROCESS缓冲区的任何信息。从Sybase数据库中返回结果集以一行或多行作为一批存入DBPRRICESS的一个内部缓冲区中。
§7 Linux/Unix环境下的make和makefile详解
无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员来说简直就是一场灾难。而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。因此,有效的利用make和makefile工具可以大大提高项目开发的效率。同时掌握make和makefile之后,您也不会再面对着Linux下的应用软件手足无措了。
但令人遗憾的是,在许多讲述Linux应用的书籍上都没有详细介绍这个功能强大但又非常复杂的编译工具。在这里我就向大家详细介绍一下make及其描述文件makefile。
Makefile文件
Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。makefile 文件是许多编译器--包括 Windows NT 下的编译器--维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。
在 UNIX 系统中,习惯使用 Makefile 作为 makfile 文件。如果要使用其他文件作为 makefile,则可利用类似下面的 make 命令选项指定 makefile 文件:
$ make -f Makefile.debug
例如,一个名为prog的程序由三个C源文件filea.c、fileb.c和filec.c以及库文件LS编译生成,这三个文件还分别包含自己的头文件a.h 、b.h和c.h。通常情况下,C编译器将会输出三个目标文件filea.o、fileb.o和filec.o。假设filea.c和fileb.c都要声明用到一个名为defs的文件,但filec.c不用。即在filea.c和fileb.c里都有这样的声明:
#include "defs"
那么下面的文档就描述了这些文件之间的相互联系:
---------------------------------------------------------
#It is a example for describing makefile
prog : filea.o fileb.o filec.o
cc filea.o fileb.o filec.o -LS -o prog
filea.o : filea.c a.h defs
cc -c filea.c
fileb.o : fileb.c b.h defs
cc -c fileb.c
filec.o : filec.c c.h
cc -c filec.c
----------------------------------------------------------
这个描述文档就是一个简单的makefile文件。
从上面的例子注意到,第一个字符为 # 的行为注释行。第一个非注释行指定prog由三个目标文件filea.o、fileb.o和filec.o链接生成。第三行描述了如何从prog所依赖的文件建立可执行文件。接下来的4、6、8行分别指定三个目标文件,以及它们所依赖的.c和.h文件以及defs文件。而5、7、9行则指定了如何从目标所依赖的文件建立目标。
当filea.c或a.h文件在编译之后又被修改,则 make 工具可自动重新编译filea.o,如果在前后两次编译之间,filea.C 和a.h 均没有被修改,而且 test.o 还存在的话,就没有必要重新编译。这种依赖关系在多源文件的程序编译中尤其重要。通过这种依赖关系的定义,make 工具可避免许多不必要的编译工作。当然,利用 Shell 脚本也可以达到自动编译的效果,但是,Shell 脚本将全部编译任何源文件,包括哪些不必要重新编译的源文件,而 make 工具则可根据目标上一次编译的时间和目标所依赖的源文件的更新时间而自动判断应当编译哪个源文件。
Makefile文件作为一种描述文档一般需要包含以下内容:
◆ 宏定义
◆ 源文件之间的相互依赖关系
◆ 可执行的命令
Makefile中允许使用简单的宏指代源文件及其相关编译信息,在Linux中也称宏为变量。在引用宏时只需在变量前加$符号,但值得注意的是,如果变量名的长度超过一个字符,在引用时就必须加圆括号()。
下面都是有效的宏引用:
$(CFLAGS)
$2
$Z
$(Z)
其中最后两个引用是完全一致的。
需要注意的是一些宏的预定义变量,在Unix系统中,$*、$@、$?和$<四个特殊宏的值在执行命令的过程中会发生相应的变化,而在GNU make中则定义了更多的预定义变量。关于预定义变量的详细内容,如下:
GNU make 的主要预定义变量及其含义
$* 不包含扩展名的目标文件名称。
$+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。
$< 第一个依赖文件的名称。
$? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。
$@ 目标的完整名称。
$^ 所有的依赖文件,以空格分开,不包含重复的依赖文件。
$% 如果目标是归档成员,则该变量表示目标的归档成员名称。例如,如果目标名称
为 mytarget.so(image.o),则 $@ 为 mytarget.so,而 $% 为 image.o。
AR 归档维护程序的名称,默认值为 ar。
ARFLAGS 归档维护程序的选项。
AS 汇编程序的名称,默认值为 as。
ASFLAGS 汇编程序的选项。
CC C 编译器的名称,默认值为 cc。
CFLAGS C 编译器的选项。
CPP C 预编译器的名称,默认值为 $(CC) -E。
CPPFLAGS C 预编译的选项。
CXX C++ 编译器的名称,默认值为 g++。
CXXFLAGS C++ 编译器的选项。
FC FORTRAN 编译器的名称,默认值为 f77。
FFLAGS FORTRAN 编译器的选项。
宏定义的使用可以使我们脱离那些冗长乏味的编译选项,为编写makefile文件带来很大的方便。如我们可以做如下定义:
---------------------------------------------------------
# Define a macro for the object files
OBJECTS= filea.o fileb.o filec.o
# Define a macro for the library file
LIBES= -LS
# use macros rewrite makefile
prog: $(OBJECTS)
cc $(OBJECTS) $(LIBES) -o prog
---------------------------------------------------------
此时如果执行不带参数的make命令,将连接三个目标文件和库文件LS;但是如果在make命令后带有新的宏定义:
make "LIBES= -LL -LS"
则命令行后面的宏定义将覆盖makefile文件中的宏定义。若LL也是库文件,此时make命令将连接三个目标文件以及两个库文件LS和LL。
在Unix系统中没有对常量NULL作出明确的定义,因此我们要定义NULL字符串时要使用下述宏定义:
STRINGNAME=
Make命令
在make命令后不仅可以出现宏定义,还可以跟其他命令行参数,这些参数指定了需要编译的目标文件。其标准形式为:
target1 [target2 …]:[:][dependent1 …][;commands][#…]
[(tab) commands][#…]
方括号中间的部分表示可选项。Targets和dependents当中可以包含字符、数字、句点和"/"符号。除了引用,commands中不能含有"#",也不允许换行。
在通常的情况下命令行参数中只含有一个":",此时command序列通常和makefile文件中某些定义文件间依赖关系的描述行有关。如果与目标相关连的那些描述行指定了相关的command序列,那么就执行这些相关的command命令,即使在分号和(tab)后面的aommand字段甚至有可能是NULL。如果那些与目标相关连的行没有指定command,那么将调用系统默认的目标文件生成规则。
如果命令行参数中含有两个冒号"::",则此时的command序列也许会和makefile中所有描述文件依赖关系的行有关。此时将执行那些与目标相关连的描述行所指向的相关命令。同时还将执行build-in规则。
如果在执行command命令时返回了一个非"0"的出错信号,例如makefile文件中出现了错误的目标文件名或者出现了以连字符打头的命令字符串,make操作一般会就此终止,但如果make后带有"-i"参数,则make将忽略此类出错信号。
Make命本身可带有四种参数:标志、宏定义、描述文件名和目标文件名。其标准形式为:
Make [flags] [macro definitions] [targets]
Unix系统下标志位flags选项及其含义为:
-f file 指定file文件为描述文件,如果file参数为"-"符,那么描述文件指向标准输入。如果没有"-f"参数,则系统将默认当前目录下名为makefile或者名为Makefile的文件为描述文件。在Linux中, GNU make 工具在当前工作目录中按照GNUmakefile、makefile、Makefile的顺序搜索 makefile文件。
-i 忽略命令执行返回的出错信息。
-s 沉默模式,在执行之前不输出相应的命令行信息。
-r 禁止使用build-in规则。
-n 非执行模式,输出所有执行命令,但并不执行。
-t 更新目标文件。
-q make操作将根据目标文件是否已经更新返回"0"或非"0"的状态信息。
-p 输出所有宏定义和目标文件描述。
-d Debug模式,输出有关文件和检测时间的详细信息。
Linux下make标志位的常用选项与Unix系统中稍有不同,下面我们只列出了不同部分:
c dir 在读取 makefile 之前改变到指定的目录dir。
-I dir 当包含其他 makefile文件时,利用该选项指定搜索目录。
-h help文挡,显示所有的make选项。
-w 在处理 makefile 之前和之后,都显示工作目录。
通过命令行参数中的target ,可指定make要编译的目标,并且允许同时定义编译多个目标,操作时按照从左向右的顺序依次编译target选项中指定的目标文件。如果命令行中没有指定目标,则系统默认target指向描述文件中第一个目标文件。
通常,makefile 中还定义有 clean 目标,可用来清除编译过程中的中间文件,例如:
clean:
rm -f *.o
运行 make clean 时,将执行 rm -f *.o 命令,最终删除所有编译过程中产生的所有中间文件。
隐含规则
在make 工具中包含有一些内置的或隐含的规则,这些规则定义了如何从不同的依赖文件建立特定类型的目标。Unix系统通常支持一种基于文件扩展名即文件名后缀的隐含规则。这种后缀规则定义了如何将一个具有特定文件名后缀的文件(例如.c文件),转换成为具有另一种文件名后缀的文件(例如.o文件):
.c:.o
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
系统中默认的常用文件扩展名及其含义为:
.o 目标文件
.c C源文件
.f FORTRAN源文件
.s 汇编源文件
.y Yacc-C源语法
.l Lex源语法
在早期的Unix系统系统中还支持Yacc-C源语法和Lex源语法。在编译过程中,系统会首先在makefile文件中寻找与目标文件相关的.C文件,如果还有与之相依赖的.y和.l文件,则首先将其转换为.c文件后再编译生成相应的.o文件;如果没有与目标相关的.c文件而只有相关的.y文件,则系统将直接编译.y文件。
而GNU make 除了支持后缀规则外还支持另一种类型的隐含规则--模式规则。这种规则更加通用,因为可以利用模式规则定义更加复杂的依赖性规则。模式规则看起来非常类似于正则规则,但在目标名称的前面多了一个 % 号,同时可用来定义目标和依赖文件之间的关系,例如下面的模式规则定义了如何将任意一个 file.c 文件转换为 file.o 文件:
%.c:%.o
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
§8 SNMP协议
·SNMP历史
网络管理通常被分为四类:
被管理节点(或设备): 即你想要监视的设备
代理 : 用来跟踪被管理设备状态的特殊软件或固件(firmware)
网络管理工作站 : 与在不同的被管理节点中的代理 通信,并且显示这些代理状态的中心设备。
网络管理协议 : 被网络管理工作站和大理用来交换 信息的
简单网络管理协议(SNMP)首先是由Internet工程任务组织(Internet Engineering Task Force)(IETF)的研究小组为了解决Internet上的路由器管理问题而提出的。SNMP被设计成与协议无关,所以它可以在IP,IPX,AppleTalk,OSI以及其他用到的传输协议上被使用。SNMP是一系列协议组和规范(见下表),它们提供了一种从网络上的设备中收集网络管理信息的方法。SNMP也为设备向网络管理工作站报告问题和错误提供了一种方法。
·SNMP简介
SNMP采用了Client/Server模型的特殊形式:代理/管理站模型。对网络的管理与维护是通过管理工作站与SNMP代理间的交互工作完成的。每个SNMP从代理负责回答SNMP管理工作站(主代理)关于MIB定义信息的各种查询
使用SNMP进行网络管理需要下面几个重要部分:管理基站,管理代理,管理信息库和网络管理工具。管理基站通常是一个独立的设备,它用作网络管理者进行网络管理的用户接口。基站上必须装备有管理软件,管理员可以使用的用户接口和从MIB取得信息的数据库,同时为了进行网络管理它应该具备将管理命令发出基站的能力。
管理代理是一种网络设备,如主机,网桥,路由器和集线器等,这些设备都必须能够接收管理基站发来的信息,它们的状态也必须可以由管理基站监视。管理代理响应基站的请求进行相应的操作,也可以在没有请求的情况下向基站发送信息。
MIB是对象的集合,它代表网络中可以管理的资源和设备。每个对象基本上是一个数据变量,它代表被管理的对象的一方面的信息。
后一个方面是管理协议,也就是SNMP,SNMP的基本功能是:取得,代设置和接收理发送的意外信息。取得指的是基站发送请求,代理根据这个请求回送相应的数据,设置是基站设置管理对象(也就是代理)的值,接收收代理发送的意外信息是指代理可以在基站未请求的状态下向基站报告发生的意外情况。
·通信方式
SNMP代理和管理站通过SNMP协议中的标准消息进行通信,每个消息都是一个单独的数据报。SNMP使用UDP(用户数据报协议)作为第四层协议(传输协议),进行无连接操作。SNMP消息报文包含两个部分:SNMP报头和协议数据单元PDU。
·MIB
管理信息库MIB(由中定义了可访问的网络设备及其属性,由对象识别符OID:Object Identifier)唯一指定,是一个树形结构。MIB包括了对象列表,这些对象与指示对象类型的OBJECT IDENTIFIER相关。有两种方式可以访问MIB中对象的值,一种是快速访问,另一种慢速访问,快速访问时只用输入一些数据,慢速访问时要加上其它信息。SNMP MIB是对象的定义是十分严格的,定义指定了对象的数据类型,允许的形式,取值范围和
展开阅读全文