![在 Ubuntu 中以编程方式检查 IP 是静态的还是动态的](https://linux22.com/image/551855/%E5%9C%A8%20Ubuntu%20%E4%B8%AD%E4%BB%A5%E7%BC%96%E7%A8%8B%E6%96%B9%E5%BC%8F%E6%A3%80%E6%9F%A5%20IP%20%E6%98%AF%E9%9D%99%E6%80%81%E7%9A%84%E8%BF%98%E6%98%AF%E5%8A%A8%E6%80%81%E7%9A%84.png)
我试图从 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