From 4a6187a90a0b0cdfdf0dfd875b7727c9c590df38 Mon Sep 17 00:00:00 2001 From: Philippe Dellaert Date: Thu, 30 Jan 2014 21:05:10 +0100 Subject: [PATCH 1/4] Sample security improvement with getpass Using getpass to get the connection password in a save way, this way, the password is not visible on the command line and the shell's history --- sample/getallvms.py | 6 ++++-- sample/poweronvm.py | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/sample/getallvms.py b/sample/getallvms.py index 21afcba..43ed09e 100644 --- a/sample/getallvms.py +++ b/sample/getallvms.py @@ -25,6 +25,7 @@ from pyVmomi import vmodl import argparse import atexit import sys +import getpass def GetArgs(): @@ -35,7 +36,6 @@ def GetArgs(): parser.add_argument('-s', '--host', required=True, action='store', help='Remote host to connect to') parser.add_argument('-o', '--port', type=int, default=443, action='store', help='Port to connect on') parser.add_argument('-u', '--user', required=True, action='store', help='User name to use when connecting to host') - parser.add_argument('-p', '--password', required=True, action='store', help='Password to use when connecting to host') args = parser.parse_args() return args @@ -77,12 +77,14 @@ def main(): """ args = GetArgs() + password = getpass.getpass(prompt='Enter password for host %s and user %s: ' % (args.host,args.user)) + try: si = None try: si = SmartConnect(host=args.host, user=args.user, - pwd=args.password, + pwd=password, port=int(args.port)) except IOError, e: pass diff --git a/sample/poweronvm.py b/sample/poweronvm.py index 84de7c7..d5373b1 100755 --- a/sample/poweronvm.py +++ b/sample/poweronvm.py @@ -25,6 +25,7 @@ from pyVmomi import vim, vmodl import argparse import atexit import sys +import getpass def GetArgs(): """ @@ -35,7 +36,6 @@ def GetArgs(): parser.add_argument('-s', '--host', required=True, action='store', help='Remote host to connect to') parser.add_argument('-o', '--port', type=int, default=443, action='store', help='Port to connect on') parser.add_argument('-u', '--user', required=True, action='store', help='User name to use when connecting to host') - parser.add_argument('-p', '--password', required=True, action='store', help='Password to use when connecting to host') parser.add_argument('-v', '--vmname', required=True, action='append', help='Names of the Virtual Machines to power on') args = parser.parse_args() return args @@ -98,6 +98,8 @@ def main(): """ args = GetArgs() + password = getpass.getpass(prompt='Enter password for host %s and user %s: ' % (args.host,args.user)) + try: vmnames = args.vmname if not len(vmnames): @@ -108,7 +110,7 @@ def main(): try: si = SmartConnect(host=args.host, user=args.user, - pwd=args.password, + pwd=password, port=int(args.port)) except IOError, e: pass From 53379daedd17098ca6eeb1905991701eba5bd5d9 Mon Sep 17 00:00:00 2001 From: Philippe Dellaert Date: Thu, 30 Jan 2014 21:37:48 +0100 Subject: [PATCH 2/4] Improvements to allow the choice between command line and getpass --- sample/getallvms.py | 6 +++++- sample/poweronvm.py | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/sample/getallvms.py b/sample/getallvms.py index 43ed09e..c31c69b 100644 --- a/sample/getallvms.py +++ b/sample/getallvms.py @@ -36,6 +36,7 @@ def GetArgs(): parser.add_argument('-s', '--host', required=True, action='store', help='Remote host to connect to') parser.add_argument('-o', '--port', type=int, default=443, action='store', help='Port to connect on') parser.add_argument('-u', '--user', required=True, action='store', help='User name to use when connecting to host') + parser.add_argument('-p', '--password', required=False, action='store', help='Password to use when connecting to host') args = parser.parse_args() return args @@ -77,7 +78,10 @@ def main(): """ args = GetArgs() - password = getpass.getpass(prompt='Enter password for host %s and user %s: ' % (args.host,args.user)) + if args.password: + password = args.password + else: + password = getpass.getpass(prompt='Enter password for host %s and user %s: ' % (args.host,args.user)) try: si = None diff --git a/sample/poweronvm.py b/sample/poweronvm.py index d5373b1..9fde938 100755 --- a/sample/poweronvm.py +++ b/sample/poweronvm.py @@ -37,6 +37,7 @@ def GetArgs(): parser.add_argument('-o', '--port', type=int, default=443, action='store', help='Port to connect on') parser.add_argument('-u', '--user', required=True, action='store', help='User name to use when connecting to host') parser.add_argument('-v', '--vmname', required=True, action='append', help='Names of the Virtual Machines to power on') + parser.add_argument('-p', '--password', required=False, action='store', help='Password to use when connecting to host') args = parser.parse_args() return args @@ -98,7 +99,10 @@ def main(): """ args = GetArgs() - password = getpass.getpass(prompt='Enter password for host %s and user %s: ' % (args.host,args.user)) + if args.password: + password = args.password + else: + password = getpass.getpass(prompt='Enter password for host %s and user %s: ' % (args.host,args.user)) try: vmnames = args.vmname From d43936417e6f3fb6d61eb0dbc74a0c88beea5060 Mon Sep 17 00:00:00 2001 From: Philippe Dellaert Date: Thu, 30 Jan 2014 21:41:19 +0100 Subject: [PATCH 3/4] Alphabetical order --- sample/poweronvm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sample/poweronvm.py b/sample/poweronvm.py index 9fde938..ec62f7c 100755 --- a/sample/poweronvm.py +++ b/sample/poweronvm.py @@ -36,8 +36,8 @@ def GetArgs(): parser.add_argument('-s', '--host', required=True, action='store', help='Remote host to connect to') parser.add_argument('-o', '--port', type=int, default=443, action='store', help='Port to connect on') parser.add_argument('-u', '--user', required=True, action='store', help='User name to use when connecting to host') - parser.add_argument('-v', '--vmname', required=True, action='append', help='Names of the Virtual Machines to power on') parser.add_argument('-p', '--password', required=False, action='store', help='Password to use when connecting to host') + parser.add_argument('-v', '--vmname', required=True, action='append', help='Names of the Virtual Machines to power on') args = parser.parse_args() return args From 1f400c8aaf3d780823ee2e7cb3f8bbc908d25aa9 Mon Sep 17 00:00:00 2001 From: Philippe Dellaert Date: Thu, 30 Jan 2014 21:41:19 +0100 Subject: [PATCH 4/4] Alphabetical order --- sample/getallvms.py | 2 +- sample/poweronvm.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sample/getallvms.py b/sample/getallvms.py index c31c69b..5a15a4c 100644 --- a/sample/getallvms.py +++ b/sample/getallvms.py @@ -24,8 +24,8 @@ from pyVmomi import vmodl import argparse import atexit -import sys import getpass +import sys def GetArgs(): diff --git a/sample/poweronvm.py b/sample/poweronvm.py index ec62f7c..4962a98 100755 --- a/sample/poweronvm.py +++ b/sample/poweronvm.py @@ -24,8 +24,8 @@ from pyVmomi import vim, vmodl import argparse import atexit -import sys import getpass +import sys def GetArgs(): """