使用 ksh/bash 从列表中检查 IP 地址
Check IP address off a list using ksh/bash
我有一个包含以下数据的列表(文本文件):
app1 example1.google.com
app2 example2.google.com
dev1 device1.google.com
cell1 iphone1.google.com
我想检查 URLs/hostnames 的 IP 地址并用收集到的 IP 更新文本文件。示例:
app1 example1.google.com 192.168.1.10
app2 example2.google.com 192.168.1.55
dev1 device1.google.com 192.168.1.53
cell1 iphone1.google.com 192.168.1.199
您可以使用dig
获取IP(但域名必须存在)。未针对 IPv6 进行测试。
#! /bin/bash
while read name url ; do
ip=$(dig -4 $url | grep '^[^;]' | grep -o '\([0-9]*[.:]\)\+[0-9.:]*$')
printf '%s %s %s\n' "$name" "$url" "$ip"
done < data.txt
如果文件中只有两列,这可能会有所帮助:
awk '{"dig +short " | getline ip ; print , , ip}' file
首先我们 运行 一个子 shell(运行 这对于无数的记录来说并不是一个好主意)并且在其中一个“dig +short”(我想到的最短的可能性仅获取 IP 地址)与机器的 FQDN(在第二列中找到)。然后我们打印所有原始列和新列(带有 IP 地址)。可以使用单个 >
将输出重定向到新文件。我不认为编辑原始文件是“安全的”。
我有一个包含以下数据的列表(文本文件):
app1 example1.google.com
app2 example2.google.com
dev1 device1.google.com
cell1 iphone1.google.com
我想检查 URLs/hostnames 的 IP 地址并用收集到的 IP 更新文本文件。示例:
app1 example1.google.com 192.168.1.10
app2 example2.google.com 192.168.1.55
dev1 device1.google.com 192.168.1.53
cell1 iphone1.google.com 192.168.1.199
您可以使用dig
获取IP(但域名必须存在)。未针对 IPv6 进行测试。
#! /bin/bash
while read name url ; do
ip=$(dig -4 $url | grep '^[^;]' | grep -o '\([0-9]*[.:]\)\+[0-9.:]*$')
printf '%s %s %s\n' "$name" "$url" "$ip"
done < data.txt
如果文件中只有两列,这可能会有所帮助:
awk '{"dig +short " | getline ip ; print , , ip}' file
首先我们 运行 一个子 shell(运行 这对于无数的记录来说并不是一个好主意)并且在其中一个“dig +short”(我想到的最短的可能性仅获取 IP 地址)与机器的 FQDN(在第二列中找到)。然后我们打印所有原始列和新列(带有 IP 地址)。可以使用单个 >
将输出重定向到新文件。我不认为编辑原始文件是“安全的”。