Мне было интересно, есть ли способ
Я знаю, что могу делать такие вещи, как
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>
штуковина.
Поиск в сети выглядит так, будто мне придется написать свою собственную маленькую программу C, как предложено в этом сообщении в блоге. Есть ли уже "стандартный" инструмент для этого?
Редактировать: Я только что обнаружил, что могу сделать
sudo ip netns exec <namespace> bash
что даст мне корневую оболочку в новом пространстве имен. Итак, почти готово, но как мне запросить текущее пространство имен?
См. Страницу руководства:
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 $$