50 lines
No EOL
1.7 KiB
Python
Executable file
50 lines
No EOL
1.7 KiB
Python
Executable file
#!/usr/bin/python3
|
|
#
|
|
# Script to do some things that require root permissions as a normal user
|
|
# Currently used for:
|
|
# - mounting shares
|
|
# - installing printers
|
|
#
|
|
|
|
import os, sys, argparse
|
|
from linuxmusterLinuxclient7 import shares, printers, constants
|
|
|
|
|
|
parser = argparse.ArgumentParser(description="Script to do some things that require root permissions as a normal user")
|
|
|
|
subparsers = parser.add_subparsers(title='Tasks', metavar="<task>", help="The task to execute", dest="task", required=True)
|
|
|
|
subparserCache = subparsers.add_parser('install-printer', help='install a printer')
|
|
requiredGroupCache = subparserCache.add_argument_group('required arguments')
|
|
requiredGroupCache.add_argument("--path", help="The network path of the printer", required=True)
|
|
requiredGroupCache.add_argument("--name", help="The name of the printer", required=True)
|
|
|
|
subparserCache = subparsers.add_parser('mount-share', help='mount a network share')
|
|
subparserCache.add_argument("--hidden", help="Hide this share", action='store_true')
|
|
requiredGroupCache = subparserCache.add_argument_group('required arguments')
|
|
requiredGroupCache.add_argument("--path", help="The network path of the share", required=True)
|
|
requiredGroupCache.add_argument("--name", help="The name of the share", required=True)
|
|
|
|
args = parser.parse_args()
|
|
|
|
task = args.task
|
|
|
|
if not os.geteuid() == 0:
|
|
print("This script has to be run using sudo!")
|
|
exit(1)
|
|
|
|
username = os.getenv("SUDO_USER")
|
|
|
|
if task == "install-printer":
|
|
if printers.installPrinter(args.path, name=args.name, username=username):
|
|
sys.exit(0)
|
|
else:
|
|
sys.exit(1)
|
|
pass
|
|
elif task == "mount-share":
|
|
if shares._mountShare(username, args.path, args.name, args.hidden, False):
|
|
sys.exit(0)
|
|
else:
|
|
sys.exit(1)
|
|
|
|
exit(0) |