我的环境:Ubuntu 22.04.5 LTS
liu@liu-Ubuntu-Desktop:~/桌面$ ovs-vsctl -V ovs-vsctl (Open vSwitch) 2.17.9 DB Schema 8.3.0
liu@liu-Ubuntu-Desktop:~/桌面$ mn --version 2.3.0
liu@liu-Ubuntu-Desktop:~/桌面$ python3 Python 3.10.12 (main, Sep 11 2024, 15:47:36) [GCC 11.4.0] on linux
一、MiniEdit中将拓扑另存为python文件时报错
报错信息如下:
这个报错原因通常是因为使用了python3来启动miniedit.py。
如果有python2环境,使用python2打开就能解决。
# 查看当前环境中的python版本
liu@liu-Ubuntu-Desktop:~/桌面$ which python2
/usr/bin/python2 # 说明我当前环境中有python2
liu@liu-Ubuntu-Desktop:~/桌面$ which python3
/usr/bin/python3 # 说明我当前环境中有python3
# 如果有python2,那么使用python2来打开miniedit
sudo python2 miniedit.py的路径
# 例如:
sudo python2 ~/mininet/examples/miniedit.py
如果环境中没有python2或者想要使用python3启动,那么就需要修改miniedit.py文件的内容。
根据报错信息可知,我的miniedit.py是在/usr/lib/python3/dist-packages/mininet/examples/
目录下。(如果你是使用git clone,之后执行install.py安装的mininet,那么你的)
先备份miniedit.py文件.
sudo cp [miniedit.py的路径]/miniedit.py [miniedit.py的路径]/miniedit_backup.py
# 示例
sudo cp /usr/lib/python3/dist-packages/mininet/examples/miniedit.py /usr/lib/python3/dist-packages/mininet/examples/miniedit_backup.py
使用vim编辑器打开miniedit.py文件。
# 示例
sudo vim /usr/lib/python3/dist-packages/mininet/examples/miniedit.py
打开后输入:1707
,回车。
跳转到1707行后,按i
进入编辑模式,找到wb
,将其修改为wt
。
再按Esc建,退出编辑模式,再输入:wq
保存并退出。
若保存退出时出现下面这种情况,清输入wq!
保存并强制退出。
此时,重新使用python3启动MiniEdit(也就是miniedit.py文件),就可以将拓扑图保存为python文件了。
# 示例
sudo python3 /usr/lib/python3/dist-packages/mininet/examples/miniedit.py
二、MiniEdit中点击Run运行时闪退、以python脚本保存的拓扑文件运行报错
MiniEdit中点击Run运行时闪退,或者以python脚本保存的拓扑文件运行出现类似下图中所示的报错,提示Cannot find required executable controller.
这是因为ovs-controller从OVS 2.1.0开始不再打包,但是mininet仍然需要使用ovs-controller。
mininet的github上也有说明:https://github.com/mininet/mininet/issues/301
目前我的OVS版本是2.17.9,且我是通过sudo apt install mininet
命令直接安装的mininet,所以没有ovs-controller。
如果你是使用git clone mininet的仓库,并通过install.sh脚本来安装的,那么你可以尝试重新安装mininet来解决此问题。
# 进入到解压后的mininet目录 cd /[mininet路径]/mininet/util/ # 反复执行安装脚本(记得加上-a选项) sudo ./install.sh -a
如果多次尝试重新安装无果后,请尝试下面的方法。
如果你和我一样,使用apt安装的,可以尝试下面提供的解决方法。
解决方法是,安装openvswitch-testcontroller,并为openvswitch-testcontroller创建符号链接为controller。
# 安装openvswitch-testcontroller
sudo apt-get install openvswitch-testcontroller
# 创建符号链接
sudo ln /usr/bin/ovs-testcontrholler /usr/bin/controller
接下来还需要关闭OVS的controller服务,否则mininet会报错。
# 关闭服务
sudo service openvswitch-testcontroller stop
# 查看服务状态(按Ctrl+C退出)
sudo service openvswitch-testcontroller status
# 禁止开机自启
sudo update-rc.d openvswitch-testcontroller disable
没有关闭OVS的controller服务的后果。
MiniEdit点击Run运行时:
运行保存的python脚本时:
使用测试命令时:
此时,再次运行脚本文件,成功执行。
标签:Mininet,sudo,mininet,miniedit,py,问题,合集,python3,python2 From: https://www.cnblogs.com/chuangblog/p/18470603