我刚刚在笔记本电脑上安装了来自 Packages ( ) 的Ubuntu 17.10 和Mininet 2.2.2。sudo apt-get install mininet
本机,即真实机器上的真实操作系统,没有任何类型的虚拟机。笔记本电脑是 2017 款 MacBook Pro 13",不带触摸栏 (MacBookPro14,1),Ubuntu 在快速 USB 密钥上运行;只是为了完整性而写,我认为这无关紧要。
我需要对要创建的每个 Mininet 主机进行 CLI 访问,以便运行自定义测试并观察每个节点中通过的流量。
在我以前的笔记本电脑上,我有类似的设置,但使用的是旧版本的 Ubuntu,可能还有 Mininet,我设法能够xterm
从我想要的每个 Mininet 主机生成 s。问题是,我根本不记得我是怎么做到的=)。
echo $DISPLAY
返回:0
我是在常规 shell 还是在 Mininet 主机中运行它,但在常规 shell 中会xterm
打开一个 xterm 窗口。假设h1
是我的 Mininet 主机。我启动 Mininetsudo mn
并得到:
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 转发有关,而我尝试过的一切都失败了。
任何想法?
在终端中运行
xhost +local:
而不是超级用户来解决问题。详情如下。问题是由于安全原因,当以超级用户身份验证时 xterm 默认情况下无法正常工作(Mininet 必须以超级用户身份运行)。
您可以在像往常一样登录时通过运行
xterm
并sudo xterm
在终端中检查这是否是您的问题(如果您sudo su
在此检查之前做了类似的事情是没有意义的)。如果xterm
打开,但sudo xterm
没有,那么你需要运行sudo xterm
现在应该可以工作了,h1 xterm
在 Mininet 内部也是如此。sudo
这是因为通过该命令,您为以或运行的应用程序提供了图形服务器访问权限su
。该设置在重新启动之间不会持续存在,并且可以使用
xhost -
.请注意,通过这样做,您将授予系统或网络上的任何用户对您的 $DISPLAY 的访问权限,而无需身份验证 ( https://wiki.archlinux.org/index.php/Xhost )。