我刚从笔记本电脑上的Packages( sudo apt-get install mininet
)安装了 Ubuntu 17.10和 Mininet 2.2.2 . 原生地,即真机上的真实操作系统, no virtual machines of any sort . 笔记本电脑是2017年MacBook Pro 13“没有触摸栏(MacBookPro14,1),Ubuntu运行在一个快速的USB密钥;只是为了完整性写,我不相关的.2963798_相关 .
我需要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转发有关,而我尝试的所有信息都失败了 .
任何的想法?
1 回答
在终端中运行
xhost +local:
而不是超级用户来解决问题 . 详情如下 .出于安全原因,问题是由于xterm在以超级用户身份验证时默认不起作用(Mininet必须以超级用户身份运行) .
您可以像往常一样登录时在终端中运行
xterm
和sudo xterm
来检查这是否是您的问题(如果您在此检查之前做了类似sudo su
之类的事情) . 如果xterm
打开,但sudo xterm
没有,则需要运行sudo xterm
现在应该工作,以及Mininet里面的h1 xterm
. 这是因为使用该命令,您提供了对运行为sudo
或su
的应用程序的图形服务器访问 .该设置将不会在重新启动之间保持不变,并且可以使用
xhost -
进行还原 .请注意,通过执行此操作,您无需身份验证即可向系统或网络上的任何用户授予$ DISPLAY(https://wiki.archlinux.org/index.php/Xhost) .