以编程方式检查 IP 是静态还是动态

Ale*_*ans 6 networking dhcp c

我正在尝试确定我的 IP 是在 Ubuntu 11.04 中从 C 中静态分配还是动态分配的。我最近的检查是检查/var/lib/dhcp/dhclient.leases,但如果分配了静态 IP,这不会改变(因为它缓存了 DHCP 租约)未来的连接尝试)。

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

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

Gil*_*il' 3

您可以放入/etc/network/if-up.d要在接口激活时执行的脚本(由网络管理器激活ifup或由网络管理器激活)。这些脚本接收有关接口的信息,包括$METHOD设置为static或 的环境变量dhcpinterfaces(5)这在手册页中有记录。

#!/bin/sh
## This is /etc/network/if-up.d/zzzz_alex_notify_myserver
case $LOGICAL in
  eth0)
    case $METHOD in
      dhcp) <notify server that it's on DHCP>;;
      static) <notify server that it's on a static IP configuration>;;
    esac;;
esac
Run Code Online (Sandbox Code Playgroud)


Pav*_* G. 0

我猜你指的是本地 ubuntu 机器的 IP 分配,而不是外部/公共 IP。

也许以下输出可能会有所帮助:

cat /etc/network/interfaces |grep ^iface\ eth0 | awk -F ' ' '{print $4}'

这将打印单词staticdhcp,具体取决于接口 eth0 的当前配置。

您还可以进行一些小的调整,例如:

cat /etc/network/interfaces |grep ^iface\ | awk -F ' ' '{print $2, $4}'

以列出所有接口及其配置。