用于测试IPv4和IPv6 DHCP服务的工具
dhcpdoctor的Python项目详细描述
dhcpdoctor
用于测试IPv4和IPv6 DHCP服务的工具
说明
dhcpdoctor发送dhcp请求,并检查它是否从dhcp服务器获得报价。
它支持ipv4的bootp+dhcp(-4
)和ipv6的dhcpv6(-6
)。
它可以通过在本地网络上通过
广播/多播或作为dhcp客户端,通过单播在一个工具中进行中继
对指定IP地址的请求(-s
)。当转发请求时,您可以
指定要从中发送的中继地址(-f
)。默认情况下
使用从发送的接口请求。从指定自定义中继时
地址,请记住,dhcp服务器将把响应发送回
你在这里指定的地址,所以它必须是你所在机器上的地址
正在从运行测试。
可以指定自定义客户端mac或duid(-c
)。默认情况下,mac地址
使用要从其发送请求的接口的。
您可以指定用-i
发送请求的接口。
程序输出和退出代码是NAGIOS/ICIGA^ {A1}。dhcp服务器的响应时间被测量并作为性能数据返回。
要求
dhcpdoctor需要python 3.4或更高版本才能运行。
由于它在引擎盖下使用scapy来创建、分解、发送和接收数据包,因此需要根权限才能运行。
安装
通过PIP:
pip install dhcpdoctor
icinga2 check命令
您可以使用dhcpdoctor作为来自icinga2或nagios的检查命令。
存在具有checkcommand定义的dhcpdoctor.conf配置 对于ICinga2你可以使用。使用此check命令的服务可能如下所示 这个:
apply Service "dhcpd6" {
import "generic-service"
check_command = "dhcpdoctor"
vars.dhcpdoctor_ipv6 = true
vars.dhcpdoctor_client_id = "00:11:11:11:11:11"
assign where host.dhcpd6
}
如果要从提供的SPEC文件构建RPM,则
checkcommand配置将安装到
/etc/icinga2/conf.d/check_commands/dhcpdoctor.conf
。
开发
我们使用poetry来管理python依赖项和虚拟环境。
设置开发虚拟环境:
poetry install
运行工具:
poetry run dhcpdoctor -h
Vagrant可用于快速启动vm 要测试的DHCP服务器:
vagrant up
vagrant ssh dhcpdoctor
cd /vagrant
poetry run dhcpdoctor -h
exit
vagrant destroy
有关详细信息,请参见Vagrantfile中的注释。
释放量
poetry run bumpversion patch
您可以提供minor
或major
,而不是修补程序。
这将创建提交和标记。一定要用git push --tags
推动它。
dev-version.sh
脚本会将开发或发布的版本作为
需要(基于我们是否在git标记上)并在ci作业中调用。
建筑
下面是如何使用pyinstaller将dhcpdoctor
构建到单个二进制文件中
然后将其打包为基于红帽的系统的RPM。结果
二进制文件是setuid根文件,因为dhcpdoctor
需要在特权udp上工作
端口,但通常在从nagios或icinga调用时作为特殊用户运行。
pip3 install --upgrade bumpversion poetry pyinstaller
poetry install --no-dev
poetry run pip freeze | grep -v egg=dhcpdoctor > requirements.txt
pip3 install -r requirements.txt
./dev-version.sh
./build.sh