Je viens d'installer bunt 17.10 et Mininet 2.2.2 à partir de paquets (Sudo apt-get install mininet
) sur mon ordinateur portable. Nativement, c’est-à-dire un vrai système d’exploitation sur une vraie machine, pas de machine virtuelle. L'ordinateur portable est un MacBook Pro 13 pouces 2017 sans barre tactile (MacBookPro14,1), et Ubuntu fonctionne sur une clé USB rapide; il suffit d'écrire pour être complet, je ne pense pas que ce soit pertinent.
J'ai besoin d'un accès CLI à chaque hôte Mininet que je vais créer pour exécuter des tests personnalisés et observer le trafic qui passe dans chaque nœud.
Sur mon ancien ordinateur portable, j'avais une configuration similaire, mais avec les anciennes versions d'Ubuntu et probablement aussi de Mininet, et j'ai réussi à pouvoir générer xterm
s de chaque hôte Mininet que je voulais. Le problème est que je ne me souviens pas du tout comment je l’ai fait =).
echo $DISPLAY
renvoie :0
si je l'exécute dans un shell standard ou dans un hôte Mininet, mais dans un shell standard xterm
ouvre une fenêtre xterm. Disons que h1
est mon hôte Mininet. Je lance Mininet avec Sudo mn
et je reçois:
h1 echo $DISPLAY
-> :0
xterm h1
-> rien et rien ne se passeh1 xterm &
-> rien et rien ne se passeh1 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
Toutes les informations que je pouvais trouver sont liées au transfert X11 avec ssh, et tout ce que j'ai essayé a échoué.
Une idée?
Exécutez xhost +local:
dans un terminal sans être superutilisateur pour résoudre le problème. Ci-dessous les détails.
Le problème est dû au fait que xterm ne fonctionne pas par défaut lorsqu'il est authentifié en tant que superutilisateur (Mininet doit être exécuté en tant que superutilisateur), pour des raisons de sécurité.
Vous pouvez vérifier si cela est votre problème en exécutant xterm
et Sudo xterm
dans un terminal lors de la connexion habituelle (si vous avez fait quelque chose comme Sudo su
avant que cette vérification soit inutile). Si xterm
s'ouvre mais que Sudo xterm
ne le fait pas, vous devez exécuter
xhost +local:
Sudo xterm
devrait fonctionner maintenant, ainsi que h1 xterm
dans Mininet. En effet, avec cette commande, vous avez fourni un accès serveur graphique aux applications exécutées en tant que Sudo
ou su
.
Le paramètre ne persistera pas entre les redémarrages et il peut être annulé avec xhost -
.
Veuillez noter qu'en faisant cela, vous donnez à tout utilisateur du système ou du réseau un accès à votre $ DISPLAY sans authentification ( https://wiki.archlinux.org/index.php/Xhost ).