收起左侧

开启 OVS 后设备获取不到 IP 的处理方法

20
回复
789
查看
[ 复制链接 ]

248

主题

1万

回帖

0

牛值

管理员

fnOS1.0上线纪念勋章

现象

部分设备开启(OVS)后,设备原本能自动获取 IP,但现在网络不通、DHCP 拿不到地址,Web 管理页也进不去。

适用场景

  • 设备开启 OVS 后无法获取 IP
  • 你能 接显示器/键盘 进入本机终端
  • 有多网口设备/额外的USB网卡:可以将网线插到另一个没有开启OVS的网口来获取IP进入系统。
  • 只有一个网口的设备:可以先尝试多重启几次设备看能否获取到IP,进入系统关闭OVS。

一、进入终端

接显示器/键盘 进入本机终端后先输入你的管理员账号及密码进行登录,

示例

假设:

  • 用户名:root

则在设备名 login中输入:

xxx login:root

接着输入密码

password:

👉 输入 NAS 密码(输入时不会显示,这是正常的)

👉 回车

切换到root账号

输入:

sudo -i

然后回车

接着输入密码

password:

👉 输入 NAS 密码(输入时不会显示,这是正常的)

👉 回车


二、执行命令获取 IP

  • 接口名因机型而异:下面示例用 enp3s0。请先执行 ip a,把命令里的 enp3s0 替换成你机器上实际显示的网口名(例如 eno1 / enp2s0 / eth0 等)。
  • 需要把下列命令中的 enp3s0 全部替换为你自己的网口名。
  1. 获取网口名称

ip a

接口名因机型而异,如下方网口名称为ens2-ovs

  1. 从 OVS 端口解绑物理网口

需要把下列命令中的 enp3s0 全部替换为你自己的网口名。
ovs-vsctl del-port enp3s0-ovs enp3s0
  1. 拉起网口链路

需要把下列命令中的 enp3s0 全部替换为你自己的网口名。
ip l set dev enp3s0 up
  1. 通过 DHCP 获取地址

需要把下列命令中的 enp3s0 全部替换为你自己的网口名。
dhclient enp3s0
  1. 查看该网口当前 IP

ip a show dev enp3s0

获取到IP后就可以输入IP进入Web页。

该问题我们已联系部分用户进行排查,有ssh使用经验可私信联系@飞牛技术同学 提供网络服务更新脚本验证修复。

收藏
送赞
分享

0

主题

2

回帖

0

牛值

江湖小虾

提供一个修复方法,不用敲命令(自己测试修复成功);手机用数据线连接电脑,然后打开个人热点里的(USB网络共享功能)——然后就可以使用手机APP或者网页进入飞牛后台,然后在网口选项里关闭OVS功能,然后就可以断开USB重启一下应该就回复正常了

哥,谢谢你。差一点刷机了。  详情 回复
1 小时前
搞半天搞不好 还好看到你的评论 厉害 👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍  详情 回复
昨天 17:51

8

主题

20

回帖

0

牛值

江湖小虾

系统版本1.23,没有开OVS,启动后10分钟断连

0

主题

4

回帖

0

牛值

江湖小虾

image.pngIP地址获取方式设置为手动的话且路由器没有进行IP-MAC绑定,路由器重启后就会丢失IPV4地址,导致断联,希望能够优化

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

3

主题

2

回帖

0

牛值

江湖小虾

fnOS1.0上线纪念勋章

重新安装的系统,启动就获取不到 IP,都还没有设置管理员账号及密码怎么操作

我的重新安装后,目前测试只有防火墙功能无法打开。。。其他还算正常。。。最新版本打开防火墙功能 的话。就会死机。。。 目前这设备不是主力机。。。主力机是白群两台。。。白群稳定些。。。 飞牛,加油。。等你成  详情 回复
前天 15:07

2

主题

39

回帖

0

牛值

江湖小虾

NHT 发表于 2026-3-11 11:02
重新安装的系统,启动就获取不到 IP,都还没有设置管理员账号及密码怎么操作
...

我的重新安装后,目前测试只有防火墙功能无法打开。。。其他还算正常。。。最新版本打开防火墙功能 的话。就会死机。。。
目前这设备不是主力机。。。主力机是白群两台。。。白群稳定些。。。
飞牛,加油。。等你成长。。

0

主题

2

回帖

0

牛值

江湖小虾

遇到了这个问题,按照上面操作也不行,最后只能重装系统,崩溃

4

主题

25

回帖

0

牛值

江湖小虾

我也同样问题,路由重新启动,或NAS有线断开,重连后,NAS不能获取IP。

目前最好的临时方法是,插入USB有线网卡,连接网线获取IP登录,然后重新启用原网卡。

4

主题

25

回帖

0

牛值

江湖小虾

TP百兆的USB有线网卡,系统能自动识别。

15

主题

65

回帖

0

牛值

初出茅庐

系统版本1.1.23,没有开OVS,启动后10分钟断连。 1.1.20 是正常的,升级就最开始是有ipv4,然后就没有ipv4了,ipv6时有时无。

0

主题

2

回帖

0

牛值

江湖小虾

按照这个方法解绑了ovs绑定,能获取到ip了,但是安装的虚拟机网络就不能用了

16

主题

240

回帖

0

牛值

小有名气

fnOS1.0上线纪念勋章

我的也出现这个问题,昨天开启了虚拟机,启用了OVS,今天早上路由重启后就获取不到IP了。我的机器是富士通D588,之前也是开机很慢才获取到IP,开机五六分钟才可以(之前好像也启用了OVS),后面重装过系统,没启用OVS的这几天很快正常获取。

3

主题

4

回帖

0

牛值

江湖小虾

删除ovs应该只是临时措施吧,大佬们预计什么时候能够出个包修复呢cry

0

主题

1

回帖

0

牛值

江湖小虾

