Bash 命令将 IP 地址转换为其“反向”形式?

Bash 命令将 IP 地址转换为其“反向”形式?

当我在 IP 上运行 nslookup 时(这些都是示例)

nslookup 192.168.1.123

电流输出:

41.31.211.111

期望输出:

111.211.31.41

我有一个可以运行的脚本,只是为了查看是否有更有效的方法或内置nslookup命令。

答案1

echo 411.311.211.111 | awk -F. '{print $4"."$3"." $2"."$1}'

输出:

111.211.311.411

或者

echo 411.311.211.111 | awk -F. '{OFS="."; print $4,$3,$2,$1}'

答案2

这是一个原生函数。调用它就像是reverseip 12.34.56.78打印一样78.56.34.12。调用它就像是reversed=$(reverseip 12.34.56.78)将输出捕获到变量中一样。

reverseip () {
    local IFS
    IFS=.
    set -- $1
    echo $4.$3.$2.$1
}

set带有字符串参数的 会根据 的当前值将此字符串标记为$1、等。因此,我们将函数的输入参数分解为标记,现在替换原始的、等。因为是一个点,所以原始的输入值会按点拆分。破折号是一种安全措施,用于表示 选项的结束,以防 的实际值以破折号开头(如果没有 ,您将收到“未知选项”错误,或者更糟的是,随机甚至不安全的行为)。$2IFS$1$1$2IFS$1--set$1--

相关内容