Как запросить и изменить сетевое пространство имен в Linux?
Мне было интересно, если есть способ
- Запросить сетевое пространство имен, в котором находится текущая оболочка
- Изменить текущее сетевое пространство имен текущей оболочки
Я знаю, что могу делать такие вещи, как
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 $$