FnWen 发表于 2026-3-12 14:07
提供一个修复方法,不用敲命令(自己测试修复成功);手机用数据线连接电脑,然后打开个人热点里的(USB网 ...

搞半天搞不好 还好看到你的评论 厉害  👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍
帮到你就好 懒人想懒办法,也是看到前面有人讲用USB网卡能用就想到这个了,试了一下真成了 而且很方便  详情 回复
昨天 23:12

0

主题

2

回帖

0

牛值

江湖小虾

夏阔156232436 发表于 2026-3-12 17:51
搞半天搞不好 还好看到你的评论 厉害  👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍 ...

帮到你就好  懒人想懒办法,也是看到前面有人讲用USB网卡能用就想到这个了,试了一下真成了 而且很方便

0

主题

1

回帖

0

牛值

江湖小虾

所以OVS虚拟网卡现在不能用了吗?我只有一个网口关闭后各种下载都不正常了。

2

主题

11

回帖

0

牛值

江湖小虾

是不是以后用虚拟机的都用不了飞牛了,我已经3天不能连上飞牛了

16

主题

240

回帖

0

牛值

小有名气

fnOS1.0上线纪念勋章

按教程修复后可以了,有一点需要注意,获取到IP后赶紧进后台关闭OVS,没关闭重启还是获取不到IP

0

主题

2

回帖

0

牛值

江湖小虾

我发现OVS网卡即使使用dhclient命令获取到IP后,也会在运行1-2天后IP地址突然莫名其妙地消失,甚至重启设备也不一定能恢复IP。所以我想了一个解决办法,就是编写一个shell脚本,自动检测OVS网卡是否有IP地址,没有就执行dhclient。然后把这个脚本放到任务计划里每分钟执行一次,并且还添加了一个重启后执行的任务。目前来看运行了几天都没断网了。

#!/bin/bash
# 飞牛OS OVS网卡IP丢失自动修复脚本
# 功能:检测到OVS网卡无IP时自动执行dhclient获取IP

# ===================== 配置项 =====================
# OVS网卡名称(请确认实际OVS网卡名是否为enp2s0-ovs,不是则自行修改)
ovs_nic="enp2s0-ovs"

# 检测网卡IP状态
check_ip_status() {
    # 获取网卡的IPv4地址(排除127.0.0.1/0.0.0.0)
    ip_addr=$(ip addr show $ovs_nic | grep -Eo 'inet [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -v '127.0.0.1' | grep -v '0.0.0.0' | awk '{print $2}')
}

# 执行IP修复
fix_ip() {
    # 先停止dhclient进程(避免冲突)
    pkill -f "dhclient $ovs_nic" >/dev/null 2>&1

    # 执行dhclient获取IP
    dhclient $ovs_nic >/dev/null 2>&1
    if [ $? -eq 0 ]; then
        # 验证修复结果
        sleep 1
        new_ip=$(ip addr show $ovs_nic | grep -Eo 'inet [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -v '127.0.0.1' | awk '{print $2}')
        echo "OVS网卡 $ovs_nic 的IP修复成功, 新IP: $new_ip"
    else
        echo "OVS网卡 $ovs_nic 的IP修复失败"
    fi
}

# ===================== 主程序 =====================
# 检查脚本权限
if [ "$(id -u)" -ne 0 ]; then
    echo "请以root用户运行此脚本"
    exit 1
fi

# 检查网卡是否存在
if ! ip link show $ovs_nic >/dev/null 2>&1; then
    echo "OVS网卡 $ovs_nic 不存在"
    exit 1
fi

check_ip_status

if [ "$ip_addr" == "" ]; then
    fix_ip
else
    echo "OVS网卡 $ovs_nic 状态正常, 当前IP: $ip_addr"
fi

1、先切换到root用户

2、使用前要先用ip addr命令确认OVS网卡的名称,然后修改脚本里的ovs_nic="enp2s0-ovs"

3、文件可以上传到飞牛的/tmp/文件夹,然后创建 /usr/local/scripts/ 文件夹,再把脚本文件拷贝进去,并改名,然后赋权

mkdir /usr/local/scripts/
mv /tmp/fix_ovs_network_v1.0.sh /usr/local/scripts/fix_ovs_network.sh
chmod +x /usr/local/scripts/fix_ovs_network.sh

5、添加任务

echo "* * * * * /bin/sh /usr/local/scripts/fix_ovs_network.sh" >> /var/spool/cron/crontabs/root
echo "@reboot sleep 5 && source /etc/profile && sh /usr/local/scripts/fix_ovs_network.sh" >> /var/spool/cron/crontabs/root

6、重启任务服务

/sbin/service cron restart

执行效果:

image.png

附件:fix_ovs_network_v1.0.zip

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

0

主题

7

回帖

0

牛值

江湖小虾

FnWen 发表于 2026-3-12 14:07
提供一个修复方法,不用敲命令(自己测试修复成功);手机用数据线连接电脑,然后打开个人热点里的(USB网 ...

哥,谢谢你。差一点刷机了。

0

主题

2

回帖

0

牛值

江湖小虾

为了实现自动检测物理网卡,自动检测OVS网卡,自动添加任务计划,我对脚本进行了功能升级。

#!/bin/bash
#飞牛OS有线OVS网卡IP丢失自动修复脚本
#功能:
#1、检测到OVS网卡丢失时自动创建OVS网卡
#2、检测到OVS网卡无IP时自动执行dhclient获取IP,如果指定了IP就设置固定IP到OVS网卡

######全局变量######
version="v1.1"                               #脚本版本号
script_file="fix_ovs_network_$version.sh"    #脚本文件名

phy_nic=""                                   #物理网卡:如果预设了名称,不自动检测物理网卡名
ovs_nic=""                                   #OVS网卡

ip_addr=""                                   #自动检测到的IP
static_ip=""                                 #固定IP:如果留空就默认自动获取IP
netmaks="24"                                 #子网掩码:如果设置了固定IP,务必要填写子网掩码
gateway=""                                   #网关IP:如果设置了固定IP,务必要填写网关IP
dns_server="223.5.5.5 8.8.8.8"               #DNS服务器:如果设置了固定IP,务必要填写DNS服务器,多个DNS服务器之间可以空格

######**######

#字符颜色程序_黑色
function black(){
    str_input=$1
    echo -e "\\033[30m$str_input\033[0m\c"
}

#字符颜色程序_红色
function red(){
    str_input=$1
    echo -e "\\033[31m$str_input\033[0m\c"
}

#字符颜色程序_绿色
function green(){
    str_input=$1
    echo -e "\\033[32m$str_input\033[0m\c"
}

#字符颜色程序_**
function yellow(){
    str_input=$1
    echo -e "\\033[33m$str_input\033[0m\c"
}

#字符颜色程序_蓝色
function blue(){
    str_input=$1
    echo -e "\\033[34m$str_input\033[0m\c"
}

#字符颜色程序_紫色
function purple(){
    str_input=$1
    echo -e "\\033[35m$str_input\033[0m\c"
}

#字符颜色程序_天蓝色
function skyblue(){
    str_input=$1
    echo -e "\\033[36m$str_input\033[0m\c"
}

#字符颜色程序_白色
function white(){
    str_input=$1
    echo -e "\\033[37m$str_input\033[0m\c"
}


#操作系统名称、版本检测
function system_check(){
    system_name=$(cat /etc/os-release | grep "NAME" | grep -v "_NAME" | awk -F '"' '{print$2}')
    system_version=$(cat /etc/os-release | grep "VERSION_ID" | awk -F '"' '{print$2}' | awk -F "." '{print $1}')
    yellow "操作系统名称: "; green "$system_name\n"
    yellow "操作系统版本: "; green "$system_version\n"
}


#检测指定网卡的IP地址
#用法:check_ip 网卡名
function check_ip() {
    # 获取网卡的IPv4地址(排除127.0.0.1/0.0.0.0)
    ip_addr=$(ip addr show $1 | grep -Eo 'inet [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -v '127.0.0.1' | grep -v '0.0.0.0' | awk '{print $2}')
    if [ ! -z $ip_addr ]; then
        #yellow "网卡"; blue $1; yellow "的IP地址: "; green "$ip_addr\n"
        return 0
    else
        #yellow "网卡"; blue $1; yellow "的IP地址: "; red "未设置\n"
        return 1
    fi
}

#IP设置程序
#用法:configure_ip 网卡名
function configure_ip() {
    if [ -z $1 ];then
        red "没有输入网卡名\n"
        exit 1
    fi

    if [ "$static_ip" == "" ];then     #如果没有预设固定IP,就设置自动获取IP
        #先停止dhclient进程
        pkill -f "dhclient $1" >/dev/null 2>&1 

        #执行dhclient获取IP
        dhclient $1 >/dev/null 2>&1

        sleep 1
      
        #检查网卡的IP
        check_ip $1
    else
        if [ "$static_ip" != "" -a "$netmask" != "" -a "$gateway" != "" -a "$dns_server" != "" ];then
            #设置静态IP
            nmcli con mod $1 ipv4.addresses $static_ip/$netmask ipv4.method manual >> /dev/null 2>&1

            #设置网关
            nmcli con mod $1 ipv4.gateway $gateway >> /dev/null 2>&1

            #设置DNS
            nmcli con mod $1 ipv4.dns "$dns_server" >> /dev/null 2>&1

            #重启网卡生效
            nmcli con up $1 >> /dev/null 2>&1

            sleep 1

            #检查网卡的IP
            check_ip $1
        else    #如果预设的参数有缺失
            if [ "$netmask" != "" ];then
                red "未设置子网掩码\n"
            fi
            if [ "$gateway" != "" ];then
                red "未设置网关IP\n"
            fi
            if [ "$dns_server" != "" ];then
                red "未设置DNS服务器\n"
            fi

            red "固定IP预设参数不全,改成自动获取IP\n"
            #先停止dhclient进程
            pkill -f "dhclient $1" >/dev/null 2>&1 

            #执行dhclient获取IP
            dhclient $1 >/dev/null 2>&1

            sleep 1

            #检查网卡的IP
            check_ip $1
        fi
    fi

}


#获取物理网卡名称
function check_phy_nic(){
    if [ -z $phy_nic ];then   #如果没有预设物理网卡名称,就自动检测
        phy_nic=$(ls /sys/class/net/ | xargs -I {} sh -c 'if [ -d /sys/class/net/{}/device ]; then echo {}; fi' | grep -E 'enp|ens|eth' | head -1)
    fi

    if [ -z "$phy_nic" ]; then    #如果没有获取到物理网卡名称
        yellow "物理网卡名称: "; red "未检测到物理网卡\n"
        check_phy_nic_name_result="未检测到物理网卡"
    else
        yellow "物理网卡名称: "; green "$phy_nic\n"
        check_phy_nic_name_result="物理网卡名称$phy_nic"

        check_phy_nic_brand_result=$(lspci | grep -i ethernet | awk -F ':' '{print $3}' | awk '{print $1}')
        check_phy_nic_model_result=$(dmesg | grep -i $phy_nic | head -n 1 | awk '{print $3}')
        yellow "物理网卡品牌: "; green "$check_phy_nic_brand_result\n"
        yellow "物理网卡型号: "; green "$check_phy_nic_model_result\n"
    fi
}


#ovs网卡设置程序
#用法:configure_ovs check|setup|restore 物理网卡名
function configure_ovs(){
    if [ -z $1 ];then
        red "没有输入物理网卡名\n"
        exit 1
    fi
  
    if [ "$1" == "check" -o "$1" == "check-csv" ];then
        #检查物理网卡的状态
        if ip ad show "$2" | grep UP &>/dev/null; then
            check_phy_nic_status_result="物理网卡${2}状态是UP"
            yellow "物理网卡状态: "; green "UP\n"
        else
            check_phy_nic_status_result="物理网卡${2}状态是DOWN"
            yellow "物理网卡状态: "; red " DOWN\n"
        fi
      
        #检查物理网卡的IP
        check_ip $2
        if [ $? -eq 0 ]; then
            yellow "物理网卡的IP: "; red "$ip_addr\n"
            check_phy_nic_ip_result="物理网卡的IP是$ip_addr"
        else
            yellow "物理网卡的IP: "; green "未设置\n"
            check_phy_nic_ip_result="物理网卡的IP未设置"
        fi

        #判断物理网卡对应的OVS网卡是否存在(默认命名规则:物理网卡名-ovs)
        ovs_nic="$2-ovs"
        if ip ad show "$ovs_nic" &>/dev/null; then
            yellow "对应的OVS网卡: "; blue "$ovs_nic"; green " 存在\n"

            #检查物理网卡的OVS桥接设置
            if [ "$(ovs-vsctl port-to-br $2)" == "$ovs_nic" ]; then
                check_ovs_nic_result="物理网卡${2}的OVS桥接设置正常"
                yellow "OVS桥接设置: "; green "正常\n"
            else
                check_ovs_nic_result="物理网卡${2}的OVS桥接设置异常"
                yellow "OVS桥接设置: "; red "异常\n"
            fi

            #检测ovs网卡的IP
            check_ip $ovs_nic
            if [ $? -eq 0 ]; then
                yellow "OVS网卡的IP: "; green "$ip_addr\n"
                check_ovs_nic_ip_result="OVS网卡的IP是$ip_addr"
            else
                yellow "OVS网卡的IP: "; red "未设置\n"
                check_ovs_nic_ip_result="OVS网卡的IP未设置"
            fi
        else
            yellow "对应的OVS网卡: "; blue "$ovs_nic"; red " 不存在\n"
            check_ovs_nic_result="对应的OVS网卡${ovs_nic}不存在"
        fi
    elif [ "$1" == "setup" -o "$1" == "setup-csv" ];then
        #检查物理网卡的UP状态
        if ip ad show "$2" | grep UP &>/dev/null; then
            check_phy_nic_status_result="物理网卡${2}状态是UP"
            yellow "物理网卡状态: "; green "UP\n"
        else
            #把物理网卡设置为UP状态
            ifup $2

            if ip ad show "$2" | grep UP; then
                check_phy_nic_status_result="物理网卡${2}状态设置为UP成功"
                yellow "物理网卡状态: "; green "UP\n"
            else
                check_phy_nic_status_result="物理网卡${2}状态是DOWN"
                yellow "物理网卡状态: "; red "DOWN\n"
            fi
        fi
      
        #检查物理网卡的IP
        check_ip $2
        if [ $? -eq 0 ];then    #如果物理网卡配了IP,就删除其IP配置
            ip addr flush dev $2
            if [ $? -eq 0 ];then
                yellow "删除物理网卡IP: "; green "成功\n"
                check_phy_nic_ip_result="删除物理网卡IP成功"
            else
                yellow "删除物理网卡IP: "; red "失败\n"
                check_phy_nic_ip_result="删除物理网卡IP${ip_addr}失败"
            fi
        else
            yellow "物理网卡的IP: "; green "未设置\n"
            check_phy_nic_ip_result="物理网卡的IP未设置"
        fi

        #判断物理网卡对应的OVS网卡是否存在(默认命名规则:物理网卡名-ovs)
        ovs_nic="$2-ovs"
        if ip ad show "$ovs_nic" &>/dev/null; then
            yellow "对应的OVS网卡: "; blue "$ovs_nic"; green " 存在\n"

            #检查物理网卡的OVS桥接设置
            if [ "$(ovs-vsctl port-to-br $2)" == "$ovs_nic" ]; then
                check_ovs_nic_result="OVS桥接设置正常"
                yellow "OVS桥接设置: "; green "正常\n"
            else
                #把物理网卡从网桥里移除
                ovs-vsctl del-port ovs-system $2 >> /dev/null 2>&1
              
                #删掉整个网桥
                ovs-vsctl del-br ovs-system >> /dev/null 2>&1
              
                #创建网桥
                ovs-vsctl add-br ovs-system >> /dev/null 2>&1
              
                #把物理网卡加入网桥
                ovs-vsctl add-port ovs-system $2 >> /dev/null 2>&1

                #把OVS网卡设置为UP状态
                ifup $ovs_nic

                #检测OVS网卡修复结果
                if [ "$(ovs-vsctl port-to-br $2)" == "$ovs_nic" ]; then
                    check_ovs_nic_result="OVS桥接设置修复成功"
                    yellow "OVS桥接设置: "; green "修复成功\n"
                else
                    check_ovs_nic_result="OVS桥接修复失败"
                    yellow "OVS桥接设置: "; red "修复失败\n"
                fi
            fi

            #检测OVS网卡的IP
            check_ip $ovs_nic
            if [ $? -ne 0 ];then    #如果OVS网卡没有设置IP,就进行设置
                configure_ip $ovs_nic
                if [ $? -eq 0 ];then
                    yellow "OVS网卡的IP: "; green "$ip_addr\n"
                    check_ovs_nic_ip_result="OVS网卡的IP是$ip_addr"
                else
                    yellow "OVS网卡的IP: "; red "设置失败\n"
                    check_ovs_nic_ip_result="OVS网卡的IP设置失败"
                fi
            else
                yellow "OVS网卡的IP: "; green "$ip_addr\n"
                check_ovs_nic_ip_result="OVS网卡的IP是$ip_addr"
            fi
        else
            yellow "对应的OVS网卡: "; blue "$ovs_nic"; red " 不存在\n"
         
            #创建网桥
            ovs-vsctl add-br $ovs_nic >> /dev/null 2>&1
          
            #把物理网卡加入网桥
            ovs-vsctl add-port $ovs_nic $2 >> /dev/null 2>&1

            #把OVS网卡设置为UP状态
            ifup $ovs_nic >> /dev/null 2>&1

            #检测OVS网卡修复结果
            if [ "$(ovs-vsctl port-to-br $2)" == "$ovs_nic" ]; then
                check_ovs_nic_result="OVS桥接设置修复成功"
                yellow "OVS桥接设置: "; green "修复成功\n"
            else
                check_ovs_nic_result="OVS桥接修复失败"
                yellow "OVS桥接设置: "; red "修复失败\n"
            fi
        fi
    elif [ "$1" == "restore" -o "$1" == "restore-csv" ];then
        #判断物理网卡对应的OVS网卡是否存在(默认命名规则:物理网卡名-ovs)
        ovs_nic="$2-ovs"
        if ip ad show "$ovs_nic" &>/dev/null; then
            yellow "对应的OVS网卡: "; blue "$ovs_nic"; red " 存在\n"
          
            #把物理网卡从网桥里移除
            ovs-vsctl del-port $ovs_nic $2 >> /dev/null 2>&1

            #删除网桥
            ovs-vsctl del-br $ovs_nic >> /dev/null 2>&1

            #检查OVS网卡删除结果
            if ip ad show "$ovs_nic" &>/dev/null; then
                yellow "删除OVS网卡"; blue $ovs_nic; yellow ": "; red "失败\n"
                check_ovs_nic_result="删除OVS网卡${ovs_nic}失败"
            else
                yellow "删除OVS网卡"; blue $ovs_nic; yellow ": "; green "成功\n"
                check_ovs_nic_result="删除OVS网卡${ovs_nic}成功"
            fi
        else
            yellow "OVS网卡: "; blue "$ovs_nic"; green " 不存在\n"
            check_ovs_nic_result="OVS网卡${ovs_nic}不存在"
        fi

        #检查物理网卡的UP状态
        if ip ad show "$2" | grep UP &>/dev/null; then
            check_phy_nic_status_result="物理网卡${2}状态是UP"
            yellow "物理网卡状态: "; green "UP\n"
        else
            #把物理网卡设置为UP状态
            ifup $2 >> /dev/null 2>&1
          
            if ip ad show "$2" | grep UP &>/dev/null; then
                check_phy_nic_status_result="物理网卡${2}状态设置为UP成功"
                yellow "物理网卡状态: "; green "UP\n"
            else
                check_phy_nic_status_result="物理网卡${2}状态是DOWN"
                yellow "物理网卡状态: "; red "DOWN\n"
            fi
        fi
      
        #检查物理网卡的IP
        check_ip $2
        if [ $? -ne 0 ];then    #如果物理网卡没有设置IP,就进行设置
            configure_ip $2
            if [ $? -eq 0 ];then
                yellow "物理网卡的IP: "; green "$ip_addr\n"
                check_ovs_nic_ip_result="物理网卡的IP是$ip_addr"
            else
                yellow "物理网卡的IP: "; red "设置失败\n"
                check_ovs_nic_ip_result="物理网卡的IP设置失败"
            fi
        else
            yellow "物理网卡的IP: "; red "$ip_addr\n"
            check_phy_nic_ip_result="物理网卡的IP是$ip_addr"
        fi
    fi
}


#更新脚本文件程序
function upgrade_script_file(){
    if [ ! -d "/usr/local/scripts/" ];then    #如果不存在/usr/local/scripts/文件夹,就创建该文件夹
        mkdir /usr/local/scripts/
    fi

    if [ "$1" == "check" -o "$1" == "check-csv" ];then
        if [ -f "/usr/local/scripts/fix_ovs_network.sh" ];then    #如果存在fix_ovs_network.sh脚本
            check_upgrade_script_result1="脚本文件fix_ovs_network.sh已部署"
            yellow "脚本部署: "; green "$check_upgrade_script_result1\n"
            if [ -f "$script_file" ];then    #如果存在新上传的脚本
                if [ "$(diff /usr/local/scripts/fix_ovs_network.sh $script_file)" == "" ];then    #如果旧脚本和新脚本完全相同
                    check_upgrade_script_result2="脚本文件无需更新"
                    yellow "脚本更新: "; green "$check_upgrade_script_result2\n"
                else
                    check_upgrade_script_result2="脚本文件需要更新"
                    yellow "脚本更新: "; red "$check_upgrade_script_result2\n"
                fi
            else
                check_upgrade_script_result2="脚本文件无需更新"
                yellow "脚本更新: "; green "$check_upgrade_script_result2\n"
            fi

            #检测fix_ovs_network.sh的权限
            if [ "$(ls -l /usr/local/scripts/fix_ovs_network.sh | grep 'rwx------')" == "" ];then    #如果fix_ovs_network.sh脚本的权限不是700
                check_upgrade_script_result3="脚本权限不是700"
                yellow "脚本权限: "; red "$check_upgrade_script_result3\n"
            else   #如果fix_ovs_network.sh脚本的权限是700
                check_upgrade_script_result3="脚本权限是700"
                yellow "脚本权限: "; green "$check_upgrade_script_result3\n"
            fi
        else
            check_upgrade_script_result1="脚本文件fix_ovs_network.sh未部署"
            check_upgrade_script_result2="脚本文件无需更新"
            check_upgrade_script_result3="脚本权限无法检测"
            yellow "脚本部署: "; red "$check_upgrade_script_result1\n"
            yellow "脚本更新: "; green "$check_upgrade_script_result2\n"
            yellow "脚本权限: "; red "$check_upgrade_script_result3\n"
        fi
        check_upgrade_script_result="$check_upgrade_script_result1;$check_upgrade_script_result2;$check_upgrade_script_result3"
    elif [ "$1" == "setup" -o "$1" == "setup-csv" ];then
        if [ -f "/usr/local/scripts/fix_ovs_network.sh" ];then    #如果存在fix_ovs_network.sh脚本
            check_upgrade_script_result1="脚本文件fix_ovs_network.sh此前已部署"
            yellow "脚本部署: "; green "$check_upgrade_script_result1\n"
            if [ -f "$script_file" ];then    #如果存在新上传的tempcmd-root-fix_ovs_network.sh脚本
                if [ "$(diff /usr/local/scripts/fix_ovs_network.sh $script_file)" == "" ];then    #如果旧脚本和新脚本完全相同
                    check_upgrade_script_result2="脚本文件无需更新"
                    yellow "脚本更新: "; green "$check_upgrade_script_result2\n"
                else
                    cp -f $script_file /usr/local/scripts/fix_ovs_network.sh
                    if [ $? -eq 0 ];then
                        check_upgrade_script_result2="脚本文件更新成功"
                        yellow "脚本更新: "; green "$check_upgrade_script_result2\n"
                    else
                        check_upgrade_script_result2="脚本文件更新失败"
                        yellow "脚本更新: "; red "$check_upgrade_script_result2\n"
                    fi
                fi
            else
                check_upgrade_script_result2="脚本文件无需更新"
                yellow "脚本更新: "; green "$check_upgrade_script_result2\n"
            fi

            #检测fix_ovs_network.sh的权限
            if [ "$(ls -l /usr/local/scripts/fix_ovs_network.sh | grep 'rwx------')" == "" ];then    #如果fix_ovs_network.sh脚本的权限不是700
                chmod 700 /usr/local/scripts/fix_ovs_network.sh
                if [ "$(ls -l /usr/local/scripts/fix_ovs_network.sh | grep 'rwx------')" != "" ];then
                    check_upgrade_script_result3="脚本权限设置为700成功"
                    yellow "脚本权限: "; green "$check_upgrade_script_result3\n"
                else
                    check_upgrade_script_result3="脚本权限设置为700失败"
                    yellow "脚本权限: "; red "$check_upgrade_script_result3\n"
                fi
            else   #如果fix_ovs_network.sh脚本的权限是700
                check_upgrade_script_result3="脚本权限已经是700"
                yellow "脚本权限: "; green "$check_upgrade_script_result3\n"
            fi
        else
            if [ -f "$script_file" ];then    #如果存在新上传的tempcmd-root-fix_ovs_network.sh脚本
                cp -f $script_file /usr/local/scripts/fix_ovs_network.sh
                if [ $? -eq 0 ];then
                    check_upgrade_script_result1="脚本文件fix_ovs_network.sh部署成功"
                    check_upgrade_script_result2="脚本文件无需更新"
                    yellow "脚本部署: "; green "$check_upgrade_script_result1\n"
                    yellow "脚本更新: "; green "$check_upgrade_script_result2\n"
                    if [ "$(ls -l /usr/local/scripts/fix_ovs_network.sh | grep 'rwx------')" == "" ];then    #如果fix_ovs_network.sh脚本的权限不是700
                        chmod 700 /usr/local/scripts/fix_ovs_network.sh
                        if [ "$(ls -l /usr/local/scripts/fix_ovs_network.sh | grep 'rwx------')" != "" ];then
                            check_upgrade_script_result3="脚本权限设置为700成功"
                            yellow "Script Permissions: "; green "$check_upgrade_script_result3\n"
                        else
                            check_upgrade_script_result3="脚本权限设置为700失败"
                            yellow "Script Permissions: "; red "$check_upgrade_script_result3\n"
                        fi
                    else   #如果fix_ovs_network.sh脚本的权限是700
                        check_upgrade_script_result3="脚本权限已经是700"
                        yellow "Script Permissions: "; green "$check_upgrade_script_result3\n"
                    fi
                else
                    check_upgrade_script_result1="脚本文件fix_ovs_network.sh部署失败"
                    check_upgrade_script_result2="脚本文件无需更新"
                    check_upgrade_script_result3="脚本权限无法检测"
                    yellow "脚本部署: "; red "$check_upgrade_script_result1\n"
                    yellow "脚本更新: "; green "$check_upgrade_script_result2\n"
                    yellow "脚本权限: "; red "$check_upgrade_script_result3\n"
                fi
            else
                check_upgrade_script_result1="脚本文件fix_ovs_network.sh未部署"
                check_upgrade_script_result2="脚本文件无需更新"
                check_upgrade_script_result3="脚本权限无法检测"
                yellow "脚本部署: "; red "$check_upgrade_script_result1\n"
                yellow "脚本更新: "; green "$check_upgrade_script_result2\n"
                yellow "脚本权限: "; red "$check_upgrade_script_result3\n"
            fi
        fi
        check_upgrade_script_result="$check_upgrade_script_result1;$check_upgrade_script_result2;$check_upgrade_script_result3"
    elif [ "$1" == "restore" -o "$1" == "restore-csv" ];then
        if [ -f "/usr/local/scripts/fix_ovs_network.sh" ];then    #如果存在fix_ovs_network.sh脚本
            rm -f /usr/local/scripts/fix_ovs_network.sh
            if [ ! -f "/usr/local/scripts/fix_ovs_network.sh" ];then
                check_upgrade_script_result1="脚本文件fix_ovs_network.sh删除成功"
                yellow "脚本部署: "; green "$check_upgrade_script_result1\n"
            else
                check_upgrade_script_result1="脚本文件fix_ovs_network.sh删除失败"
                yellow "脚本部署: "; red "$check_upgrade_script_result1\n"
            fi
        else
            check_upgrade_script_result1="脚本文件fix_ovs_network.sh此前已删除"
            yellow "脚本部署: "; green "$check_upgrade_script_result1\n"
        fi
        check_upgrade_script_result="$check_upgrade_script_result1"
    fi
}


#设置任务计划程序
function config_crontab(){
    if [ "$1" == "check" -o "$1" == "check-csv" ];then
        root_cron_file="/var/spool/cron/crontabs/root"

        if [ -f "$root_cron_file" ];then    #如果存在root的任务文件
            if [ "$(cat $root_cron_file | grep 'fix_ovs_network.sh')" != "" ];then     #如果已经存在'fix_ovs_network.sh任务,判断设置的模式
                #检测是否存在重启后设置任务
                if [ "$(cat $root_cron_file | grep '^@reboot sleep 5 && source /etc/profile && sh /usr/local/scripts/fix_ovs_network.sh setup-csv')" != "" ];then
                    if [ "$(cat $root_cron_file | grep '^@reboot sleep 5 && source /etc/profile && sh /usr/local/scripts/fix_ovs_network.sh setup-csv' | wc -l)" -eq 1 ];then
                        check_crontab_result1="重启后设置任务已添加"
                        yellow "重启后设置任务: "; green "$check_crontab_result1\n"
                    else
                        check_crontab_result1="重启后设置任务已添加但存在重复任务"
                        yellow "重启后设置任务: "; red "$check_crontab_result1\n"
                    fi
                else
                    check_crontab_result1="重启后设置任务未添加"
                    yellow "重启后设置任务: "; red "$check_crontab_result1\n"
                fi

                #检测是否存在每分钟设置任务
                if [ "$(cat $root_cron_file | grep '^\* \* \* \* \* /bin/sh /usr/local/scripts/fix_ovs_network.sh setup-csv')" != "" ];then
                    if [ "$(cat $root_cron_file | grep '^\* \* \* \* \* /bin/sh /usr/local/scripts/fix_ovs_network.sh setup-csv' | wc -l)" -eq 1 ];then
                        check_crontab_result2="每分钟设置任务已添加"
                        yellow "每分钟设置任务: "; green "$check_crontab_result2\n"
                    else
                        check_crontab_result2="每分钟设置任务已添加但存在重复任务"
                        yellow "每分钟设置任务: "; red "$check_crontab_result2\n"
                    fi
                else
                    check_crontab_result2="每分钟设置任务未添加"
                    yellow "每分钟设置任务: "; red "$check_crontab_result2\n"
                fi
            else
                check_crontab_result1="重启后设置任务未添加"
                check_crontab_result2="每分钟设置任务未添加"
                yellow "重启后设置任务: "; red "$check_crontab_result1\n"
                yellow "每分钟设置任务: "; red "$check_crontab_result2\n"
            fi
        else
                check_crontab_result1="重启后设置任务未添加"
                check_crontab_result2="每分钟设置任务未添加"
                yellow "重启后设置任务: "; red "$check_crontab_result1\n"
                yellow "每分钟设置任务: "; red "$check_crontab_result2\n"
        fi
        check_crontab_result="$check_crontab_result1;$check_crontab_result2"
    elif [ "$1" == "setup" -o "$1" == "setup-csv" ];then
        root_cron_file="/var/spool/cron/crontabs/root"

        if [ -f "$root_cron_file" ];then    #如果存在root的任务文件
            #检测是否存在重启恢复任务
            if [ "$(cat $root_cron_file | grep '^@reboot sleep 5 && source /etc/profile && sh /usr/local/scripts/fix_ovs_network.sh setup-csv')" != "" ];then
                if [ "$(cat $root_cron_file | grep '^@reboot sleep 5 && source /etc/profile && sh /usr/local/scripts/fix_ovs_network.sh setup-csv' | wc -l)" -eq 1 ];then
                    check_crontab_result1="重启后设置任务此前已添加"
                    yellow "重启后设置任务: "; green "$check_crontab_result1\n"
                else
                    #如果该任务重复配置,就删除全部该任务,然后重新添加一次
                    sed -i "/@reboot sleep 5 && source \/etc\/profile && sh \/usr\/local\/scripts\/fix_ovs_network.sh/d" $root_cron_file
                    echo "@reboot sleep 5 && source /etc/profile && sh /usr/local/scripts/fix_ovs_network.sh setup-csv" >> $root_cron_file
                    if [ "$(cat $root_cron_file | grep '^@reboot sleep 5 && source /etc/profile && sh /usr/local/scripts/fix_ovs_network.sh setup-csv' | wc -l)" -eq 1 ];then
                        check_crontab_result1="重启后设置任务此前已添加"
                        yellow "重启后设置任务: "; green "$check_crontab_result1\n"
                    else
                        check_crontab_result1="重启后设置任务此前已添加但存在重复任务"
                        yellow "重启后设置任务: "; red "$check_crontab_result1\n"
                    fi
                fi
            else
                #echo "@reboot /bin/sh /usr/local/scripts/fix_ovs_network.sh setup-csv" >> $root_cron_file  #添加重启设置任务
                echo "@reboot sleep 5 && source /etc/profile && sh /usr/local/scripts/fix_ovs_network.sh setup-csv" >> $root_cron_file  #添加重启设置任务
                if [ "$(cat $root_cron_file | grep '^@reboot sleep 5 && source /etc/profile && sh /usr/local/scripts/fix_ovs_network.sh setup-csv')" != "" ];then
                    check_crontab_result1="重启后设置任务添加成功"
                    yellow "重启后设置任务: "; green "$check_crontab_result1\n"
                else
                    check_crontab_result1="重启后设置任务添加失败"
                    yellow "重启后设置任务: "; red "$check_crontab_result1\n"
                fi
            fi

            #检测是否存在每分钟设置任务
            if [ "$(cat $root_cron_file | grep '^\* \* \* \* \* /bin/sh /usr/local/scripts/fix_ovs_network.sh setup-csv')" != "" ];then
                if [ "$(cat $root_cron_file | grep '^\* \* \* \* \* /bin/sh /usr/local/scripts/fix_ovs_network.sh setup-csv' | wc -l)" -eq 1 ];then
                    check_crontab_result2="每分钟设置任务此前已添加"
                    yellow "每分钟设置任务: "; green "$check_crontab_result2\n"
                else
                    #如果该任务重复配置,就删除全部该任务,然后重新添加一次
                    sed -i "/\* \* \* \* \* \/bin\/sh \/usr\/local\/scripts\/fix_ovs_network.sh/d" $root_cron_file
                    echo "* * * * * /bin/sh /usr/local/scripts/fix_ovs_network.sh setup-csv" >> $root_cron_file  #添加每分钟设置任务
                    if [ "$(cat $root_cron_file | grep '^\* \* \* \* \* /bin/sh /usr/local/scripts/fix_ovs_network.sh setup-csv' | wc -l)" -eq 1 ];then
                        check_crontab_result2="重启后设置任务此前已添加"
                        yellow "每分钟设置任务: "; green "$check_crontab_result2\n"
                    else
                        check_crontab_result2="每分钟设置任务此前已添加但存在重复任务"
                        yellow "每分钟设置任务: "; red "$check_crontab_result2\n"
                    fi
                fi
            else
                echo "* * * * * /bin/sh /usr/local/scripts/fix_ovs_network.sh setup-csv" >> $root_cron_file  #添加每分钟设置任务
                if [ "$(cat $root_cron_file | grep '^\* \* \* \* \* /bin/sh /usr/local/scripts/fix_ovs_network.sh setup-csv')" != "" ];then
                    check_crontab_result2="每分钟设置任务添加成功"
                    yellow "每分钟设置任务: "; green "$check_crontab_result2\n"
                else
                    check_crontab_result2="每分钟设置任务添加失败"
                    yellow "每分钟设置任务: "; red "$check_crontab_result2\n"
                fi
            fi
        else
            #添加重启恢复任务
            echo "@reboot sleep 5 && source /etc/profile && sh /usr/local/scripts/fix_ovs_network.sh setup-csv" >> $root_cron_file  #添加重启设置任务
            if [ "$(cat $root_cron_file | grep '^@reboot sleep 5 && source /etc/profile && sh /usr/local/scripts/fix_ovs_network.sh setup-csv')" != "" ];then
                check_crontab_result1="重启后设置任务添加成功"
                yellow "重启后设置任务: "; green "$check_crontab_result1\n"
            else
                check_crontab_result1="重启后设置任务添加失败"
                yellow "重启后设置任务: "; red "$check_crontab_result1\n"
            fi

            #添加每分钟设置任务
            echo "* * * * * /bin/sh /usr/local/scripts/fix_ovs_network.sh setup-csv" >> $root_cron_file  #添加每分钟设置任务
            if [ "$(cat $root_cron_file | grep '^\* \* \* \* \* /bin/sh /usr/local/scripts/fix_ovs_network.sh setup-csv')" != "" ];then
                check_crontab_result2="每分钟设置任务添加成功"
                yellow "每分钟设置任务: "; green "$check_crontab_result2\n"
            else
                check_crontab_result2="每分钟设置任务添加失败"
                yellow "每分钟设置任务: "; red "$check_crontab_result2\n"
            fi
        fi
        check_crontab_result="$check_crontab_result1;$check_crontab_result2"

        /sbin/service cron restart >> /dev/null 2>&1    #重启cron服务
    elif [ "$1" == "restore" -o "$1" == "restore-csv" ];then
        root_cron_file="/var/spool/cron/crontabs/root"

        if [ -f "$root_cron_file" ];then    #如果存在root的任务文件
            if [ "$(cat $root_cron_file | grep 'fix_ovs_network.sh')" != "" ];then     #如果已经存在fix_ovs_network.sh任务
                #删除所有fix_ovs_network.sh任务
                sed -i "/fix_ovs_network.sh/d" $root_cron_file
              
                #检查Iptables重启恢复任务是否删除
                if [ "$(cat $root_cron_file | grep '^@reboot*.*fix_ovs_network.sh')" == "" ];then
                    check_crontab_result1="重启后设置任务删除成功"
                    yellow "重启后设置任务: "; green "$check_crontab_result1\n"
                else
                    check_crontab_result1="重启后设置任务删除失败"
                    yellow "重启后设置任务: "; red "$check_crontab_result1\n"
                fi

                #检查每分钟设置任务是否删除
                if [ "$(cat $root_cron_file | grep '^*[[:space:]]*.*fix_ovs_network.sh')" == "" ];then
                    check_crontab_result2="每分钟设置任务删除成功"
                    yellow "每分钟设置任务: "; green "$check_crontab_result2\n"
                else
                    check_crontab_result2="每分钟设置任务删除失败"
                    yellow "每分钟设置任务: "; red "$check_crontab_result2\n"
                fi
            else
                check_crontab_result1="重启后设置任务不存在"
                check_crontab_result2="每分钟设置任务不存在"
                yellow "重启后设置任务: "; green "$check_crontab_result1\n"
                yellow "每分钟设置任务: "; green "$check_crontab_result2\n"
            fi
        else
            check_crontab_result1="重启后设置任务不存在"
            check_crontab_result2="每分钟设置任务不存在"
            yellow "重启后设置任务: "; green "$check_crontab_result1\n"
            yellow "每分钟设置任务: "; green "$check_crontab_result2\n"
        fi
        check_crontab_result="$check_crontab_result1;$check_crontab_result2"

        /sbin/service cron restart >> /dev/null 2>&1    #重启cron服务
    fi
}


#CSV格式结果显示程序
function show_csv_result(){
    check_ovs_result="$ipaddr,$system_name,$system_version,$check_phy_nic_name_result,$check_phy_nic_brand_result,$check_phy_nic_model_result,$check_phy_nic_status_result,$check_phy_nic_ip_result,$check_ovs_nic_result,$check_ovs_nic_ip_result,$check_upgrade_script_result,$check_crontab_result"
    echo check_ovs_result="$check_ovs_result"
}


#主程序
function main(){
    if [ "$1" == "check" -o "$1" == "setup" -o "$1" == "restore" ];then
        blue "飞牛OS有线OVS网卡IP丢失自动修复脚本 $version\n"
        echo

        #操作系统名称检测
        system_check

        #获取物理网卡名称
        check_phy_nic

        #ovs网卡设置程序
        configure_ovs $1 $phy_nic

        #更新脚本文件程序
        upgrade_script_file $1

        #设置任务计划程序
        config_crontab $1
    elif [ "$1" == "check-csv" -o "$1" == "setup-csv" -o "$1" == "restore-csv" ];then
        #服务器ip地址获取程序
        get_ip >> /dev/null 2>&1

        #操作系统名称检测
        system_check >> /dev/null 2>&1

        #获取物理网卡名称
        check_phy_nic >> /dev/null 2>&1

        #ovs网卡设置程序
        configure_ovs $1 $phy_nic >> /dev/null 2>&1

        #更新脚本文件程序
        upgrade_script_file $1 >> /dev/null 2>&1

        #设置任务计划程序
        config_crontab $1 >> /dev/null 2>&1

        #CSV格式结果显示程序
        show_csv_result
    fi
}


#帮助程序
function help(){
    green "用法: "; yellow "$0 ( check | check-csv | setup | setup-csv | restore | restore-csv )\n"
    green "举例:\n"
    yellow "$0 check                      ";green "#检查OVS网卡,检查IP设置,检查定时任务\n"
    yellow "$0 check-csv                  ";green "#检查OVS网卡,检查IP设置,检查定时任务,显示CSV格式信息\n"
    yellow "$0 setup                      ";green "#修复OVS网卡,设置IP到OVS网卡,添加定时任务\n"
    yellow "$0 setup-csv                  ";green "#修复OVS网卡,设置IP到OVS网卡,添加定时任务,显示CSV格式信息\n"
    yellow "$0 restore                    ";green "#删除OVS网卡,设置IP到物理网卡,删除定时任务\n"
    yellow "$0 restore-csv                ";green "#删除OVS网卡,设置IP到物理网卡,删除定时任务,显示CSV格式信息\n"
    echo
    exit
}


#必须由root启动
if [ $UID -ne 0 ];then
    red "请使用root用户运行此脚本!\n"
    echo check_ovs_result="请使用root用户运行此脚本"
    exit
fi

#检查输入的参数
if [ $# -ne 1 ];then
    red "脚本必须输入1个参数\n"
    echo
    help
    exit
elif [ "$1" == "check" -o "$1" == "check-csv" -o "$1" == "setup" -o "$1" == "setup-csv" -o "$1" == "restore" -o "$1" == "restore-csv" ];then
    main $1
else
    red "输入的参数错误"
    help
    exit
fi


使用说明:

1、把脚本文件上传到/tmp/文件夹

2、切换到root用户

3、给脚本添加执行权限

cd /tmp

chmod +x fix_ovs_network_v1.1.sh

4、查看程序帮助菜单,输入执行参数。

./fix_ovs_network_v1.1.sh #回车可查看帮助菜单

image.png

5、使用check和check-csv参数,可以检测当前的OVS网卡的IP设置和任务设置

./fix_ovs_network_v1.1.sh check

image.png

image.png

6、使用setup和setup-csv参数,可以修复OVS网卡,设置IP到OVS网卡,添加定时任务,如果检测没问题就不做任何修复操作。

image.png

7、使用restore和restore-csv参数,可以删除OVS网卡,设置IP到物理网卡,删除定时任务。

image.png

8、使用注意:在删除OVS网卡后,会导致虚拟机无法使用。如果使用setup参数再次设置OVS网卡后,最好重启下飞牛主机。

9、脚本可以自动检测物理网卡,但编写没有考虑存在多个物理网卡的情况,也没考虑使用无线网卡的情况,也没考虑使用多网卡聚合的情况,如果这种情况下也想使用脚本,可以在脚本里指定物理网卡名称,不过我没做测试。

10、脚本默认是给OVS网卡自动获取IP,如果想配置固定IP,可以在脚本里预设固定IP、掩码、网关和DNS服务器,缺了任何一项都会改成自动获取IP。

upload 附件:fix_ovs_network_v1.1.zip

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

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

本版积分规则