我刚从笔记本电脑上的软件包(sudo apt-get install mininet
)安装了 Ubuntu 17.10和 Mininet 2.2.2。本地,即真实机器上的真实操作系统,没有任何类型的虚拟机。笔记本电脑是2017款MacBook Pro 13"没有触摸栏(MacBookPro14,1),Ubuntu在快速USB密钥上运行;只是为了完整性而写,我不认为它是相关的。
我需要CLI访问我要创建的每个Mininet主机,以便运行自定义测试并观察每个节点中经过的流量。
在我以前的笔记本电脑上,我有类似的设置,但是使用旧版本的Ubuntu,可能还有Mininet,我设法能够从我想要的每个Mininet主机中生成xterm
。问题是,我根本不记得我是怎么做的。=。
echo $DISPLAY
返回:0
无论是在常规shell还是在Mininet主机中运行它,但在常规shell xterm
中会打开一个xterm窗口。让我们说h1
是我的Mininet主持人。我用sudo mn
启动Mininet,然后得到:
h1 echo $DISPLAY
- > :0
xterm h1
- >没什么,没有任何反应h1 xterm &
- >没什么,没有任何反应h1 xterm
- > No protocol specified. Warning: This program is an suid-root program or is being run by the root user. The full text of the error or warning message cannot be safely formatted in this environment. You may get a more descriptive message by running the program as a non-root user or by removing the suid bit on the executable. xterm: Xt error: Can't open display: %s
我能找到的所有信息都与使用ssh的X11转发有关,而且我尝试的所有信息都失败了。
有什么想法吗?
答案 0 :(得分:0)
在终端中运行xhost +local:
而不是超级用户来解决问题。详情如下。
出于安全原因,问题是由于xterm在以超级用户身份验证时默认不起作用(Mininet必须以超级用户身份运行)。
您可以照常登录时在终端中运行xterm
和sudo xterm
来检查这是否是您的问题(如果您在此检查毫无意义之前执行了sudo su
之类的操作) 。
如果xterm
打开,但sudo xterm
没有,则需要运行
xhost +local:
sudo xterm
现在应该可以使用,以及Mininet中的h1 xterm
。
这是因为使用该命令,您可以对以sudo
或su
运行的应用程序提供图形服务器访问。
设置不会在重新启动之间保留,并且可以使用xhost -
还原。
请注意,通过这样做,您无需身份验证(https://wiki.archlinux.org/index.php/Xhost)即可让系统或网络上的任何用户访问您的$ DISPLAY。