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

 找回密码
 立即注册
查看: 14019|回复: 9

[技术探讨] 请问如何让homeassistant在输入ifconfig后能显示出ipv6地址

[复制链接]

4

主题

55

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
金钱
244
HASS币
0
发表于 2021-4-10 17:39:58 | 显示全部楼层 |阅读模式
本帖最后由 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)

回复

使用道具 举报

32

主题

986

帖子

4233

积分

论坛元老

Rank: 8Rank: 8

积分
4233
金钱
3207
HASS币
110

教程狂人论坛风云人物

发表于 2021-4-10 22:16:58 | 显示全部楼层
不妨换个思路:
curl http://ipv6.whatismyip.akamai.com/
回复

使用道具 举报

4

主题

55

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
金钱
244
HASS币
0
 楼主| 发表于 2021-4-10 22:55:26 | 显示全部楼层
本帖最后由 NGDD 于 2021-4-10 23:07 编辑

感谢回复,我按照你说的设置了一下还是无法实现。本地的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,不知道是不是这个问题。
回复

使用道具 举报

32

主题

986

帖子

4233

积分

论坛元老

Rank: 8Rank: 8

积分
4233
金钱
3207
HASS币
110

教程狂人论坛风云人物

发表于 2021-4-11 01:14:35 | 显示全部楼层
NGDD 发表于 2021-4-10 22:55
感谢回复,我按照你说的设置了一下还是无法实现。本地的ipv6地址是2409:8a5c开头的。
这是原版的语句
addr ...

打不开那肯定没办法了。。。这个网址打开后就直接返回你IPV6地址的纯文本。你可以再找找其他有这种功能的网站……
回复

使用道具 举报

15

主题

636

帖子

2203

积分

金牌会员

Rank: 6Rank: 6

积分
2203
金钱
1567
HASS币
0
发表于 2021-4-11 09:03:53 | 显示全部楼层
先别放到脚本里,先直接在终端里运行版主的那个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")
但是我对正则表达式真心不会,不知道您那是否成功。
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

发表于 2021-4-11 09:27:21 | 显示全部楼层
在supervisor商店里下载的那个terminal & ssh只是一个docker镜像/容器,你登录到这个容器里当然只能看到你给这个容器指配的网络信息。

你需要直接登录到hassos的os。
回复

使用道具 举报

4

主题

55

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
金钱
244
HASS币
0
 楼主| 发表于 2021-4-11 19:54:40 | 显示全部楼层
27hh 发表于 2021-4-11 01:14
打不开那肯定没办法了。。。这个网址打开后就直接返回你IPV6地址的纯文本。你可以再找找其他有这种功能的 ...

感谢回复。按照XCray版主的提醒,我确实是把supervisor商店里下载的那个terminal & ssh里面的地址当做是hassio系统的地址了。回到虚拟机终端里面重新输入ip -6 addr直接就可以显示出网卡的ipv6地址了。目前的问题是虚拟机安装的hassio系统里面大部分的Linux命令都被删除了。无法下载无法执行脚本。这个怎么解决呢?
回复

使用道具 举报

4

主题

55

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
金钱
244
HASS币
0
 楼主| 发表于 2021-4-11 19:58:17 | 显示全部楼层
telanx 发表于 2021-4-11 09:03
先别放到脚本里,先直接在终端里运行版主的那个curl的命令,看是否能返回ipv6 地址(可以确定是否安装了cur ...

感谢回复。按照XCray版主的提醒,我确实是把supervisor商店里下载的那个terminal & ssh里面的地址当做是hassio系统的地址了。回到虚拟机终端里面重新输入ip -6 addr直接就可以显示出网卡的ipv6地址了。不需要去外部查询了。目前的问题是虚拟机安装的hassio系统里面大部分的Linux命令都被删除了。无法下载无法执行脚本。不知道这个问题怎么解决。
回复

使用道具 举报

4

主题

55

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
金钱
244
HASS币
0
 楼主| 发表于 2021-4-11 20:03:34 | 显示全部楼层
XCray 发表于 2021-4-11 09:27
在supervisor商店里下载的那个terminal & ssh只是一个docker镜像/容器,你登录到这个容器里当然只能看到你 ...

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

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

发表于 2021-4-11 20:14:54 | 显示全部楼层
NGDD 发表于 2021-4-11 20:03
感谢版主回复。如您所述,确实是我把容器的地址当做是hassio的地址了。回到虚拟机的终端输入ip -6 addr确 ...

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

建议考虑曲线救国:

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

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-27 02:33 , Processed in 0.238341 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表