📜  列出所有 IP 的 Shell 脚本

📅  最后修改于: 2022-05-13 01:57:29.303000             🧑  作者: Mango

列出所有 IP 的 Shell 脚本

通俗地说,IP 地址可以被认为是家庭地址。就像我们为每个房子都有一个唯一的房子地址一样,类似地,我们为网络上的每个唯一设备都有一个唯一的 IP 地址。一个IP地址被用于唯一地标识一个网际网协议网络上的设备。

IP 地址示例:

192.0.2.1/24

此处, 192.0.2.1称为网络 ID ,24 为主机 ID。我们可以将网络 ID视为街道名称,而主机 ID则是唯一的门牌号。

编写 Shell 脚本以列出所有 IP 地址

方法一:使用主机名命令:

主机名是Linux中用来显示主机名详细信息的命令,主机名是分配给一台计算机的唯一域名。您可以通过在终端中编写 hostname命令来查看您的设备主机名。

命令:



hostname -I

此处,“-I”用于列出所有 IP 地址。

输出:

列出所有 IP 的 Shell 脚本

IP地址

让我们编写一个脚本来列出所有 IP。

获取所有IP后,将这些IP地址按空间分割。显示格式化的输出。

脚本:

#! /bin/bash

# saving all the ip addresses
ip_addresses=$(hostname -I)

# splitting them by space
ip_addresses=(${ip_addresses//" "/ })

# Print each ip address line by line
echo "LIST OF IP ADDRESSES"
for ip in "${ip_addresses[@]}";
do
  printf "$ip\n"
done

输出:

列出所有 IP 的 Shell 脚本

ip地址列表

注意: hostname -I不会显示链路本地 ip6 地址,因为它是为每个支持 IPv6 的接口自动配置的。

方法二:使用awk命令:

awk是一种图灵完备的模式匹配编程语言,广泛与其他 Linux 命令一起用于模式匹配和数据提取。

脚本:

#! /bin/bash

# Extracting lines that match the following pattern 
ip=$(ip address| awk '/inet/ {print $2}' | grep -v ^::1 | grep -v ^127)

#displaying IP addresses
echo "LIST OF IP ADDRESSES"
echo "$ip"

这里ip address将列出有关网络的信息,包括它们的 ip 地址,使用awk '/inet/ {printf $2}'我们正在查找以inet开头的模式并打印地址。 grep -v ^::1将反转包含“::1”的匹配,同样我们不想将我们的本地主机列为 IP 地址,因此我们使用grep -v ^127省略它。

输出 :

列出所有 IP 的 Shell 脚本

ip地址列表