用于测试IPv4和IPv6 DHCP服务的工具

dhcpdoctor的Python项目详细描述


dhcpdoctor

用于测试IPv4和IPv6 DHCP服务的工具

Logo

说明

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

您可以提供minormajor,而不是修补程序。 这将创建提交和标记。一定要用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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Clojure关键字在内存中的大小是多少?   Java中有固定长度的通用数组对象吗?   PostgreSQL:通过Java更新我的用户表   错误:使用java解析xml   java Json显示列表中对象的名称   java比较JodaTime时区   与JAVA中的API和包的区别?   java的int值在for循环中不改变   谷歌应用引擎中的java RSA   迁移到spring 5后出现java非法字符错误   java Websphere管理控制台不工作   JavaGSON如何始终在json中包含毫秒?   带有空格和双引号的windows Java ProcessBuilder命令参数失败   java错误:重复的zip条目[43.jar:org/apache/http/annotation/NotThreadSafe.class]