use getpass to get user

`os.getlogin()` does not seem to work in all cases, however `getpass.getuser()` does.

Example:
```
$ sudo python
Python 3.11.3 (main, May 16 2023, 12:21:43) [GCC 12.2.1 20230428] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.getlogin()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory
>>> import getpass
>>> getpass.getuser()
'root'
```
pull/17/head
Rafael Ristovski 1 year ago committed by GitHub
parent 2bbc743d9b
commit 4b334c60e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -8,6 +8,7 @@ import json
import os
import subprocess
import sys
import getpass
try:
import yaml
@ -92,7 +93,7 @@ def cli(args):
data = json.loads(output)
print('\n'.join(item['name'] for item in data))
elif opts.action == 'switch':
os.execvp('sudo', ['ip', 'ip', 'netns', 'exec', opts.netns, 'sudo', '-u', os.getlogin(), '-D', Path.cwd().as_posix(), os.environ['SHELL'], '-i'])
os.execvp('sudo', ['ip', 'ip', 'netns', 'exec', opts.netns, 'sudo', '-u', getpass.getuser(), '-D', Path.cwd().as_posix(), os.environ['SHELL'], '-i'])
else:
raise RuntimeError('congratulations, you reached unreachable code')

Loading…
Cancel
Save