在 Ubuntu 中以编程方式检查 IP 是静态的还是动态的

在 Ubuntu 中以编程方式检查 IP 是静态的还是动态的

我试图从 C 语言中确定我的 IP 在 Ubuntu 11.04 中是静态分配还是动态分配。我最接近的方法是检查/var/lib/dhcp/dhclient.leases,但如果分配了静态 IP,情况就不会改变(因为它会缓存 DHCP 租约以供将来的连接尝试)。

那么...是否有一个命令行实用程序(用于 Ubuntu)可以让我检查 DHCP 是否启用或禁用?

或者:该机器是专用于一个应用程序的服务器;维护一个跟踪 DHCP 状态的环境变量会更容易吗?

答案1

理论上,如果你启用了 dhcp,那么你应该运行 dhclient。因此,一种(虽然不太好)的方法是:

ps ax | grep dhclient | grep eth0(或您想要的任何接口)。

但是您可能还想尝试“nmcli con”,如果它是一个 dhcp 接口,它会告诉您“Auto eth0”(我认为)。

另请查看 nm-tool

高血压

答案2

可能可以通过 NetworkManager 的 DBUS API 实现,但 IP 地址来源不会出现在接口列表中,请尝试与该应用程序的开发人员讨论。

http://projects.gnome.org/NetworkManager/developers/spec.html

相关内容