wireguard.sh检测核心版本返回值判断的问题
maxzh0916 opened this issue · 5 comments
maxzh0916 commented
teddysun commented
此处 rt 变量的值是在函数_is_installed
执行完毕后获取到的。
检查内核版本是否大于等于 5.6 的函数check_kernel_version
不会改写 rt 变量的值。
也就是说,当满足内核版本大于等于 5.6 时,脚本只会安装 wireguard tools
maxzh0916 commented
# uname -r
5.6.7-1.el7.elrepo.x86_64
# rpm -qa | grep kernel
kernel-ml-5.6.7-1.el7.elrepo.x86_64
kernel-ml-headers-5.6.7-1.el7.elrepo.x86_64
kernel-ml-devel-5.6.7-1.el7.elrepo.x86_64
新的主机,手动升级的内核,旧内核随手删了
除了/lib/modules/5.6.7-1.el7.elrepo.x86_64/kernel/drivers/net/wireguard/wireguard.ko
存在,其他文件都没有。_is_installed()
返回2。
我已经弄不清楚什么原因了。
teddysun commented
函数_is_installed
如果返回2,则表示 wireguard tools 没有安装。
于是脚本就会开始执行 wireguard tools 安装步骤。
这是预想的功能。
maxzh0916 commented
如果_is_installed
返回2的话,应该是调用install_wg_3
或者install_wg_4
吧。我这里直接报WireGuard module does not exists, please check your kernel
了
teddysun commented
经过测试发现变量 rt 被函数check_os
中调用的子函数_exists
改写了。
感谢!已经 Fix bug