在我的shell中,我需要检查字符串是否是有效的IPv6地址。

我发现两种方法,但两种方法都不是我理想的方法。

一个是http://twobit.us/2011/07/validating-ip-addresses/,而我想知道对于这样一个常见的要求它是否必须如此复杂。

另一个是expand ipv6 address in shell script,这很简单,但是对于Linux的主要发行版来说,sipcalc不是常见的默认实用程序。

所以我的问题是,有没有一种简单的方法或实用程序可以通过Shell验证IPv6地址?

提前致谢。

最佳答案

第一个链接中的代码不是特别优雅,但是对样式进行了模块化修复,我认为您不能对此进行太多简化(并且正如注释中所指出的那样,它可能已经太简单了)。规范很复杂,并规定了许多可选功能,这些功能对最终用户来说很好,但对实现者却很麻烦。

您可能会找到用于通用脚本语言的库,该库将这种逻辑正确地封装在库中。我的想法会转到Python,实际上Python 3.3包含一个称为 ipaddress 的标准模块;对于较旧的版本,请尝试类似

#!/usr/bin/env python
import socket
import sys
try:
    socket.inet_pton(socket.AF_INET6, sys.argv[1])
    result=0
except socket.error:
    result=1
sys.exit(result)

另请参阅Checking for IP addresses

关于bash - 如何使用Shell验证IPv6地址格式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26796769/

10-15 20:10