Как запросить и изменить сетевое пространство имен в Linux?

Мне было интересно, если есть способ

  1. Запросить сетевое пространство имен, в котором находится текущая оболочка
  2. Изменить текущее сетевое пространство имен текущей оболочки

Я знаю, что могу делать такие вещи, как

sudo ip netns exec <namespace_name> <some command>

выполнить определенную команду в определенном пространстве имен сети, но я думал о чем-то вроде

:~$ sudo query_current_namespace
some_namespace
:~$ sudo change_current_namespace_to other_namespace
:~$ sudo query_current_namespace
other_namespac
:~$ dothings in newnamespace

Точно так же, как изменение в каком-либо подкаталоге, мне не нужно ставить перед каждой командой префикс sudo ip netns exec <namespace> штуковина.

Поиски в сети выглядят так, как будто мне нужно написать свою собственную Программу на Си, как предложено в этом блоге. Есть ли уже "стандартный" инструмент для этого?

Редактировать: я только что нашел, что я мог сделать

sudo ip netns exec <namespace> bash

который даст мне корневую оболочку в новом пространстве имен. Так что почти нет, но как мне запросить текущее пространство имен?

1 ответ

Решение

Смотрите справочную страницу:

   ip netns identify PID - Report network namespaces names for process
       This command walks through /var/run/netns and finds all the network
       namespace names for network namespace of the specified process.

Так что вы бы сделали что-то вроде:

ip netns identify $$
Другие вопросы по тегам