『瀚思彼岸』» 智能家居技术论坛

标题: 请问如何让homeassistant在输入ifconfig后能显示出ipv6地址 [打印本页]

作者: NGDD    时间: 2021-4-10 17:39
标题: 请问如何让homeassistant在输入ifconfig后能显示出ipv6地址
本帖最后由 NGDD 于 2021-4-10 23:44 编辑

我的是移动大内网,家里的网络是可以获取到动态IPV6地址的,我用的是homeassistant官网推荐的虚拟机安装,用的PVE虚拟机安装的homeassistant系统(非docker),虚拟机桥接网卡模式,安装完毕后一直无法查看到homeassistant的ipv6地址,我想用dynv6网站给的脚本上传ipv6地址,可是怎么样都显示找不到ipv6地址,只有ipv4地址,请问用什么命令可以让虚拟机安装的homeassistant系统可以获取到ipv6地址呢?我在相同条件下安装的另外一个虚拟机系统却轻松可以获取到ipv6地址的。可是我在进入homeassistant系统后用里面商店里安装的Terminal打开后第一眼就看见页面上第一行就显示有IPV6地址了,但是输入ifconfig命令却又显示出没有IPV6地址,只有docker里面的内网地址。请问如何才能在输入ifconfig命令后能显示出homeassistant的IPV6地址呢?因为dynv6给的脚本里面必须依靠查网卡信息ip -6 addr list scope global才能获取ipv6地址上传。这个问题困扰了我一周了。希望有大神能给个解决办法,谢谢!

我参考了这位大神的帖子https://bbs.hassbian.com/forum.p ... ypeid%26typeid%3D28
可惜在后面改地址部分就做不下去了,文件夹位置不对,也没有对应的文件。

原版语句如下,本地的ipv6地址是2409:8a5c开头的。
address=$(ip -6 addr list scope global $device | grep -v " fd" | sed -n 's/.*inet6 \([0-9a-f:]\+\).*/\1/p' | head -n 1)


作者: 27hh    时间: 2021-4-10 22:16
不妨换个思路:
curl http://ipv6.whatismyip.akamai.com/
作者: NGDD    时间: 2021-4-10 22:55
本帖最后由 NGDD 于 2021-4-10 23:07 编辑
27hh 发表于 2021-4-10 22:16
不妨换个思路:
curl http://ipv6.whatismyip.akamai.com/

感谢回复,我按照你说的设置了一下还是无法实现。本地的ipv6地址是2409:8a5c开头的。
这是原版的语句
address=$(ip -6 addr list scope global $device | grep -v " fd" | sed -n 's/.*inet6 \([0-9a-f:]\+\).*/\1/p' | head -n 1)

改成了如下
address=$(curl http://ipv6.whatismyip.akamai.com | grep -v " fd" | sed -n 's/.*inet6 \([0-9a-f:]\+\).*/\1/p' | head -n 1)

可还是提示找不到IPV6地址,另外我这大内网好像打不开http://ipv6.whatismyip.akamai.com,不知道是不是这个问题。

作者: 27hh    时间: 2021-4-11 01:14
NGDD 发表于 2021-4-10 22:55
感谢回复,我按照你说的设置了一下还是无法实现。本地的ipv6地址是2409:8a5c开头的。
这是原版的语句
addr ...

打不开那肯定没办法了。。。这个网址打开后就直接返回你IPV6地址的纯文本。你可以再找找其他有这种功能的网站……
作者: telanx    时间: 2021-4-11 09:03
先别放到脚本里,先直接在终端里运行版主的那个curl的命令,看是否能返回ipv6 地址(可以确定是否安装了curl,是否联通正常等)
如果这步成功了,则在脚本中直接用这个 address=$(curl -s http://ipv6.whatismyip.akamai.com/)
不需要你后面的grep等语句

我在路由上用到的是这个命令
address=$(ip addr show br-lan |grep 'inet6 [^f:]' |sed -e "s/\/.*//g" |sed -e "s/^.*inet6//g")
但是我对正则表达式真心不会,不知道您那是否成功。
作者: XCray    时间: 2021-4-11 09:27
在supervisor商店里下载的那个terminal & ssh只是一个docker镜像/容器,你登录到这个容器里当然只能看到你给这个容器指配的网络信息。

你需要直接登录到hassos的os。
作者: NGDD    时间: 2021-4-11 19:54
27hh 发表于 2021-4-11 01:14
打不开那肯定没办法了。。。这个网址打开后就直接返回你IPV6地址的纯文本。你可以再找找其他有这种功能的 ...

感谢回复。按照XCray版主的提醒,我确实是把supervisor商店里下载的那个terminal & ssh里面的地址当做是hassio系统的地址了。回到虚拟机终端里面重新输入ip -6 addr直接就可以显示出网卡的ipv6地址了。目前的问题是虚拟机安装的hassio系统里面大部分的Linux命令都被删除了。无法下载无法执行脚本。这个怎么解决呢?
作者: NGDD    时间: 2021-4-11 19:58
telanx 发表于 2021-4-11 09:03
先别放到脚本里,先直接在终端里运行版主的那个curl的命令,看是否能返回ipv6 地址(可以确定是否安装了cur ...

感谢回复。按照XCray版主的提醒,我确实是把supervisor商店里下载的那个terminal & ssh里面的地址当做是hassio系统的地址了。回到虚拟机终端里面重新输入ip -6 addr直接就可以显示出网卡的ipv6地址了。不需要去外部查询了。目前的问题是虚拟机安装的hassio系统里面大部分的Linux命令都被删除了。无法下载无法执行脚本。不知道这个问题怎么解决。
作者: NGDD    时间: 2021-4-11 20:03
XCray 发表于 2021-4-11 09:27
在supervisor商店里下载的那个terminal & ssh只是一个docker镜像/容器,你登录到这个容器里当然只能看到你 ...

感谢版主回复。如您所述,确实是我把容器的地址当做是hassio的地址了。回到虚拟机的终端输入ip -6 addr确实直接就可以看到ipv6地址了。现在的问题变成了如何恢复hassio的各种基本命令执行能力问题。因为虚拟机版本的hassio各种命令被删除了好多,无法执行下载安装包,无法执行脚本。如果能恢复这些命令,我就可以利用脚本上传地址解析了。请问您有什么办法吗?
作者: XCray    时间: 2021-4-11 20:14
NGDD 发表于 2021-4-11 20:03
感谢版主回复。如您所述,确实是我把容器的地址当做是hassio的地址了。回到虚拟机的终端输入ip -6 addr确 ...

这个确实挺难的,hassos是一个高度精简的系统,在这个系统上很难实现你这个想法。

建议考虑曲线救国:

给虚拟机指配固定的末段地址,就是最后一节ipv6的地址,然后在宿主系统运行脚本,当然需要稍加改造,把最后一段替换成hassos的地址。

或者采取反向代理,在宿主系统部署nginx,指向ha即可。




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5