寻觅生命中的那一片浅草......

文章属于类别 未分类

使Nagstamon支持Zabbix2.0.5

牛人太多了,下面这个项目叫Zagstamon,使Nagstamon支持Zabbix1.8的:

https://github.com/sergeyignatov/zagstamon.git
我们用的是2.0.5

我把它改了下,兼容1.8和2.0.5

我先fork到我自己这里来了,同时提交了pull request到源仓库

https://github.com/johncanlam/zagstamon.git

需要注意的是,Zabbix端要把主机组设置成普通组,我不是很懂,同事配的Zabbix,他说步骤是

管理,一般,其他,在发现到的主机组,设置一个不用被监控的组即可,例如现在是bat,你想bat可以显示,那么可以把它修改为test,那么test组就无法显示,而bat则可以显示了

Zabbix接口的一些命令:
获取认证信息
curl -i -X POST -H ‘Content-Type: application/json-rpc’ -d ‘{“params”: {“password”: “urpassword”, “user”: “uruser”}, “jsonrpc”: “2.0”, “method”: “user.authenticate”,”auth”: “”, “id”: 0}’ http://ur.zabbix.com/api_jsonrpc.php
输出,result就是认证信息
{“jsonrpc”:”2.0″,”result”:”18e3c644119b340587d94a39480104nf”,”id”:0}
获取主机信息,用了上面获取到的主机信息:
curl -i -X POST -H ‘Content-Type: application/json’ -d ‘{“jsonrpc”:”2.0″,”method”:”host.get”,”params”:{“output”:[“hostid”,”name”],”filter”:{“host”:””}},”auth”:”18e3c644119b340587d94a39480104nf”,”id”:1}’ http://ur.zabbix.com/api_jsonrpc.php
获取组信息:
curl -i -X POST -H ‘Content-Type: application/json’ -d ‘{“params”: {“filter”: {“name”: [“server_group_name”]}, “output”: “extend”, “with_monitored_items”: true}, “jsonrpc”: “2.0”, “method”: “hostgroup.get”, “auth”: “18e3c644119b340587d94a39480104nf”, “id”: 3}’ http://ur.zabbix.com/api_jsonrpc.php
输出,注意internal的值要是0才可以被zagstamon获取到它的状态:

{“groupid”:”13″,”name”:”server_group_name”,”internal”:”0″}

获取Zabbix版本:
curl -i -X POST -H ‘Content-Type: application/json’ -d ‘{“jsonrpc”: “2.0”, “method”: “apiinfo.version”, “auth”: “18e3c644119b340587d94a39480104nf”, “id”: 3}’ http://ur.zabbix.com/api_jsonrpc.php
最后,我打包了一个exe文件,下载地址
虽然nagstamon作者已经写好了build的Python脚本,我是直接运行的,在编译这个exe也费了一番功夫,最后发现,用ActiveState的Python 2.7编译是有问题的 ,最后找同事拿了个win7的虚拟机,安装官方的Python2.7,很顺利地编译成功了.

zz:网页版ssh终端

网页版ssh终端

zz:Selenium+Phantomjs数据抓取环境配置

直接发个地址,就不复制粘贴了
数据抓取的艺术(一):Selenium+Phantomjs数据抓取环境配置

func在openSUSE12.3上的问题

同样的程序,在CentOS上可以正常执行

func “*” ping

但在openSUSE上就有问题,经过调试发现,openSUSE下,site-packages有2个路径

通过下面的命令获取的是

import distutils.sysconfig
distutils.sysconfig.get_python_lib()
‘/usr/lib/python2.7/site-packages’

但func实际安装在

/usr/local/lib/python2.7/site-packages/func

需要修改代码:

vi /usr/local/lib/python2.7/site-packages/func/module_loader.py

module_file_path = “%s/%s” % (python_path, path)

下添加

if not os.path.isdir(module_file_path):
    python_path = ‘/usr/local/lib/python2.7/site-packages’
    module_file_path = “%s/%s” % (python_path, path)

在XP下编译OpenVPN2.1.4

为什么要编译OpenVPN
OpenVPN官方提供的Windows二进制文件默认是不包含从文件读取用户名密码功能的。
服务器端可以推送更大的路由表给客户端

安装步骤
注意:以下提到的安装路径皆为示例,如无特殊说明,皆可根据实际情况作更改。

安装NSIS–用于将编译好的文件打包成安装文件
下载链接:http://sourceforge.net/projects/nsis/files/NSIS 2/2.46/nsis-2.46-setup.exe/download
默认安装即可。

安装MinGW–编译环境
下载链接:http://sourceforge.net/projects/mingw/files/Automated MinGW Installer
下载这个mingw-get-inst-20101030.exe
现在好像没有完整安装包下载了,只能下载mingw-get-inst-20101030.exe来进行在线安装,在自定义安装哪里,我吧c++也选上了

