From 3cd9ba0cfc2868a7110731e34a7f2316364cd00c Mon Sep 17 00:00:00 2001 From: wumb0 Date: Sun, 23 Sep 2018 20:30:43 -0400 Subject: [PATCH 1/6] make temporary an ini file option --- dockersh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockersh b/dockersh index fddac86..e9ebae5 100755 --- a/dockersh +++ b/dockersh @@ -91,7 +91,7 @@ def parse_args(): dest='temp', action='store_true', help="execute in temporary container", - default=False) + default=ini['temporary']) parser.add_argument('-c', '--command', dest='cmd', help="pass command to bash in container", From 071fb9d632ec876ade162f155c93c4ac1cd18657 Mon Sep 17 00:00:00 2001 From: wumb0 Date: Sun, 23 Sep 2018 21:15:43 -0400 Subject: [PATCH 2/6] fix default option --- dockersh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockersh b/dockersh index e9ebae5..a783062 100755 --- a/dockersh +++ b/dockersh @@ -91,7 +91,7 @@ def parse_args(): dest='temp', action='store_true', help="execute in temporary container", - default=ini['temporary']) + default=ini.getboolean('temporary', False)) parser.add_argument('-c', '--command', dest='cmd', help="pass command to bash in container", From 99b6eb4a05ddf59168d42e2086031fd82395186b Mon Sep 17 00:00:00 2001 From: Jaime Geiger Date: Wed, 26 Sep 2018 19:40:53 -0400 Subject: [PATCH 3/6] --privileged --- dockersh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dockersh b/dockersh index a783062..d6301c0 100755 --- a/dockersh +++ b/dockersh @@ -100,6 +100,9 @@ def parse_args(): dest='home', help="user home directory", default=ini['homedir']) + parser.add_argument('--privileged', dest='privileged' + help="run the container in privileged mode", + default=ini.getboolean('privileged', False)) #argcomplete.autocomplete(parser) #TODO make autocompletion work args = parser.parse_args() @@ -201,7 +204,8 @@ if len(containers(container_filter=args.name)) == 0: "HOST_USER_GID": userpwd.pw_gid, "HOST_USER_NAME": user }, - host_config=host_config + host_config=host_config, + privileged=args.privileged ) cli.start(args.full_name) From a7fc52476f387a4a8ba904d9eec48c3f56bdcc5f Mon Sep 17 00:00:00 2001 From: Jaime Geiger Date: Wed, 26 Sep 2018 19:55:54 -0400 Subject: [PATCH 4/6] fix syntax --- dockersh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockersh b/dockersh index c767ad4..42070cd 100755 --- a/dockersh +++ b/dockersh @@ -102,7 +102,7 @@ def parse_args(): dest='home', help="user home directory", default=ini['homedir']) - parser.add_argument('--privileged', dest='privileged' + parser.add_argument('--privileged', dest='privileged', help="run the container in privileged mode", default=ini.getboolean('privileged', False)) #argcomplete.autocomplete(parser) #TODO make autocompletion work From 571038010e89344add4cfe73c560e74c55bce428 Mon Sep 17 00:00:00 2001 From: Jaime Geiger Date: Wed, 26 Sep 2018 22:15:47 -0400 Subject: [PATCH 5/6] fix bugs --- dockersh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/dockersh b/dockersh index 42070cd..0505a05 100755 --- a/dockersh +++ b/dockersh @@ -116,7 +116,8 @@ def parse_args(): # load ini config_envir = { - "USER": user + "USER": user, + "HOME": os.environ['HOME'] } cfg = ConfigParser(config_envir, interpolation=ExtendedInterpolation()) cfg.read(config_file) @@ -194,7 +195,8 @@ if len(containers(container_filter=args.name)) == 0: host_config = cli.create_host_config( binds=binds, - restart_policy={'Name' : 'unless-stopped'}) + restart_policy={'Name' : 'unless-stopped'}, + privileged=args.privileged) #cli.pull(args.image) userpwd = getpwnam(user) @@ -211,8 +213,7 @@ if len(containers(container_filter=args.name)) == 0: "HOST_USER_GID": userpwd.pw_gid, "HOST_USER_NAME": user }, - host_config=host_config, - privileged=args.privileged + host_config=host_config ) initing=True From 325029d94d4a18384364819c5b13c9fed924d348 Mon Sep 17 00:00:00 2001 From: Jaime Geiger Date: Wed, 3 Oct 2018 14:49:19 -0400 Subject: [PATCH 6/6] add more config options --- dockersh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/dockersh b/dockersh index 0505a05..d3c659e 100755 --- a/dockersh +++ b/dockersh @@ -105,6 +105,12 @@ def parse_args(): parser.add_argument('--privileged', dest='privileged', help="run the container in privileged mode", default=ini.getboolean('privileged', False)) + parser.add_argument('--cap_add', dest='cap_add', + help="capabilities to add to the container", + default=ini.get('cap_add', None)) + parser.add_argument('--post_cmd', dest='post_cmd', + help="command to run before the container is deleted", + default=ini.get('post_cmd', None)) #argcomplete.autocomplete(parser) #TODO make autocompletion work args = parser.parse_args() @@ -144,6 +150,8 @@ if args.cmd == admin_cmd: os.system("sudo -u "+user+" "+admin_shell) sys.exit(0) +if args.cap_add: + args.cap_add = args.cap_add.split(",") is_scp_cmd = False if args.cmd: @@ -196,7 +204,8 @@ if len(containers(container_filter=args.name)) == 0: host_config = cli.create_host_config( binds=binds, restart_policy={'Name' : 'unless-stopped'}, - privileged=args.privileged) + privileged=args.privileged, + cap_add=args.cap_add) #cli.pull(args.image) userpwd = getpwnam(user) @@ -236,6 +245,8 @@ if not is_scp_cmd: docker_arg = "-i" if not sys.stdout.isatty() or is_scp_cmd else "-it" os.system('docker exec -u '+user+" " + docker_arg +' '+ args.full_name + ' ' + cmd) +if args.post_cmd: + os.system('docker exec -it {} sh -c \'{}\''.format(args.full_name, args.post_cmd)) if args.temp: cli.remove_container(args.full_name, v=True, force=True)