获取IP地方修改为用脚本获取
使用以下代码:
#!/bin/bash
# 定义目标 MAC 地址,方便维护
TARGET_MAC="bc:24:11:b6:4f:08"
# 只执行一次 ip -6 neigh,提升效率
ipv6_neigh=$(ip -6 neigh 2>/dev/null)
# 提取非链路本地地址片段
str1=$(echo "${ipv6_neigh}" | grep -v FAILED | grep -v ^fe80 | grep "${TARGET_MAC}" | awk '{print $1}' | cut -d ':' -f1-4)
# 提取链路本地地址片段
str2=$(echo "${ipv6_neigh}" | grep -v FAILED | grep ^fe80 | grep "${TARGET_MAC}" | awk '{print $1}' | cut -d ':' -f2-6)
# 拼接并输出结果
str="${str1}${str2}"
echo "${str}"
代码二
#!/bin/bash
# 配置目标MAC地址(替换成实际的MAC,如 bc:24:11:b6:4f:08)
TARGET_MAC="your_mac"
# 只执行一次ip -6 neigh,避免重复调用,2>/dev/null屏蔽无IPv6时的错误输出
ipv6_neigh_data=$(ip -6 neigh 2>/dev/null)
# 方法一:提取完整公网IPv6(非fe80、非FAILED、指定MAC、不含::)
str0=$(echo "${ipv6_neigh_data}" | grep -v FAILED | grep -v ^fe80 | grep "${TARGET_MAC}" | grep -v "::" | awk '{print $1}')
# 方法二:拼接前缀+后缀
# 公网地址前4段
str1=$(echo "${ipv6_neigh_data}" | grep -v FAILED | grep -v ^fe80 | grep "${TARGET_MAC}" | awk '{print $1}' | cut -d ':' -f1-4)
# 链路本地地址第2-6段
str2=$(echo "${ipv6_neigh_data}" | grep -v FAILED | grep ^fe80 | grep "${TARGET_MAC}" | awk '{print $1}' | cut -d ':' -f2-6)
# 逻辑判断:优先用方法一,失败则用方法二
if test -z "${str0}"; then
str="${str1}${str2}"
else
str="${str0}"
fi
# 输出结果(若最终无结果,提示更友好)
if test -z "${str}"; then
echo "未找到${TARGET_MAC}对应的IPv6地址"
else
echo "${str}"
fi
本文著作权归作者 [ 景岄 ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。