等MinGW安装好后,安装MSYS
下载链接:http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe
默认安装,安装过程会问一些问题,前面2个输入y
第三个问题输入MinGW的安装路径

C:\msys\1.0\postinstall>..\bin\sh.exe pi.sh

This is a post install process that will try to normalize between
your MinGW install if any as well as your previous MSYS installs
if any. I don’t have any traps as aborts will not hurt anything.
Do you wish to continue with the post install? [yn ] y

Do you have MinGW installed? [yn ] y

Please answer the following in the form of c:/foo/bar.
Where is your MinGW installation? C:/MinGW

安装msysDTK
下载链接:http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe
默认安装

配置环境变量
我的电脑,右键->属性->高级->环境变量,观察窗口上部”XXX的用户环境变量”,看是否有PATH这个环境变量。
如果有,双击修改,在最后加上C:\MinGW\bin;C:\msys\1.0\bin

完成操作后,开始->运行,打开cmd窗口,输入bash。如果出现”bash-3.1$”字样,说明环境变量修改成功。输入exit退出bash。
下载OpenVPN预编译文件
这里的预编译文件不是openvpn本身的预编译文件,而是例如openssl,tap驱动等等openvpn编译过程中需要的二进制文件
下载链接:http://openvpn.net/prebuilt/2.1_rc22-prebuilt.tbz
版本不是2.1.1没有关系,因为2.1_rc22到2.1.0的代码变化不多,而2.1.0到2.1.1只是修正了一下内置的rpm打包用的spec文件而已
将2.1_rc22-prebuilt.tbz解压到c:\,获得目录C:\2.1_rc22-prebuilt\,目录下的内容是
gen-prebuilt
lzo-2.02
openssl-0.9.8l
pkcs11-helper

加入OpenVPN GUI二进制文件
这里有2个选择
1、下载OpenVPN GUI二进制文件,这个是英文版
下载链接:http://openvpn.se/files/binary/openvpn-gui-1.0.3.exe

2、中文版,从其他人制作的安装包中提取出openvpn-gui-1.0.3.exe,中文版

如果想深度定制自己的OpenVPN安装程序,可以自行编译安装OpenVPN GUI,修改源码中的rc文件得到自定义效果。具体就不在这里介绍了
同样将openvpn-gui-1.0.3.exe放到C:\2.1_rc22-prebuilt\目录下
下载OpenVPN 2.1.4源码
下载链接:http://swupdate.openvpn.net/community/releases/openvpn-2.1.4.tar.gz
下载解压,获得openvpn-2.1.4目录,C:\2.1_rc22-prebuilt\
至此,C:\2.1_rc22-prebuilt\目录下有如下文件和文件夹:
openvpn-2.1.4
openvpn-gui
gen-prebuilt
lzo-2.02
openssl-0.9.8l
pkcs11-helper
openvpn-gui-1.0.3.exe
如果有缺少目录,请返回前面步骤检查:-)

修改编译配置文件
注意:下面提到的所有修改文件操作,请一律用”写字板”或其他专业文本编辑器,如gvim,notepad++等打开。
到openvpn-2.1.4文件夹,修改version.m4文件
将define(PRODUCT_VERSION,[2.1.4])中方括号的内容做自定义修改。
例如修改为define(PRODUCT_VERSION,[2.1.4-johncan])。这个字符串会出现在OpenVPN安装程序中。
到openvpn-2.1.4\install-win32文件夹,修改settings.in文件
找到;!define ENABLE_PASSWORD_SAVE一行,去掉行首的分号。
注意:根据官方的manual,在settings里反注释掉 !define ENABLE_PASSWORD_SAVE 之后就可以保存密码了,
但是实际编译的时候并没有生效。请直接修改openvpn-2.1.4\misc.c文件
在 #if undef ENABLE_PASSWORD_SAVE
一行前面加上#define ENABLE_PASSWORD_SAVE

最后一个修改比较复杂。
为了减少编译安装的复杂度,就不自己编译tap-win32驱动了,用openvpn提供的prebuilt包里的tapinstall目录来代替。没有找到特别好的办法做这个hack,所以只能这么dirty了。

修改C:\2.1_rc22-prebuilt\openvpn-2.1.4\install-win32\openvpn.nsi文件,找到以下代码:
; tap-64bit:
DetailPrint “We are running on a 64-bit system.”
SetOutPath “$INSTDIR\bin”
File “${GEN}\tapinstall\amd64\tapinstall.exe”
SetOutPath “$INSTDIR\driver”
File “${GEN}\driver\amd64\OemWin2k.inf”
File “${GEN}\driver\amd64\${PRODUCT_TAP_ID}.cat”
File “${GEN}\driver\amd64\${TAPDRV}”
goto tapend
tap-32bit:
DetailPrint “We are running on a 32-bit system.”
SetOutPath “$INSTDIR\bin”
File “${GEN}\tapinstall\i386\tapinstall.exe”
SetOutPath “$INSTDIR\driver”
File “${GEN}\driver\i386\OemWin2k.inf”
File “${GEN}\driver\i386\${PRODUCT_TAP_ID}.cat”
File “${GEN}\driver\i386\${TAPDRV}”
tapend:
SectionEnd
在这段代码第一行前插入:
!undef GEN
!define GEN “C:\2.1_rc22-prebuilt\gen-prebuilt\”
在这段代码最后一行后面插入一行:
!undef GEN
!define GEN “..”

