在网上找了个判断 IPv4/v6 的脚本,但是改了就不好使了

2022-02-22 19:15:53 +08:00
 LxnChan

如题,原脚本中判断的是传入的第一个参数$1,这里我改成了IPA,然后动态赋值,输出的 IPA 值也确实为 v6 ,但是判断为 v4 。请大家帮忙看看是哪里出错了

#!/bin/sh

IPA=`curl 'https://api64.ipify.org?format=json' | jq -r .ip`

echo $IPA

if [ "$IPA" != "${1#*:[0-9a-fA-F]}" ]; then
  echo IPv6
elif [ "$IPA" != "${1#*[0-9].[0-9]}" ]; then
  echo IPv4
else
  echo "Unrecognized IP format '$1'"
fi

执行后的输出:

root@testbench:/home/testbench/userdata# ./ipv6.sh 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    47  100    47    0     0     48      0 --:--:-- --:--:-- --:--:--    47
2409:8a66:b53:c761:c3be:b1b3:69d7:fb01
IPv4
1631 次点击
所在节点    程序员
5 条回复
tlze
2022-02-22 19:30:58 +08:00
$IPA" != "${1#*:[0-9a-fA-F]}
把 1 改
tlze
2022-02-22 19:33:07 +08:00
要把 1 都改了。$IPA" != "${IPA#*:[0-9a-fA-F]}
下面的同
tlze
2022-02-22 19:34:25 +08:00
其他也要改。
sorry, 我手机有问题。
szdosar
2022-02-23 08:34:40 +08:00
供参考
[code]
#!/bin/sh

IPA=`curl https://api64.ipify.org`

echo $IPA

if [ "$IPA" != "${IPA#*:[0-9a-fA-F]}" ]; then
echo IPv6
elif [ "$IPA" != "${IPA#*[0-9].[0-9]}" ]; then
echo IPv4
else
echo "Unrecognized IP format '$IPA'"
fi
[/code]
exqibao
2022-02-23 17:01:57 +08:00
#!/bin/bash

IPA=`curl -s 'https://api64.ipify.org/'`

echo $IPA

if [[ $IPA =~ : ]];then
# 包含:,则 IPV6
echo 'IPV6'
elif [[ $IPA =~ . ]];then
# 包含.,则 IPV4
echo 'IPV4'
else
echo "Unrecognized IP format '$IPA'"
fi

exit 0

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/835741

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX