如何获取使用wget请求的域的IP?

问题描述 投票:0回答:2

我正在寻找一种方法,当命令失败时,获取使用

wget
命令请求的域的 IP 地址。

我无法使用

ping
命令来获取IP,因为
wget
命令终止后地址可能会改变。

我想在 shell 脚本中执行此操作。

shell ip wget
2个回答
1
投票

wget
失败时,它以非零退出状态终止,并将错误写入标准错误描述符 (2)。

因此您可以检查退出代码(

$?
变量),并解析写入标准错误的字符串:

url='http://stackoverflow.com/users/edit/1646322'

output=$( wget "$url" 2>&1 )
if [[ $? -ne 0 ]]; then
  printf '%s' "$output" | \
    perl -ne '/^Connecting to .*\|([^\|]+)\|/ and print $1'
fi

示例输出

151.101.129.69

0
投票

我遇到了同样的问题,wget 是容器中唯一可用的网络工具。无论 wget 是否成功退出,我都需要获取域的 ip。这就是我最终在多行 shell 脚本中所做的事情:

wget --no-check-certificate --no-dns-cache --save-headers https://example.com 2>getip.txt || true
result="$(grep -oE '\b([0-9]{1,3}\.){3}[0-9]{1,3}\b' getip.txt | head -n 1)"
echo "$result"

崩溃了,

--no-check-certificates

即使 SSL 无效也要继续

--no-dns-cache

确保我们获得最新的IP

--save-headers

将 IP 打印到文件(处理命令的输出在成功的情况下不会给出 IP)

grep -oE '\b([0-9]{1,3}\.){3}[0-9]{1,3}\b'

查找输出中的所有 IP 地址,并通过管道传输到

head -n 1

只返回第一个,这就是我一直在寻找的。

© www.soinside.com 2019 - 2024. All rights reserved.