当我输入 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"
在此处找到。