如何列出服务器的所有 IP 地址

如何列出服务器的所有 IP 地址

当我输入 ifconfig 时,我看到我的服务器每天都有一个新的 ip 地址。这些 ip 地址属于一组 ip 地址。
我如何找出我的服务器的所有 ip 地址?

答案1

或者

# ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:cc:ae:67 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.123/24 brd 192.168.0.255 scope global eth0
    inet6 fe80::20c:29ff:fecc:ae67/64 scope link
       valid_lft forever preferred_lft forever

答案2

我假设您的意思是您的服务器的 IP 地址每天都会动态分配,并且您想知道您的服务器可能拥有的地址池。在这种情况下,您可以联系管理在您的网络中分配地址的 DHCP 服务器的人员(如果服务器直接连接到互联网,则联系您的 ISP)。如果您想知道您的服务器过去拥有的所有 IP,您可以将 Lennart 的答案放入 cronjob 中。

ifconfig | grep inet | awk '{print $2}' >> .iplog

或者类似的东西。

答案3

询问管理为您的服务器分配地址的 dhcp 服务器的人员,这是唯一可以确定的方法。

您可以相对安全地假设您的 ipaddress 始终位于 ip 地址二进制和网络掩码范围内,但是不能保证这种行为,并且 dhcp 服务器地址池可能是 ipaddress 和网络掩码的子集。

现在,推断一下,如果您想找出您的服务器的所有可能的 IP 地址,因为您希望即使在它更改了 IP 地址之后也能找到它,我建议您查看互联网上的一个动态 DNS 提供商。

答案4

或者:

#!/usr/bin/env bash

OS=`uname`
case $OS in
   Linux) IP=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'`;;
   Darwin|FreeBSD|OpenBSD) IP=`ifconfig  | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}'` ;;
   SunOS) IP=`ifconfig -a | grep inet | grep -v '127.0.0.1' | awk '{ print $2} '` ;;
   *) IP="Unknown";;
esac
echo "$IP"

在此处找到。

相关内容