当我键入ifconfig,我看到我的服务器每天都有一个新的IP地址。 这些IP地址属于一组IP地址。
我如何找出我的服务器的所有IP地址?
询问pipe理员分配给你的服务器的DHCP服务器的人,这是知道肯定的唯一方法。
您可以相对安全地假设您的ipaddress始终位于ip-address binary-and netmask内,但是不能保证这种行为,并且dhcp-servers地址池可能是ipaddress&netmask的一个子集。
现在,推断,如果你想找出所有可能的IP地址为你的服务器,因为你想能够find它,即使它已经改变了它的IP地址,我build议检查出一个dynamicDNS提供商在网上。
我假设你的意思是你的服务器的IP地址是每天dynamic分配的,你想知道你的服务器可能有的地址池。 在这种情况下,您可以联系谁pipe理分配您的networking中的地址的DHCP服务器(或者如果服务器直接连接到互联网,您的ISP)。 如果你想知道你的服务器已经存在的所有IP,你可以把Lennart的答案放在cronjob中。
ifconfig | grep inet | awk '{print $2}' >> .iplog
还是一些这样的事情。
要么
# 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
打印所有IPv4和IPv6地址的一种非常简单的方法:
ifconfig | grep inet | awk '{print $2}'
要么:
#!/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"
在这里find。
这将打印除本地主机的127.0.0.1以外的所有IP。
ifconfig | awk -F "[: ]+" '/inet addr:/ { if ($4 != "127.0.0.1") print $4 }'