所以基本上这个命令所做的就是安全地连接到一个Web域来获取我的外部IP地址,这在Linux Debian系统上是完美无瑕的,但是在我的OpenBSD系统上却不能正常工作。 Curl命令可以正常工作,但是Grep命令有些问题,因为它只是没有抓住curl的IP。
是否 – 不适用于OpenBSD? 我不能告诉手册页..
非常感谢
USERAGENT="Mozilla/4.0" WEB_LOCATION="https://duckduckgo.com/?q=whats+my+ip" curl -s --retry 3 --max-time 5 -tlsv1.2 --user-agent $USERAGENT $WEB_LOCATION | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'
*******已解决(有点)********
我出于某种原因解决了这个问题:
grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'
没有在OpenBSD上工作,但这个长版本..
grep -Eo '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}'
为什么这种情况是非常混乱的,因为第一种search模式在我使用的所有Debian Linux版本上都能正常工作!
问题在于你的regexp中的边界模式,在OpenBSD中是[[:<:]]
和[[:>:]]
,而在Debian(也可能是其他Linux发行版)中分别是\<
和\>
。
grep -Eo '[[:<:]][[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}[[:>:]]'
应该管用。
详细信息请阅读手册页 。