使用 Xymon 进行系统监控/开发者指南
- C 编程
- UNIX 高级编程
- UNIX 网络编程
以下是一些使用 svn 与 sourceforge.net 上的 hobbit 交互的示例。
- 列出 xymon SVN 目录的子目录。
[tjyang@ibm hobbitmon]$ svn ls https://hobbitmon.svn.sourceforge.net/svnroot/hobbitmon branches/ sandbox/ tags/ trunk/ [tjyang@ibm hobbitmon]$
- 找出过去 7 天的变化。
[tjyang@ibm hobbitmon]$ svn log -v -r HEAD:\{`date +%Y-%m-%d -d'7 days ago'`\} \ https://hobbitmon.svn.sourceforge.net/svnroot/hobbitmon ------------------------------------------------------------------------ r6033 | storner | 2009-01-08 07:43:23 -0600 (Thu, 08 Jan 2009) | 1 line Changed paths: M /trunk/client/Makefile Make sure client scripts are executable ------------------------------------------------------------------------ r6032 | storner | 2009-01-07 06:00:45 -0600 (Wed, 07 Jan 2009) | 1 line Changed paths: M /branches/4.2.3/build/md5.dat A /branches/4.2.3/hobbitd/webfiles/hostlist_footer A /branches/4.2.3/hobbitd/webfiles/hostlist_form A /branches/4.2.3/hobbitd/webfiles/hostlist_header M /branches/4.2.3/lib/headfoot.c M /branches/4.2.3/lib/headfoot.h M /branches/4.2.3/web/Makefile A /branches/4.2.3/web/hobbit-hostlist.c A /branches/4.2.3/web/hobbit-hostlist.sh.DIST Added hostlist CGI from trunk ------------------------------------------------------------------------ r6031 | storner | 2009-01-07 05:59:22 -0600 (Wed, 07 Jan 2009) | 2 lines Changed paths: M /branches/4.2.3/build/generate-md5.sh Adapted to work with Subversion and new source directories. ------------------------------------------------------------------------ r6030 | storner | 2008-12-17 05:39:49 -0600 (Wed, 17 Dec 2008) | 2 lines Changed paths: A /branches/4.2.3 (from /branches/4.2.2:6029) New branch off the 4.2.2 release for maintenance - will become 4.2.3 (if needed). ------------------------------------------------------------------------ [tjyang@ibm hobbitmon]$
- 使用 svn 检出 hobbit 源代码树。
[tjyang@fc6 ]$ svn co https://hobbitmon.svn.sourceforge.net/svnroot/hobbitmon hobbitmon <snip> A hobbitmon/tags/rel_4_0-20041201/web/bb-findhost.cgi.1 A hobbitmon/tags/rel_4_0-20041201/web/bb-ack.c A hobbitmon/tags/rel_4_0-20041201/web/hobbitsvc-trends.c A hobbitmon/tags/rel_4_0-20041201/web/bb-snapshot.c A hobbitmon/tags/rel_4_0-20041201/web/hobbitsvc.c A hobbitmon/tags/rel_4_0-20041201/web/bb-eventlog.cgi.1 A hobbitmon/tags/rel_4_0-20041201/web/bb-rep.cgi.1 A hobbitmon/tags/rel_4_0-20041201/web/bb-replog.cgi.1 A hobbitmon/tags/rel_4_0-20041201/web/bb-hist.c A hobbitmon/tags/rel_4_0-20041201/web/bb-csvinfo.c A hobbitmon/tags/rel_4_0-20041201/web/bb-webpage.c Checked out revision 5644. [tjyang@fc6 hobbitmon]$ ls -la total 28 drwxrwxr-x 6 tjyang tjyang 4096 Aug 4 09:11 . drwxr-xr-x 38 tjyang tjyang 4096 Aug 4 09:09 .. drwxrwxr-x 3 tjyang tjyang 4096 Aug 4 09:11 branches drwxrwxr-x 6 tjyang tjyang 4096 Aug 4 10:04 .svn drwxrwxr-x 67 tjyang tjyang 4096 Aug 4 10:04 tags drwxrwxr-x 16 tjyang tjyang 4096 Aug 4 09:11 trunk [tjyang@fc6 hobbitmon]$ to revert all the changes you made to hobbit src tree. svn revert --recursive .
- 作为 hobbit 开发者 之一,您可以创建分支。
- 以下示例通过 tjyang 创建了 hobbit 的实例。
[tjyang@fc6 hobbitmon]$ svn mkdir branches/tjyang A branches/tjyang [tjyang@fc6 hobbitmon]$ svn copy trunk branches/tjyang A branches/tjyang/trunk [tjyang@fc6 hobbitmon]$ svn commit -m "T.J. Yang's copy of hobbit" Authentication realm: <https://hobbitmon.svn.sourceforge.net:443> SourceForge Subversion area Password for 'tjyang': Adding branches/tjyang Adding branches/tjyang/trunk Committed revision 5645. [tjyang@fc6 hobbitmon]$
- 创建子目录。
[tjyang@fc6 trunk]$ svn status A pkg M README [tjyang@fc6 trunk]$ mkdir pkg/tww [tjyang@fc6 trunk]$ svn status ? pkg/tww A pkg M README [tjyang@fc6 trunk]$ svn add pkg/tww A pkg/tww [tjyang@fc6 trunk]$ pwd /home/tjyang/hobbitmon/branches/tjyang/trunk [tjyang@fc6 trunk]$ ls bbdisplay bbproxy Changes common configure.client COPYING debian hobbitd lib README RELEASENOTES web bbnet build client configure configure.server CREDITS docs include pkg README.CLIENT rpm [tjyang@fc6 trunk]$ pwd /home/tjyang/hobbitmon/branches/tjyang/trunk [tjyang@fc6 trunk]$ ls bbdisplay bbproxy Changes common configure.client COPYING debian hobbitd lib README RELEASENOTES web bbnet build client configure configure.server CREDITS docs include pkg README.CLIENT rpm [tjyang@fc6 trunk]$ ls bbdisplay bbproxy Changes common configure.client COPYING debian hobbitd lib README RELEASENOTES web bbnet build client configure configure.server CREDITS docs include pkg README.CLIENT rpm [tjyang@fc6 trunk]$ history |grep commit 1159 svn commit -m "T.J. Yang's copy of hobbit" 1217 history |grep commit 1240 history |grep commit [tjyang@fc6 trunk]$ svn commit -m "add pkg directory" Sending trunk/README Adding trunk/pkg Adding trunk/pkg/tww Transmitting file data . Committed revision 5646. [tjyang@fc6 trunk]$
2 月 9 日,Henrik 在列表中发布了以下路线图。最近我还没怎么听到消息,所以不知道它是否改变了。
版本 4.4
- 支持 SNMP 用于数据收集
- 基于 RRD 文件中收集的数据更新状态(这真的很棒 - 从本质上讲,*任何*放入 RRD 文件的值都可以触发 Xymon 中的新状态或修改后的状态。因此,例如,您可以更改“http”测试的状态为红色,如果网页的响应时间超过 5 秒)。
- 状态“抖动”处理,用于捕获快速变化的状态。
版本 4.5
- 支持客户端和 Xymon 之间的通信以使用压缩和/或加密。
- 支持通过 SSL 证书进行客户端身份验证(因此您无法伪造客户端消息)。
版本 4.6
- 修改后的 Web 界面 - 消除对基于 Web 服务器的身份验证的需求,并为各种 Xymon 组件提供更细粒度的授权。
- 每个用户自定义登录页面,因此登录将始终显示用户负责/被允许访问的那些系统。
在路上我会引入一个新的“ping”测试守护程序 - 我正在接近 ping 所有主机需要超过 5 分钟的时间(我有很多主机)。因此需要做些什么,我认为我知道怎么做。
Tasks that most team member agree to implement.
- 软件质量保证测试套件。
- 将所有 bb 模块从 deadcat.net 迁移到 hobbit。
- 内置 SLA 报告。
- 更好的主题支持。
- 提供 hobbit 服务器和 hobbit 客户端之间的加密通信管道。
- hobbit 消息压缩。
- ipv6
- 4.2.x 维护版本。
- 重新编写警报模块使其正常工作。;) 它目前存在缺陷。
这是一个人员列表,他们在以下 R&R 领域为 Xymon 社区贡献时间和技能。
- 项目管理员
- 拥有 sourceforge 上项目管理员的权限。
- 将票证分配给下面列出的不同人员。
- 授予 sourceforge 上新的开发者权限.
- 让人员在资源有限且无报酬的情况下作为团队工作。
- 开发
- 了解 Xymon 源代码树。
- 进行源代码文档化。
- 处理来自问题跟踪器的票证。
- 应用来自 Xymon 社区的提交的补丁。
- 实现新的请求功能
- 文档
- 使用 Xymon 功能更新 troff 文件。
- 维护 troff2html 流程。
- 使用 Latex 为 Xymon 创建出版级手册和流程。
- 使用 latex2troff 工具生成 Xymon troff 手册页源代码。
- 在“make”命令流程中自动化文档生成。
- 使用 Xymon 功能更新 troff 文件。
- 最终用户支持
- 回答在 xymon 用户电子邮件列表中提出的问题。
- 维护 Xymon 常见问题解答。
- 测试新的 Xymon 功能或验证错误。
- 模块开发
- 编写新的 Xymon 客户端外部模块。
- 编写 Xymon 服务器端外部模块。
- 维护孤儿 Xymon 模块。
- 维护 Xymon 模块开发指南。
姓名 | 项目管理员 | 开发 | 文档 | 最终用户支持 | 模块开发 |
---|---|---|---|---|---|
Henrik Størner | 是 | ||||
T.J. Yang | 是 | 是 | 是 | ||
Jerald Sheets | 是 | ||||
Josh Luthman | |||||
Malcolm Hunter | 是 | 是 | |||
Japheth J.C. Cleaver | |||||
Steve Holmes | 是 | 是 | ? | ||
Damien Martins(又名 doctor madness) | 否 | 是 | 是 | 否 | |
dubby | 是 | ||||
Flemming | 是 | ||||
Christoph Berg | 是 | 是 | |||
Vadim Pushkin | 是 | ||||
Martin Ward | 是 | ||||
Buchan Milne | 是 | ||||
Rich Smrcina | 是 | ||||
Kenneth Langford | 是 | ||||
Padraig Lennon | |||||
David Baldwin | 是 | ||||
Ralph Mitchell | 是 | 是 | |||
此处替换虚拟模板 | 管理员 Y/N | 开发 Y/N | 文档 Y/N | 用户支持 Y/N | 模块开发 Y/N |
Olivier AUDRY | 是 | 是 | |||
Neil Franken | 是 | 是 | |||
Peter Toft |
- blingme:Mandriva
- Christoph Berg(Myon):debian
具有写入权限的开发者
[编辑 | 编辑源代码]- Henrik Stoerner:http://www.hswn.dk
- 让 Big Brother 系统监控器重新开放。
- 将 Big Brother shell 脚本部分重写为 C 代码以加快性能。
- 亚马逊愿望清单
- Rich Smrcina
- Buchan Milne
- T.J. Yang
- hobbit wiki 书籍项目。
- 自动配置 hobbit.
- hobbit 文档项目。
- 将使用 latex 创建 hobbit 手册。
- hobbit 软件构建、包构建和部署流程的数字化。
- 用于 Hobbit 开发的 OpenSolaris VMWare 设备。
- 将 EXTJS 3.0 用于 hobbit 菜单系统。
- Vernon Everett
- hobbit wiki 和文档。
- Etienne GRIGNON([email protected])
- Francesco Duranti <[email protected]>
- 能够修补 hobbit 源代码。
- http://www.hswn.dk/hobbiton/2006/10/msg00080.html
- TWW Inc.
- 使用 TWW 工具集打包 hobbit 客户端和服务器。
Manon Goo <[email protected]> Alex Tang <[email protected]> Tim Hudson ([email protected]) Steve Reid <[email protected]> Thomas Roessler <[email protected]> Wei Dai <[email protected]> Eric Young ([email protected]) Charles Goyard <[email protected]> Marco Avvisano Paul Backer Olivier Beau Adamets Bluejay Brian Buchanan Massimo Carnevali Douwe Dijkstra Francesco Duranti Lars Ebeling Tom Georgoulias Laurent Grilli Kevin Hanrahan Asif Iqbal Charles Jones Thomas J Jones Uwe Kirbach Joshua Krause Patrick Lin Brian Lynch Thomas Mattsson Michael Fisher Daniel J McDonald Werner Michels Christian Perrier Jure Peternel William Richardson Torsten Richter Chris Ricker Tim Rotunda Thomas Rucker Mirko Saam Thomas Schfer Tom Schmidt Eric Schwimmer Bill Simaz Gavin Stone-Tolcher Jeff Stoner David Stuffle Christian Thibodeau Rick Waegner Rob Watson
本节描述将 hobbit 源代码树转换为自动工具控制的过程。
- 为了提高跨操作系统平台的可移植性。
- 规划 I18n 和 L10n。
- 成为真正的 GNU 软件,需要使用 autotool。
- autotools 教程 并阅读 pdf 幻灯片.
- 在 hello world 示例上进行实际测试。
- 使用 autoscan 的示例.
- 确保您的 autotool 集具有以下版本。
GNU Autoconf 2.61 (November 2006) GNU Automake 1.10 (October 2006) GNU Libtool 1.5.24 (June 2007) GNU Gettext 0.17 (November 2007)
- 下载 最新的 hobbit 源代码压缩包.
- 运行 autoscan 获取 configure.scan,然后将其修改为 configure.ac。
- 将 lib/Makefile demotool/Makefile ... 等转换为 Makfile.am。
- 微调 configure.ac 以接受配置选项作为配置选项。
- 在 configure.ac 中支持 Linux 和 Solaris 操作系统设置。
- 当前
- Henrik Stroner 使用 troff 生成手册页,以便我们拥有 RTFM 类型的文档。
- troff2html 也用于为 Web 浏览器查看创建 html 页面。
- 增强提案。
- 使用 latex+dia+make+wiki 创建出版级文档
- 使用目录、索引、参考文献和图来说明与 Xymon 相关的主题。
- 生成 Xymon 用户指南。
- 生成 Xymon 开发者指南
- 生成 Xymon 系统管理员指南。
- 生成 Xymon 幻灯片,用于演示目的。
- 使用 Wiki 文档内容孵化。
- 为不同目的生成 html、RTF 和 pdf。
- 要求开发团队在源代码文档中使用 doxygen 语法。
- 使用 mvc 获取 hobbit wiki 源代码
- 将 mediawiki 源代码转换为 latex。
运行测试用例以验证代码更改是否正常。
- hobbit-4.0.3 的构建目录中的测试脚本,确保依赖软件在构建机器上。
build/perl.sh build/fping.sh build/rrd.sh build/ssl.sh build/ldap.sh build/pcre.sh
- 此 hobbit 客户端的特性
- 此 hobbit 客户端将使用本地帐户和组,以避免对 NIS 和 NFS 的依赖。
- 它将使用 SMF 启动/停止 hobbit 客户端。
- 它将使用 sudo 或 Solaris 10 的 ACL 从 OpenSolaris 中读取受限信息。
- hobbit-client-serverconf 是 hobbit 客户端的简化版本,不进行本地消息处理。
- hobbit-client-local 将执行一些处理过滤,它需要更多依赖软件。
- 它使用 /opt/hobbitclient42 作为安装路径。
- svcadm disable/enable network:/hobbit-client-serverconf
- OpenSolaris 2008.05
-bash-3.2# uname -a SunOS opensolaris 5.11 snv_86 i86pc i386 i86pc -bash-3.2# cat /etc/release Open Solaris 2008.05 snv_86_rc2a X86 Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms. Assembled 23 April 2008 -bash-3.2#
- 安装了 Sun 和 SUNW gcc-3.4.3 编译器。
- 如果未安装,请运行 “pkg install sunstudioexpress” 和 “pkg install SUNWgcc”。
-bash-3.2# pkg info sunstudioexpress SUNWgcc Name: sunstudioexpress Summary: Sun Studio Express - C, C++, & Fortran compilers and Tools State: Installed Authority: opensolaris.org (preferred) Version: 0.2008.5 Build Release: 5.11 Branch: 0.86 Packaging Date: Wed Apr 30 21:10:32 2008 Size: 566.2 MB FMRI: pkg:/[email protected],5.11-0.86:20080430T211032Z Name: SUNWgcc Summary: gcc - The GNU C compiler State: Installed Authority: opensolaris.org (preferred) Version: 3.4.3 Build Release: 5.11 Branch: 0.86 Packaging Date: Sat Apr 26 18:22:21 2008 Size: 60.4 MB FMRI: pkg:/[email protected],5.11-0.86:20080426T182221Z -bash-3.2#
[root] cat build/makerpm.sh #!/bin/sh REL=$1 if [ "$REL" = "" ]; then echo "Error - missing release number" exit 1 fi cd ~/hobbit rm -rf rpmbuild # Setup a temp. rpm build directory. mkdir -p rpmbuild/RPMS rpmbuild/RPMS/i386 rpmbuild/BUILD rpmbuild/SPECS rpmbuild/SRPMS rpmbuild/SOURCES cat >rpmbuild/.rpmmacros <<EOF1 # Default macros for my enviroment. %_topdir `pwd`/rpmbuild %_tmppath /tmp EOF1 cat >rpmbuild/.rpmrc <<EOF2 # rpmrc buildarchtranslate: i386: i386 buildarchtranslate: i486: i386 buildarchtranslate: i586: i386 buildarchtranslate: i686: i386 EOF2 cat rpm/hobbit.spec | sed -e "s/@VER@/$REL/g" >rpmbuild/SPECS/hobbit.spec cp rpm/hobbit-init.d rpmbuild/SOURCES/ cp rpm/hobbit.logrotate rpmbuild/SOURCES/ mkdir -p rpmbuild/hobbit-$REL for f in bbdisplay bbnet bbpatches bbproxy build common docs hobbitd include lib scripts do find $f/ | grep -v RCS | cpio -pdvmu ~/hobbit/rpmbuild/hobbit-$REL/ done cp -p Changes configure COPYING CREDITS README ~/hobbit/rpmbuild/hobbit-$REL/ find ~/hobbit/rpmbuild/hobbit-$REL -type d|xargs chmod 755 cd rpmbuild tar zcf SOURCES/hobbit-$REL.tar.gz hobbit-$REL rm -rf hobbit-$REL HOME=`pwd` rpmbuild -ba --clean SPECS/hobbit.spec rpm --addsign RPMS/i?86/hobbit-$REL-*.i?86.rpm mv RPMS/i?86/hobbit-$REL-*.i?86.rpm SRPMS/hobbit-$REL-*.src.rpm ../rpm/pkg/ [root]
- 订阅 hobbit 邮件列表
- 在 en.wikibooks.org 上创建账户,参与 hobbit 文档的编写。
- 从 https://wikibooks.cn/wiki/CPAM_with_TWW 学习,参与 hobbit 自动化跨平台软件打包的工作。
- 从这里下载 OpenSolaris VMWare 镜像(待定)。
- 从这里安装 VMWare player 3.0(待定)。
- 主机信息
bash-3.00# which cvs /opt/csw/bin/cvs bash-3.00# uname -a SunOS unknown 5.10 Generic i86pc i386 i86pc bash-3.00# which gcc /opt/csw/gcc3/bin/gcc bash-3.00# which gmake /opt/csw/bin/gmake bash-3.00#
- 将 TWW 工具下载到你的系统
- 编译 hobbit*.[sb|pb]。
- 将你的修复、补丁、模块添加至 sourceforge.net。
So the core design looks like this: Network tests --\ \ TCP:1984 \ IPC Clients ----------> hobbitd --------> hobbitd_channel ---> worker module / Sh. mem. stdin / Custom tests ---/
System Monitoring with Hobbit/HOWTO/Custom Monitoring Scripts for Hobbit http://www.hswn.dk/hobbit/help/hobbit-tips.html#scripts
- 优点
- Hobbit 服务器和客户端需要跨平台,因此需要使用 CPAM/TWW。
- 就像 Emacs 编辑器一样,它可以在任何地方运行,不需要许可证。TWW 工具是 GPL 开源的,所以它可以移植到任何操作系统。
- 一种结构化的、自动化的方式来处理软件包的创建和管理。
- 缺点
- 需要学习新的知识。
- 改变人们的开发习惯很难。
- Solaris Sparc
- RH AS 3.0
- HP-UX 11.11
- bbwin (Xymon 客户端) 使用 c++ 实现。它需要像 boost c++ 库和 tinyXML 这样的开源软件。
- 它使用的打包工具是微软的开源打包工具 - WiX,用于进行 Win32 打包。
- 详细的构建说明在 bbwin 项目网站的 build.txt 中。
- 您可以通过两种方式构建 BBWin.msi:
- 使用微软的 make:nmake
- 在 VS2008 中使用“生成解决方案”。
以下是如何创建一个 Windows XP 开发环境,以便您可以创建自己的 BBWin.msi。
- 安装 hhc.exe,它用于将 html 文档编译成 windows chm 帮助文件。
- 将“C:\Program Files\HTML Help Workshop”添加到 PATH,以便可以访问 hhc.exe。
- 安装 Visual Studio 2008 Standard 或 Professional 版本。
- 确保您的 cmd.exe 添加了以下 PATH 名称。在您的 DOS 提示符中输入 echo %PATH% %INCLUDE% %LIB%。
- PATH
- "LIB=C:\Program Files\Microsoft Platform SDK\Lib\.;C:\Program Files\Microsoft Visual Studio 8\VC\LIB;"
- INCLUDE
INCLUDE=C:\Program Files\Microsoft Platform SDK\Include\.; C:\Program Files\Microsoft Platform SDK\Include\atl;C:\Program Files\Microsoft Visual Studio 8\VC\include
- 为您的 Windows 机器安装一个 svn 客户端。
- Windows Server 2003 SP1 Platform SDK Web 安装:它用于拥有完整的 sdk 来开发 Microsoft 操作系统上的程序。记住安装所有选项(包括 64 位和 32 位),以避免“atlthunk.lib not found”问题。
- 来自微软的 WiX 开源打包工具:它用于将编译后的二进制文件转换为 MS MSI 包格式。
- Boost C++ 库:这些强大的 C++ 库用于一些代理,将来肯定会在 BBWin 核心服务中使用。
- 下载 VS2008 的预编译 1.35 版本并将其安装在 C:\boost 目录下。
- TinyXML:BBWin 使用优秀的 TinyXML 库来加载配置 XML。您不需要下载和安装它。TinyXML 源代码包含在 BBWin 源代码中。
- 准备您的源代码编辑器
- 签出 bbwin src。
- 使用命令“svn co https://bbwin.svn.sourceforge.net/svnroot/bbwin bbwin”
- 更改 Makefile 代码以指向 C:\boost 安装。
- 修改 Makefile 以将 INCLUDE 指向 C:\boost,并将 LIB 指向包含 C:\boost\lib\*.lib 的位置。
- 修改 C/C++ iclude c:\boost,并将链接器指向包含 c:\boost\lib\* 的位置。
- 可选软件安装
- 安装 cygwin 以在您的 Windows 机器上获得强大的 Unix 环境。因此,您可以运行以下命令来清理 *.obj 文件,而当前的 makefile 无法做到这一点。
- 通过删除 Setup/*.msi 来清理 Release 目录
$ rm Setup/* $ rm Release/*
BBWin.msi 创建过程在“C:\BBWin\trunk\Setup\Makefile”中自动执行。此 makefile 将从“C:\BBWin\trunk\Makefile”中调用。
- 确保您的 nmake 命令可用。
C:\bbwin-src\trunk>nmake -help Microsoft (R) Program Maintenance Utility Version 8.00.50727.762 Copyright (C) Microsoft Corporation. All rights reserved. Usage: NMAKE @commandfile NMAKE [options] [/f makefile] [/x stderrfile] [macrodefs] [targets] Options: /A Build all evaluated targets /B Build if time stamps are equal /C Suppress output messages /D Display build information /E Override env-var macros /ERRORREPORT:{NONE|PROMPT|QUEUE|SEND} Report errors to Microsoft /G Display !include filenames /HELP Display brief usage message /I Ignore exit codes from commands /K Build unrelated targets on error /N Display commands but do not execute /NOLOGO Suppress copyright message /P Display NMAKE information /Q Check time stamps but do not build /R Ignore predefined rules/macros /S Suppress executed-commands display /T Change time stamps but do not build /U Dump inline files /Y Disable batch-mode /? Display brief usage message C:\bbwin-src\trunk>
- cd 到 c:\bbwin 的顶层源代码目录。
- 键入“nmake”以启动构建。
- 错误信息
C:\bbwin\trunk\Core\Agents\common>nmake Microsoft (R) Program Maintenance Utility Version 9.00.30729.01 Copyright (C) Microsoft Corporation. All rights reserved. cl -Zi -Od -DDEBUG -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_X 86_=1 -DWIN32 -D_WIN32 -W3 -D_WINNT -D_WIN32_WINNT=0x0500 -DNTDDI_VERSION=0x050 00000 -D_WIN32_IE=0x0500 -DWINVER=0x0500 /EHsc /I ../.. /I C:\boost\include\boos t-1_33_1 -D_MT -MTd SystemCounters.cpp SystemCounters.cpp SystemCounters.cpp(20) : fatal error C1083: Cannot open include file: 'atlbase.h ': No such file or directory NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN \cl.EXE"' : return code '0x2' Stop. C:\bbwin\trunk\Core\Agents\common>
- 确保您有以下目录和文件,如果没有,则需要使用 VS 非 Express 版本。
C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\atlbase.h
- 目标是使用 cl MS 编译器时摆脱“ -D_MT -MTd”。
- 在代码库的 cygwin shell 中运行此命令,“find . -type f -name Makefile -exec perl -pi -e 's!cvarsmt!conlibsdll!' {} \;”,以将 cvarsmt 替换为 conlibsdll。我不知道不使用多线程库构建代码的确切影响。
* LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
[编辑 | 编辑源代码]*** C:\bbwin09\trunk\Core\Agents\procs *** "C:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -nologo /L link /DLL procs.obj procs.res -out:procs.dll /LIBPATH:C:\boost\lib libboost_date_time-vc80-mt-s.lib Microsoft (R) Incremental Linker Version 8.00.50727.762 Copyright (C) Microsoft Corporation. All rights reserved. LIBCMT.lib(invarg.obj) : error LNK2005: __initp_misc_invarg already defined in LIBCMTD.lib(invarg.obj) LIBCMT.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in LIBCMTD.lib(invarg.obj) LIBCMT.lib(invarg.obj) : error LNK2005: __set_invalid_parameter_handler already defined in LIBCMTD.lib(invarg.obj) LIBCMT.lib(invarg.obj) : error LNK2005: __get_invalid_parameter_handler already defined in LIBCMTD.lib(invarg.obj) LIBCMT.lib(invarg.obj) : error LNK2005: "void __cdecl _invoke_watson(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invoke_watson@@YAXPBG00II@Z) already defined in LIBCMTD.lib(invarg.obj) LIBCMT.lib(invarg.obj) : error LNK2005: __invalid_parameter already defined in LIBCMTD.lib(invarg.obj) LIBCMT.lib(invarg.obj) : error LNK2005: "void __cdecl _invalid_parameter(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invalid_parameter@@YAXPBG00II@Z) already defined in LIBCMTD.lib(invarg.obj) LIBCMT.lib(invarg.obj) : error LNK2005: ___pInvalidArgHandler already defined in LIBCMTD.lib(invarg.obj) Creating library procs.lib and object procs.exp LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library procs.dll : fatal error LNK1169: one or more multiply defined symbols found NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\link.EXE"' : return code '0x491' Stop. *** C:\bbwin09\trunk\Core\Agents\sample *** "C:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -nologo /L *** C:\bbwin09\trunk\Core\Agents\bbwinupdate *** "C:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -nologo /L C:\bbwin09\trunk\Core>
- http://msdn.microsoft.com/en-us/library/Aa267384
- 类似问题的可能的修复.
- vc6 to vc8.
- 尝试使用“/NODEFAULTLIB:library”链接。
C:\bbwin09\trunk\Core\Agents\procs>nmake clean nmake clean Microsoft (R) Program Maintenance Utility Version 8.00.50727.762 Copyright (C) Microsoft Corporation. All rights reserved. erase /Q /S procs.res procs.obj procs.dll procs.exp procs.lib procs.obj Deleted file - C:\bbwin09\trunk\Core\Agents\procs\procs.res Deleted file - C:\bbwin09\trunk\Core\Agents\procs\procs.obj Deleted file - C:\bbwin09\trunk\Core\Agents\procs\procs.exp Deleted file - C:\bbwin09\trunk\Core\Agents\procs\procs.lib C:\bbwin09\trunk\Core\Agents\procs>nmake nmake Microsoft (R) Program Maintenance Utility Version 8.00.50727.762 Copyright (C) Microsoft Corporation. All rights reserved. cl -Zi -Od -DDEBUG -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_X86_=1 -DWIN32 -D_WIN32 -W3 -D_WINNT -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0500 -DWINVER=0x0500 /EHsc /I ../.. /I ../common /I C:\boost\include\boost-1_33_1 -D_MT -MTd procs.cpp procs.cpp C:\boost\include\boost-1_33_1\boost/date_time/c_time.hpp(68) : warning C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. C:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(114) : see declaration of 'localtime' C:\boost\include\boost-1_33_1\boost/date_time/c_time.hpp(75) : warning C4996: 'gmtime': This function or variable may be unsafe. Consider using gmtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. C:\Program Files\Microsoft Visual Studio 8\VC\include\time.inl(101) : see declaration of 'gmtime' C:\boost\include\boost-1_33_1\boost/utility/enable_if.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss C:\boost\include\boost-1_33_1\boost/lexical_cast.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss C:\boost\include\boost-1_33_1\boost/utility/enable_if.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss C:\boost\include\boost-1_33_1\boost/type_traits/is_base_and_derived.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss C:\boost\include\boost-1_33_1\boost/lexical_cast.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss C:\boost\include\boost-1_33_1\boost/tokenizer.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss C:\boost\include\boost-1_33_1\boost/lexical_cast.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss C:\boost\include\boost-1_33_1\boost/lexical_cast.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss C:\boost\include\boost-1_33_1\boost/tokenizer.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss C:\boost\include\boost-1_33_1\boost/lexical_cast.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss C:\boost\include\boost-1_33_1\boost/format/internals.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss C:\boost\include\boost-1_33_1\boost/format/alt_sstream_impl.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss C:\boost\include\boost-1_33_1\boost/format/internals.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss C:\boost\include\boost-1_33_1\boost/format/alt_sstream_impl.hpp(252) : warning C4996: 'std::char_traits<char>::copy': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators' C:\Program Files\Microsoft Visual Studio 8\VC\include\iosfwd(446) : see declaration of 'std::char_traits<char>::copy' C:\boost\include\boost-1_33_1\boost/format/alt_sstream_impl.hpp(223) : while compiling class template member function 'int boost::io::basic_altstringbuf<Ch,Tr,Alloc>::overflow(int)' with [ Ch=char, Tr=std::char_traits<char>, Alloc=std::allocator<char> ] C:\boost\include\boost-1_33_1\boost/format/format_class.hpp(136) : see reference to class template instantiation 'boost::io::basic_altstringbuf<Ch,Tr,Alloc>' being compiled with [ Ch=char, Tr=std::char_traits<char>, Alloc=std::allocator<char> ] procs.cpp(235) : see reference to class template instantiation 'boost::basic_format<Ch>' being compiled with [ Ch=char ] Rc /r -DWIN32 -D_WIN32 -DWINVER=0x0500 -DDEBUG -D_DEBUG /fo procs.res procs.rc link /NODEFAULTLIB:library procs.obj procs.res -out:procs.dll /LIBPATH:C:\boost\lib libboost_date_time-vc80-mt-s.lib Microsoft (R) Incremental Linker Version 8.00.50727.762 Copyright (C) Microsoft Corporation. All rights reserved. LIBCMT.lib(invarg.obj) : error LNK2005: __initp_misc_invarg already defined in LIBCMTD.lib(invarg.obj) LIBCMT.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in LIBCMTD.lib(invarg.obj) LIBCMT.lib(invarg.obj) : error LNK2005: __set_invalid_parameter_handler already defined in LIBCMTD.lib(invarg.obj) LIBCMT.lib(invarg.obj) : error LNK2005: __get_invalid_parameter_handler already defined in LIBCMTD.lib(invarg.obj) LIBCMT.lib(invarg.obj) : error LNK2005: "void __cdecl _invoke_watson(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invoke_watson@@YAXPBG00II@Z) already defined in LIBCMTD.lib(invarg.obj) LIBCMT.lib(invarg.obj) : error LNK2005: __invalid_parameter already defined in LIBCMTD.lib(invarg.obj) LIBCMT.lib(invarg.obj) : error LNK2005: "void __cdecl _invalid_parameter(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invalid_parameter@@YAXPBG00II@Z) already defined in LIBCMTD.lib(invarg.obj) LIBCMT.lib(invarg.obj) : error LNK2005: ___pInvalidArgHandler already defined in LIBCMTD.lib(invarg.obj) Creating library procs.lib and object procs.exp LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library LIBCMTD.lib(crt0.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup procs.dll : fatal error LNK1120: 1 unresolved externals NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\link.EXE"' : return code '0x460' Stop. C:\bbwin09\trunk\Core\Agents\procs>
- 签出源代码
- 打开 bbwin.sln
follow text will turn into wiki procedure above. Build file for BBWin 2 ============================================================== 3 4 This file explains you how to build BBWin from the sources. 5 6 7 Getting the last sources 8 ======================== 9 10 BBWin is developped in C++ (the Standard Template Library and the Standard C++ Library 11 are used) 12 The source of BBWin are available from the sourceforge subversion 13 repository for the BBWin projects : 14 http://svn.sourceforge.net/viewcvs.cgi/bbwin/ 15 16 17 Install the tools 18 ================= 19 20 BBWin has been developped thanks to many tools. You should install them to 21 build BBWin easily without troubles. 22 23 Windows Platform SDK 2003 : it is used for the development environment. 24 It is use to have the complete sdk to develop programs on Microsoft OS. 25 You can download it for free from microsoft website : 26 http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en 27 You will need 1 gb of free space if you install every thing :) 28 BBWin Makefiles are using the nmake tool and Makefile templates from the SDK. 29 This SDK is very important for anyone who would like to start developing under Windows. 30 31 Visual C++ Toolkit : it is the compiler used to build the bbwin release 32 It is the original compiler from Visual Studio 2003 Professional (Code optimisation is included) 33 You can download it for free from the Microsoft website : 34 http://msdn.microsoft.com/visualc/vctoolkit2003/ 35 36 Wix Toolkit : this package is used to build the BBWin MSI installer 37 You should install it and have the bin directory in your current path 38 http://sourceforge.net/projects/wix/ 39 40 TinyXML : BBWin used the excellent TinyXML library for the configuration loading XML. 41 You do not need to install it. TinyXML sources are included in BBWin sources. 42 43 Boost Lib : These powerful C++ libraries are used for some agents and will be 44 certainly used in the BBWin core service in the future. 45 You should get the boost C++ from the website : 46 https://boost.ac.cn/ 47 Build it in the directory C:\boost so you won't have to change BBWin Makefiles. 48 If you want to build BBWin with Visual C++ Express 2005, please read the following page : 49 https://boost.ac.cn/tools/build/v1/vc-8_0-tools.html 50 51 52 I recommand you the Notepad++ editor if you are looking for a nice free code editor. 53 You can download it from : 54 http://notepad-plus.sourceforge.net 55 56 57 58 Building the BBWin with Visual C++ Express 2005 59 =============================================== 60 61 Open the BBWin.sln file at the top directory of the project 62 First, you should prepare your Visual C++ configuration by adding 63 in the default bin, include and lib directories the different directories from : 64 65 - the platform SDK 66 - the boost libraries 67 68 Then just build the solution. 69 70 71 Building the BBWin with Visual C++ ToolKit 2003 72 =============================================== 73 74 Open a Platform SDK Build command line environment (installed with the Platform SDK) 75 Go the top directory of the BBWin source tree 76 Type nmake 77 Go get a cup of coffee 78 It's ready ! 79 80 If you get errors, it may be due to some errors in your include or lib path. 81 Make sure the environment variables %Lib%; %Path% and %Include% are correctly 82 configured. You may need to add some directories. 83 84 Building process order 85 ====================== 86 87 1) BBWin core service 88 2) Agents 89 3) Externals (needing compilation) 90 4) Setup MSI 91
- 使用 nmake 创建 BBwin.msi 的示例
C:\tmp\test\trunk\Setup>nmake clean Microsoft (R) Program Maintenance Utility Version 8.00.50727.42 Copyright (C) Microsoft Corporation. All rights reserved. erase /q /s BBWin.dll BBWin.exp UpgradeConfiguration.obj BBWin.res BBWin .wixobj BBWin.msi BBWin.lib Deleted file - C:\tmp\test\trunk\Setup\BBWin.wixobj Deleted file - C:\tmp\test\trunk\Setup\BBWin.msi C:\tmp\test\trunk\Setup>nmake Microsoft (R) Program Maintenance Utility Version 8.00.50727.42 Copyright (C) Microsoft Corporation. All rights reserved. candle /nologo BBWin.wxs BBWin.wxs light /nologo BBWin.wixobj C:\tmp\test\trunk\Setup>
- hobbit-4.0.3.sb 是一个 XML 文件,包含构建 hobbit-4.03 的详细步骤,用于不同操作系统的二进制代码。它需要针对“sb”工具运行。
- 待定。
[root] cat hobbit-4.0.3.sb <?xml version="1.0"?> <programs> <program name="hobbit" version="4.0.3" revision="1"> <module name="default"> <build-name>hobbit-4.0.3</build-name> <install-name>hobbit</install-name> <syntaxhighlights> <syntaxhighlight path="src/hobbit-4.0.3.tar.gz" /> </sources> <dependencies> <depend var="fping">fping24</depend> <depend var="APACHESS">apacheS2048</depend> <depend var="RRDTOOL">rrdtool10</depend> <depend var="PCRE">libpcre44</depend> <depend var="OPENSSL">libopenssl097</depend> <depend var="OPENLDAP">openldap2127</depend> </dependencies> <!-- ###################################### # Platform specific configuration ###################################### --> <configure> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) ;; *-hpux10.20) ;; *-linux*) ;; *-solaris2*) ;; esac set -x rm -f Makefile TARGET=hobbit \ ENABLESSL=y \ ENABLELDAP=y \ ENABLELDAPSSL=y \ BBUSER=hobbit \ BBTOPDIR=/opt/TWWfsw/hobbit \ BBVAR=/var/opt/TWWfsw/hobbit/data \ BBHOSTURL=/hobbit \ CGIDIR=/etc/opt/TWWfsw/apacheS2048/cgi-bin \ BBCGIURL=/hobbit-cgi \ SECURECGIDIR=/etc/opt/TWWfsw/apacheS2048/cgi-secure \ SECUREBBCGIURL=/hobbit-seccgi \ HTTPDGID=il02w-web \ BBLOGDIR=/var/opt/TWWfsw/hobbit/log/hobbit \ BBHOSTNAME=localhost \ BBHOSTIP=127.0.0.1 \ MANROOT=/opt/TWWfsw/hobbit/man \ BARS=all \ USENEWHIST=y \ PIXELCOUNT=960 \ MAKE=/opt/TWWfsw/bin/gmake \ INSTALLBINDIR=/opt/TWWfsw/hobbit/server/bin \ INSTALLETCDIR=/opt/TWWfsw/hobbit/server/etc \ INSTALLWEBDIR=/opt/TWWfsw/hobbit/web \ INSTALLEXTDIR=/opt/TWWfsw/hobbit/server \ INSTALLTMPDIR=/var/opt/TWWfsw/hobbit/tmp \ INSTALLWWWDIR=/opt/TWWfsw/hobbit/server/www ./configure \ --rrdinclude /opt/TWWfsw/rrdtool10/include \ --rrdlib /opt/TWWfsw/rrdtool10/lib \ --pcreinclude /opt/TWWfsw/libpcre44/include \ --pcrelib /opt/TWWfsw/libpcre44/lib \ --sslinclude /opt/TWWfsw/libopenssl097/include \ --ssllib /opt/TWWfsw/libopenssl097/lib \ --ldapinclude /opt/TWWfsw/openldap2127/include \ --ldaplib /opt/TWWfsw/openldap2127/lib \ --fping /opt/TWWfsw/fping24/sbin/fping ]]> </configure> <!-- ###################################### # Now build (compile) the software ###################################### --> <build> <![CDATA[ case "${SB_SYSTYPE}" in *-hpux11.11) gmake ;; *-hpux10.20) ;; *-linux*) gmake ;; *-solaris2.[689]) gmake ;; esac ]]> </build> <install> <![CDATA[ ######################################################## # building hobbit on different OS ######################################################## case "${SB_SYSTYPE}" in *-hpux11.11) gmake install ;; *-hpux10.20) ;; *-linux*) gmake install ;; *-solaris2.[689]) LD_LIBRARY_PATH=/opt/TWWfsw/libopenssl097/lib export LD_LIBRARY_PATH gmake install ;; esac ## create man directory for TWW #ln -s /opt/TWWfsw/hobbit/server/bin /opt/TWWfsw/hobbit/bin #mkdir -p /opt/TWWfsw/hobbit/man #cp -rp /opt/TWWfsw/hobbit/server/www/help/manpages/* /opt/TWWfsw/hobbit/man # ]]> </install> <uninstall> <![CDATA[ set -x rm -rf /opt/TWWfsw/hobbit rm -rf /etc/opt/TWWfsw/apacheS2048/cgi-secure rm -rf /etc/opt/TWWfsw/apacheS2048/cgi-bin/bb-* rm -rf /etc/opt/TWWfsw/apacheS2048/cgi-bin/hobbit* rm -rf /var/opt/TWWfsw/hobbit ]]> </uninstall> </module> <notes> <note type="installation"> <para> This sb file is to digitalize the hobbit software build process for different OS. Original: 05/26/2005 T.J.Yang tj_yang at hotmail do com </para> </note> </notes> <changelog> </changelog> </program> </programs> [root]
[root] cat hobbit-4.0.3.pb <?xml version="1.0"?> <packages> <package name="hobbit" version="4.0.3" revision="1"> <package-manager name="depot"> <title>hobbit</title> <vendor>GPL</vendor> <description > </description> <install-name>hobbit</install-name> <pkgname-base>TWWhobbit</pkgname-base> <version>4.0.3</version> <revision>1</revision> <subpkg type="runtime"> </subpkg> </package-manager> <package-manager name="rpm4"> <category>System Environment/Daemons</category> <title>Hobbit System Monitoring Tool</title> <vendor>GNU</vendor> <description> Hobbit System Monitoring tool. An open-source version of Big Brother. </description> <install-name>hobbit</install-name> <pkgname-base>TWWhobbit</pkgname-base> <init name="/etc/init.d/TWWhobbit" path="pkg/hobbit-init-linux" /> <init link-src="/etc/rc2.d/S661hobbit" link-dest="/etc/init.d/TWWhobbit"/> <init link-src="/etc/rc1.d/K269hobbit" link-dest="/etc/init.d/TWWhobbit"/> <config>/etc/init.d/TWWhobbit</config> <version>4.0.3</version> <revision>1</revision> <subpkg type="runtime"> <depend pkgname-base="TWWperl561" title="perl 5.6.1" subpkg="runtime">v>=5.6.1 r>=1</depend> <depend pkgname-base="TWWrrdtool10" title="Round Robin Database" subpkg="runtime">v>=1.0.42</depend> <depend pkgname-base="TWWrrdtool10" title="Round Robin Database" subpkg="man">v>=1.0.42</depend> </subpkg> <subpkg type="conf"> <depend pkgname-base="TWWhobbit" title="Client: Big Brother System Monitoring Tool" subpkg="runtime">v>=4.0.3</depend> <postinstall path="pkg/postinstall-linux" /> <preremove path="pkg/preremove-linux" /> <postremove path="pkg/postremove-linux" /> </subpkg> </package-manager> </package> </packages> [root]
- fping
- apache web服务器
- rrdtool
- pcre
- openssl
- openldap
- 以下是构建hobbit-4.0.3的精确版本列表
<dependencies> <depend var="fping">fping24</depend> <depend var="APACHESS">apacheS2048</depend> <depend var="RRDTOOL">rrdtool10</depend> <depend var="PCRE">libpcre44</depend> <depend var="OPENSSL">libopenssl097</depend> <depend var="OPENLDAP">openldap2127</depend> </dependencies>
TBA.
Xymon的默认数据库后端是RRD(Roun-Robin Database)。
- 几乎与C的fopen函数代码一样快。
- 没有服务器进程,数据存储在普通文件中。
- 就像另一个rrd文件,可以同步到您的备用xymon服务器。
- 轻量级数据库。
- 存储机器的资产信息
- 序列号
- 操作系统类型
- 电脑制造商
- 租赁/自有
- 租赁到期时触发警报。
- 显示操作系统类型、制造商等的饼图。
- bb-hosts文件从主机数据库表中生成。
- Catalyst书籍1
- perl-5.10.0
- Fedora 11
- 书籍1中的地址簿示例。
- SQLite3
- Catalyst::Runtime,Catalyst::Plugins::*,Catalyst::Devel。
- 创建资产模式的SQL文件。
- 使用catalyst.pl使用示例模板启动您的MVC项目。
[tjyang@t-fedora11 test]$ catalyst.pl xymonasset created "xymonasset" created "xymonasset/script" created "xymonasset/lib" created "xymonasset/root" created "xymonasset/root/static" created "xymonasset/root/static/images" created "xymonasset/t" created "xymonasset/lib/xymonasset" created "xymonasset/lib/xymonasset/Model" created "xymonasset/lib/xymonasset/View" created "xymonasset/lib/xymonasset/Controller" created "xymonasset/xymonasset.conf" created "xymonasset/lib/xymonasset.pm" created "xymonasset/lib/xymonasset/Controller/Root.pm" created "xymonasset/README" created "xymonasset/Changes" created "xymonasset/t/01app.t" created "xymonasset/t/02pod.t" created "xymonasset/t/03podcoverage.t" created "xymonasset/root/static/images/catalyst_logo.png" created "xymonasset/root/static/images/btn_120x50_built.png" created "xymonasset/root/static/images/btn_120x50_built_shadow.png" created "xymonasset/root/static/images/btn_120x50_powered.png" created "xymonasset/root/static/images/btn_120x50_powered_shadow.png" created "xymonasset/root/static/images/btn_88x31_built.png" created "xymonasset/root/static/images/btn_88x31_built_shadow.png" created "xymonasset/root/static/images/btn_88x31_powered.png" created "xymonasset/root/static/images/btn_88x31_powered_shadow.png" created "xymonasset/root/favicon.ico" created "xymonasset/Makefile.PL" created "xymonasset/script/xymonasset_cgi.pl" created "xymonasset/script/xymonasset_fastcgi.pl" created "xymonasset/script/xymonasset_server.pl" created "xymonasset/script/xymonasset_test.pl" created "xymonasset/script/xymonasset_create.pl" [tjyang@t-fedora11 test]$ catalyst.pl
- perl Makefile.PL
[tjyang@t-fedora11 xymonasset]$ perl Makefile.PL include /var/www/html/test/xymonasset/inc/Module/Install.pm include inc/Module/Install/Metadata.pm include inc/Module/Install/Base.pm Cannot determine perl version info from lib/xymonasset.pm include inc/Module/Install/Catalyst.pm *** Module::Install::Catalyst include inc/Module/Install/Makefile.pm Please run "make catalyst_par" to create the PAR package! *** Module::Install::Catalyst finished. include inc/Module/Install/Scripts.pm include inc/Module/Install/AutoInstall.pm include inc/Module/Install/Include.pm include inc/Module/AutoInstall.pm *** Module::AutoInstall version 1.03 *** Checking for Perl dependencies... [Core Features] - Catalyst::Runtime ...loaded. (5.71001 >= 5.71001) - Catalyst::Plugin::ConfigLoader ...loaded. (0.22) - Catalyst::Plugin::Static::Simple ...loaded. (0.20) - Catalyst::Action::RenderView ...loaded. (0.09) - parent ...loaded. (0.221) - Config::General ...loaded. (2.42) *** Module::AutoInstall configuration finished. include inc/Module/Install/WriteAll.pm include inc/Module/Install/Win32.pm include inc/Module/Install/Can.pm include inc/Module/Install/Fetch.pm Writing Makefile for xymonasset Writing META.yml [tjyang@t-fedora11 xymonasset]$
当前的Xymon(Hobbit)是用C语言编写的,并使用CGI和html代码来组成一个简单的Web界面。最近,我们有几个javascript框架选择来升级xymon服务器,使用RIA Web界面。
- 从 hobbit 源代码树中移除 "unsigned char" 的使用。
find . -type f -name "*.[c|h]" -exec perl -pi -e 's!unsigned\schar!char!g' {} \;
- 将需要使用 unsigned 的字符进行类型转换。
- 赋值中指针目标的符号性不同
- "/usr/include/sys/socket.h:214: note: 预期 socklen_t * __restrict__ 但参数类型为 int *"
[tjyang@f12 4.3.0]$ gmake MAKE="gmake" CC="gcc" CFLAGS="-g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I`pwd`/include -DCLIENTONLY=1" LDFLAGS="" `pwd`/build/genconfig.sh Checking for socklen_t Checking for snprintf Checking for vsnprintf Checking for rpc/rpcent.h Checking for sys/select.h Checking for u_int32_t typedef Checking for PATH_MAX definition Checking for SHUT_RD/WR/RDWR definitions Checking for strtoll() config.h created <snip> gcc -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 -I. -I../include -c -o digest.o digest.c digest.c: In function âmd5hashâ: digest.c:40: warning: pointer targets in passing argument 2 of âmyMD5_Updateâ differ in signedness /home/tjyang/hobbitmon/branches/4.3.0/include/../lib/md5.h:18: note: expected âunsigned char *â but argument is of type âchar *â gcc -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 -I. -I../include -c -o encoding.o encoding.c encoding.c: In function âbase64encodeâ: encoding.c:31: warning: pointer targets in passing argument 1 of âstrlenâ differ in signedness /usr/include/string.h:397: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:34: warning: pointer targets in passing argument 1 of âstrlenâ differ in signedness /usr/include/string.h:397: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:50: warning: pointer targets in passing argument 1 of âstrlenâ differ in signedness /usr/include/string.h:397: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:60: warning: pointer targets in passing argument 1 of âstrlenâ differ in signedness /usr/include/string.h:397: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:75: warning: pointer targets in return differ in signedness encoding.c: In function âbase64decodeâ: encoding.c:86: warning: pointer targets in passing argument 1 of âstrlenâ differ in signedness /usr/include/string.h:397: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:114: warning: pointer targets in return differ in signedness encoding.c: In function âgetescapestringâ: encoding.c:125: warning: pointer targets in assignment differ in signedness encoding.c: In function ânlencodeâ: encoding.c:181: warning: pointer targets in assignment differ in signedness encoding.c:183: warning: pointer targets in passing argument 1 of âstrlenâ differ in signedness /usr/include/string.h:397: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:187: warning: pointer targets in assignment differ in signedness encoding.c:191: warning: pointer targets in assignment differ in signedness encoding.c:198: warning: pointer targets in passing argument 1 of â__builtin_strcspnâ differ in signedness encoding.c:198: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:198: warning: pointer targets in passing argument 1 of âstrlenâ differ in signedness /usr/include/string.h:397: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:198: warning: pointer targets in passing argument 1 of â__strcspn_c1â differ in signedness /usr/include/bits/string2.h:971: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:198: warning: pointer targets in passing argument 1 of â__strcspn_c2â differ in signedness /usr/include/bits/string2.h:982: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:198: warning: pointer targets in passing argument 1 of â__strcspn_c3â differ in signedness /usr/include/bits/string2.h:994: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:198: warning: pointer targets in passing argument 1 of â__builtin_strcspnâ differ in signedness encoding.c:198: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:198: warning: pointer targets in passing argument 1 of â__builtin_strcspnâ differ in signedness encoding.c:198: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c: In function ânldecodeâ: encoding.c:231: warning: pointer targets in passing argument 1 of â__builtin_strcspnâ differ in signedness encoding.c:231: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:231: warning: pointer targets in passing argument 1 of âstrlenâ differ in signedness /usr/include/string.h:397: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:231: warning: pointer targets in passing argument 1 of â__strcspn_c1â differ in signedness /usr/include/bits/string2.h:971: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:231: warning: pointer targets in passing argument 1 of â__strcspn_c2â differ in signedness /usr/include/bits/string2.h:982: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:231: warning: pointer targets in passing argument 1 of â__strcspn_c3â differ in signedness /usr/include/bits/string2.h:994: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:231: warning: pointer targets in passing argument 1 of â__builtin_strcspnâ differ in signedness encoding.c:231: note: expected âconst char *â but argument is of type âunsigned char *â encoding.c:231: warning: pointer targets in passing argument 1 of â__builtin_strcspnâ differ in signedness encoding.c:231: note: expected âconst char *â but argument is of type âunsigned char *â <snip> loadhosts.c: In function âbbh_find_itemâ: loadhosts.c:228: warning: return discards qualifiers from pointer target type loadhosts.c: In function âbbh_itemâ: loadhosts.c:540: warning: pointer targets in passing argument 1 of ânlencodeâ differ in signedness /home/tjyang/hobbitmon/branches/4.3.0/include/../lib/encoding.h:17: note: expected âunsigned char *â but argument is of type âchar *â loadhosts.c:540: warning: pointer targets in passing argument 2 of âaddtobufferâ differ in signedness /home/tjyang/hobbitmon/branches/4.3.0/include/../lib/strfunc.h:16: note: expected âchar *â but argument is of type âunsigned char *â loadhosts.c: In function âbbh_item_idâ: loadhosts.c:619: warning: return discards qualifiers from pointer target type <snip> msort.c: In function âmsortâ: msort.c:119: warning: passing argument 4 of âqsortâ from incompatible pointer type /usr/include/stdlib.h:756: note: expected â__compar_fn_tâ but argument is of type âint (*)(void **, void **)â <snip> sha2.c: In function âmySHA224_Finalâ: sha2.c:972: warning: pointer targets in passing argument 2 of âsha224_finalâ differ in signedness sha2.c:812: note: expected âunsigned char *â but argument is of type âchar *â sha2.c: In function âmySHA256_Finalâ: sha2.c:977: warning: pointer targets in passing argument 2 of âsha256_finalâ differ in signedness sha2.c:417: note: expected âunsigned char *â but argument is of type âchar *â gcc -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 -I. -I../include -c -o sig.o sig.c <snip> gcc -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 -I. -I../include -DCLIENTONLY -c -o timefunc-client.o timefunc.c ar cr hobbitclient.a osdefs.o cgiurls.o color-client.o digest.o encoding.o environ-client.o errormsg.o holidays.o ipaccess.o loadhosts.o md5.o memory.o misc.o msort.o rbtr.o rmd160c.o sendmsg.o sha1.o sha2.o sig.o stackio.o strfunc.o suid.o timefunc-client.o ranlib hobbitclient.a || echo "" gmake[1]: Leaving directory `/home/tjyang/hobbitmon/branches/4.3.0/lib' CC="gcc" CFLAGS="-g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I`pwd`/include -DCLIENTONLY=1" LDFLAGS="" RPATHOPT="-Wl,--rpath," SSLFLAGS="" SSLINCDIR="" SSLLIBS="" NETLIBS="" LIBRTDEF="-lrt" BBHOME="/home/xymon/client" gmake -C common client gmake[1]: Entering directory `/home/tjyang/hobbitmon/branches/4.3.0/common' <snip> gcc -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 -c -o bbdigest.o bbdigest.c bbdigest.c: In function âmainâ: bbdigest.c:48: warning: pointer targets in passing argument 2 of âdigest_dataâ differ in signedness /home/tjyang/hobbitmon/branches/4.3.0/include/../lib/digest.h:26: note: expected âunsigned char *â but argument is of type âchar *â gcc -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 -o ../client/bbdigest bbdigest.o ../lib/hobbitclient.a -lrt gmake[1]: Leaving directory `/home/tjyang/hobbitmon/branches/4.3.0/common' CC="gcc" CFLAGS="-g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I`pwd`/include -DCLIENTONLY=1" LDFLAGS="" RPATHOPT="-Wl,--rpath," SSLLIBS="" NETLIBS="" LIBRTDEF="-lrt" BBHOME="/home/xymon/client" gmake -C build all gmake[1]: Entering directory `/home/tjyang/hobbitmon/branches/4.3.0/build' gcc -o merge-lines -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 merge-lines.c gcc -o merge-sects -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 merge-sects.c gcc -o setup-newfiles -g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I/home/tjyang/hobbitmon/branches/4.3.0/include -DCLIENTONLY=1 -Wl,--rpath, setup-newfiles.c ../lib/hobbitclient.a -lrt setup-newfiles.c: In function âmainâ: setup-newfiles.c:27: warning: pointer targets in assignment differ in signedness setup-newfiles.c:79: warning: pointer targets in passing argument 1 of âstrstrâ differ in signedness /usr/include/string.h:340: note: expected âconst char *â but argument is of type âunsigned char *â gmake[1]: Leaving directory `/home/tjyang/hobbitmon/branches/4.3.0/build' CC="gcc" CFLAGS="-g -O2 -Wall -Wno-unused -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -I. -I`pwd`/include -DCLIENTONLY=1" BBHOME="/home/xymon/client" BBHOSTIP="127.0.0.1" LOCALCLIENT="no" NETLIBS="" LIBRTDEF="-lrt" gmake -C client all gmake[1]: Entering directory `/home/tjyang/hobbitmon/branches/4.3.0/client' <snip> msgcache.c: In function âmainâ: msgcache.c:537: warning: pointer targets in passing argument 3 of âacceptâ differ in signedness /usr/include/sys/socket.h:214: note: expected âsocklen_t * __restrict__â but argument is of type âint *â cat hobbitclient.cfg.DIST | sed -e 's!@BBHOSTIP@!127.0.0.1!g' >hobbitclient.cfg ../build/bb-commands.sh >>hobbitclient.cfg cat clientlaunch.cfg.DIST | sed -e 's!@CLIENTFLAGS@!!g' >clientlaunch.cfg gmake[1]: Leaving directory `/home/tjyang/hobbitmon/branches/4.3.0/client' Build complete. Now run 'gmake install' as root [tjyang@f12 4.3.0]$
- 为了兼容性,保留 cgi+html+tigramenu。
- 包含现代的 Javascript GUI 框架,如 extjs 或 jQuery。
- 使用 AJAX 从客户端提供实时的网页 GUI 更新。
- 等待 1 分钟以上才能看到网页上的变化,勉强可以接受,但希望避免。
- 使用 CSS 方便地更改主题和分辨率。
- 分辨率
- 主题
- 在不同视图中,允许对列进行细粒度的控制。
我发现将以下现有的开源软件组合在一起可以构成 Xymon 的新 GUI。最终用户仍然可以看到旧的 cgi+html GUI。
- 使用 extjs 作为新的 GUI,使用 miframe.js 在框架中包含旧的 tigra 菜单 GUI。
- 参见 Xymon 桌面原型.
[失效链接]
- Mediawik 命令行工具
- 一个用于自动化 hobbit 文档工作的 makefile 脚本。