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