From 121288feb936041149287456af23b6f741f56d76 Mon Sep 17 00:00:00 2001 From: dadevel Date: Wed, 10 Apr 2024 10:08:08 +0200 Subject: [PATCH] add exec command --- pyproject.toml | 2 +- wgnetns/main.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 15190c7..9a64aa5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wgnetns" -version = "2.3.2" +version = "2.3.4" description = "wg-quick for network namespaces" authors = ["dadevel "] license = "MIT" diff --git a/wgnetns/main.py b/wgnetns/main.py index e31692d..dac4ef0 100755 --- a/wgnetns/main.py +++ b/wgnetns/main.py @@ -65,6 +65,10 @@ def cli(args): parser = subparsers.add_parser('switch', help='open shell in namespace') parser.add_argument('netns', metavar='NETNS', help='network namespace name') + parser = subparsers.add_parser('exec', help='run command in namespace') + parser.add_argument('netns', metavar='NETNS', help='network namespace name') + parser.add_argument('command', nargs='+', help='command') + opts = entrypoint.parse_args(args) try: @@ -97,6 +101,8 @@ def cli(args): print('\n'.join(item['name'] for item in data)) elif opts.action == 'switch': os.execvp('sudo', ['ip', 'ip', 'netns', 'exec', opts.netns, 'sudo', '-u', getpass.getuser(), '-D', Path.cwd().as_posix(), os.environ['SHELL'], '-i']) + elif opts.action == 'exec': + os.execvp('sudo', ['ip', 'ip', 'netns', 'exec', opts.netns, 'sudo', '-u', getpass.getuser(), '-D', Path.cwd().as_posix(), *opts.command]) else: raise RuntimeError('congratulations, you reached unreachable code')