环境:

Ubunt20.4

Xshell 6

Xmanager 6

Python3.8

一、安装xshell

  下载安装,一直next就行

二、安装Xmanager

  https://www.xshellcn.com/,正版需要付费使用,可以去阿里云购买服务使用

三、Ubuntu安装xwidows一些组件(提供可视化,没太明白,网上说的...)

大致包含以下包:

  • apt-get install xserver-xorg 
  • apt-get install x-window-system-core 
  • dpkg-reconfigure xserver-xorg 
  • apt-get install gnome-core 
  • apt-get install gdm xscreensaver 
  • apt-get install ttf-arphic*

四、安装SSH

  1. 为Ubuntu安装ssh服务器
  • 命令: sudo apt install openssh-server
  • 启动: sudo systemctl start ssh
  • 查看: sudo systemctl status ssh

android xshell终端 xshell+xmanager_android xshell终端

   2.关闭防火墙

  • 命令:sudo ufw disable
  • 查看:udo ufw status

android xshell终端 xshell+xmanager_android xshell终端_02

需要准备的工作基本上就是这些,可能之前使用过,有些步骤可能忘记了,可以参考其他文档。

五、Xshell连接Ubuntu

第一步:

android xshell终端 xshell+xmanager_android xshell终端_03

 第二步:

android xshell终端 xshell+xmanager_服务器_04

 第三步:

android xshell终端 xshell+xmanager_android xshell终端_05

 第四步:点击连接,若出现以下窗口,表示连接成功,例如:会话名称为Ubuntu

android xshell终端 xshell+xmanager_端口号_06

 六、打开Xmanger

  1. 打开Xmanager

android xshell终端 xshell+xmanager_Ubuntu_07

  2.双击Ubuntu则会自动跳转至Xshell中,这一步很关键

七、测试

  基于Xmanager跳转的会话窗口中(应该不能随便打开一个会话窗口,为了方便直接在Xmanage跳转的窗口中运行代码就好了),输入命令:gtk-demo

可能会出现各种错误,大部分可能都会出现以下错

android xshell终端 xshell+xmanager_android xshell终端_08

 具体忘记怎么解决了,也是参考了很多大佬的思路和方法。大致记得可以这样做:

    1、可以修改 etc/hosts的文件(好像是只读的,修改文件权限就行),加入当前服务器的IP地址,一行一个IP地址

    2、可以输入 export DISPLAY=服务器IP地址:0.0

    3、可以修改ssh的sshd_config配置文件

  

android xshell终端 xshell+xmanager_android xshell终端_09

  

android xshell终端 xshell+xmanager_端口号_10

     修改完后,重新启动ssh服务器。

    3、可以使用Xhost +,运行其他用户执行图像化操作(看别人这么写的,我没成功...)

  还有很多解决方法,可以网上查找一下,以上几种方法可能也不能解决这个问题,真的忘了是采用那种方法解决的了...

  正确安装完成是出现以下图像

android xshell终端 xshell+xmanager_端口号_11

4、解决Xshell与Xmanager键盘文件显示两次的方法

 八、远程执行mininet的可视化工具

  我安装的Mininet放置在 sdn目录中

android xshell终端 xshell+xmanager_android xshell终端_12

Xmanager双击Ubuntu,跳转到Xshell会话窗口后,进入 mininet/mininet/examples

android xshell终端 xshell+xmanager_服务器_13

运行miniedit.py(我安装的python版本是3.8.3)

android xshell终端 xshell+xmanager_android xshell终端_14

   正确运行的话,将会显示该窗体。

android xshell终端 xshell+xmanager_服务器_15

这一步也会出现蛮多问题的,被折磨了很久,大概记得出现的几个错误,总结如下:

1、出现" ModuleNotFoundError: No module named 'tkinter' "

     这个好办缺少什么导入什么,直接导入此包到Python中。

     执行 sudo apt-get install tcl-dev tk-dev python3-tk,

     如果遇到什么候选包不存在之类,多半是要更新apt-get,执行 sudo apt-get update,

     还有问题的话,网上找吧...

2、出现tkinter.TclError: couldn't connect to display ":0.0"

  网上有很多解决思路,慢慢找吧...

九、安装ryu控制器与mininet连接

ryu可以监听mininet的相关信息,实现远程连接

1、安装pip3

检查是否已经安装pip3(或者pip,对应不同的版本)

android xshell终端 xshell+xmanager_android xshell终端_16

 

 没有的话,执行命令 sudo apt install python3-pip进行安装

出现错误的话,一般更新一下apt-get就行

2、安装ryu

执行命令 pip3 install ryu进行安装

 

android xshell终端 xshell+xmanager_服务器_17

 

 执行命令 ryu-manager查看是否安装成功

android xshell终端 xshell+xmanager_端口号_18

 

 若出现异常,可能是某个端口号被占用,因为ryu默认端口号为6633,可以结束占用进程,也可重新给ryu一个端口号

netstat -nltp | grep 6633 #看看RYU控制器监听的默认端口6633被哪个应用占用了。
kill此应用并重新尝试。

 

android xshell终端 xshell+xmanager_android xshell终端_19

可以看出,端口6633被pid为108194的应用占用啦。

kill -9 108194 #解除端口6633的占用

android xshell终端 xshell+xmanager_Ubuntu_20

ryu控制器正常运行

3、mininet与ryu连接

启动ryu

执行命令 ryu-manager --verbose ryu.app.simple_switch_13,出现以下窗口

android xshell终端 xshell+xmanager_Ubuntu_21

 

 启动miniedit

android xshell终端 xshell+xmanager_服务器_22

在窗口中查看有以下内容,表示连接成功

 

android xshell终端 xshell+xmanager_Ubuntu_23

android xshell终端 xshell+xmanager_Ubuntu_24

可参考以下文档

https://www.jianshu.com/p/45302aa8ab41