修改后的效果

; tap-64bit:
!undef GEN
!define GEN “C:\2.1_rc22-prebuilt\gen-prebuilt\”
DetailPrint “We are running on a 64-bit system.”

SetOutPath “$INSTDIR\bin”

File “${GEN}\tapinstall\amd64\tapinstall.exe”

SetOutPath “$INSTDIR\driver”

File “${GEN}\driver\amd64\OemWin2k.inf”
File “${GEN}\driver\amd64\${PRODUCT_TAP_ID}.cat”
File “${GEN}\driver\amd64\${TAPDRV}”

goto tapend

tap-32bit:

DetailPrint “We are running on a 32-bit system.”

SetOutPath “$INSTDIR\bin”
File “${GEN}\tapinstall\i386\tapinstall.exe”

SetOutPath “$INSTDIR\driver”
File “${GEN}\driver\i386\OemWin2k.inf”
File “${GEN}\driver\i386\${PRODUCT_TAP_ID}.cat”
File “${GEN}\driver\i386\${TAPDRV}”

tapend:

SectionEnd
!undef GEN
!define GEN “..”

修改openssl、lzo等的路径

修改C:\2.1_rc22-prebuilt\openvpn-2.1.4\install-win32\settings.in
找到
# Include the OpenVPN GUI exe in the installer.
# May be undefined.
!define OPENVPN_GUI_DIR “../openvpn-gui”
!define OPENVPN_GUI “openvpn-gui-1.0.3.exe”

# Include the OpenVPN XML-based GUI exe in the installer.
# May be undefined.
;!define OPENVPN_XGUI_DIR “../ovpnxml”

# Prebuilt libraries. DMALLOC is optional.
!define OPENSSL_DIR “../openssl.mingw/openssl-0.9.8o”
!define LZO_DIR “../lzo-2.02”
!define PKCS11_HELPER_DIR “../pkcs11-helper”
;!define DMALLOC_DIR “../dmalloc-5.4.2”

将对应内容修改成
# Include the OpenVPN GUI exe in the installer.
# May be undefined.
!define OPENVPN_GUI_DIR “../../2.1_rc22-prebuilt”
!define OPENVPN_GUI “openvpn-gui-1.0.3.exe”

# Include the OpenVPN XML-based GUI exe in the installer.
# May be undefined.
;!define OPENVPN_XGUI_DIR “../ovpnxml”

# Prebuilt libraries. DMALLOC is optional.
!define OPENSSL_DIR “../../2.1_rc22-prebuilt/openssl-0.9.8l”
!define LZO_DIR “../../2.1_rc22-prebuilt/lzo-2.02”
!define PKCS11_HELPER_DIR “../../2.1_rc22-prebuilt/pkcs11-helper”

加大路由表的容量
修改C:\2.1_rc22-prebuilt\openvpn-2.1.4\common.h


#define TLS_CHANNEL_BUF_SIZE 2048
改成
#define TLS_CHANNEL_BUF_SIZE 81920


#define PUSH_BUNDLE_SIZE 1024
改为
#define PUSH_BUNDLE_SIZE 81919

可选
修改安装文件默认图标,用提供的ico图片,把C:\2.1_rc22-prebuilt\openvpn-2.1.4\images下的icon.ico替换掉

给openvpn打补丁
如果需要给openvpn打上特殊的补丁,例如openvpn ipv6补丁,可以在这个时候完成。
编译安装
开始->运行,运行cmd,依次输入以下命令:
d:
cd openvpn-2.1.4
bash domake-win
OK,openvpn开始编译了:-)

编译好之后
大概会有如下输出
Using lzma compression.

EXE header size: 38912 / 34304 bytes
Install code: 14908 / 73462 bytes
Install data: 1566849 / 4212428 bytes
Uninstall code+data: 20748 / 24114 bytes
CRC (0xC82A76EA): 4 / 4 bytes

Total size: 1641421 / 4344312 bytes (37.7%)

3 warnings:
install function “GetWindowsVersion” not referenced – zeroing code (125-174) out

label “fileass” not used
label “tryaddtap” not used

安装文件将出现在C:\2.1_rc22-prebuilt\openvpn-2.1.4\gen\文件夹下。

主要参考文章
http://yegle.net/2010/05/19/compile-openvpn-2-1-1-in-windows/

2018年十一月
« 2月    
 1234
567891011
12131415161718
19202122232425
2627282930