Repository URL to install this package:
Version:
3.3.14 ▾
|
#!/home/tvault/.virtenv/bin/python
import getopt
import os
import random
import stat
import string
import sys
DEFAULT_TOKEN_PATH = '/etc/zvmsdk/token.dat'
def usage():
print('Usage: zvmsdk-gentoken [-h] [-u] [token file path]')
print('')
print('Tool to Generate and Update Token')
print('')
print('Optional aruments:')
print(' -h, --help\t\tshow this help message and exit')
print(' -u, --update\tgenerate a random token and update into file')
print(' \t\t\tif path not assigned, use default /etc/zvmsdk/token.dat.')
def random_token():
# random token only include upper cases and digits
token_random = ''.join(
random.choice(string.ascii_uppercase +\
string.ascii_lowercase +\
string.digits)
for _ in range(42))
return token_random
def create_token_file(file_path):
#if file not exits, create it
if os.path.exists(file_path):
print('Token File Already Existed!')
print('')
sys.exit(2)
# create token file
os.mknod(file_path)
# generate random token
token = random_token()
# write token data
with open(file_path, 'w') as fp:
fp.write(token)
# change file mode to 400
os.chmod(file_path, stat.S_IRUSR|stat.S_IWUSR)
def update_token_file(file_path):
#if file not exits, raise exception
if not os.path.exists(file_path):
print('Token File Not Exist!\n')
print('')
sys.exit(3)
token = random_token()
# write token data
with open(file_path, 'w') as fp:
fp.write(token)
def main(argv):
try:
opts, args = getopt.gnu_getopt(argv, 'hu', ["help", "update"])
# if none arguments and options means initialization
if opts == [] and args == []:
create_token_file(DEFAULT_TOKEN_PATH)
sys.exit(0)
if args != [] and opts == []:
create_token_file(args[0])
sys.exit(0)
# print help first and exit
for o, a in opts:
# print help message
if o in ('-h', '--help'):
usage()
sys.exit(0)
# process options
for o, a in opts:
# update token file
if o in ('-u', '--update'):
if args == []:
file_path = DEFAULT_TOKEN_PATH
else:
file_path = args[0]
update_token_file(file_path)
msg = "token updated, please remeber" +\
"to update the token data on client side!"
print msg
except getopt.GetoptError:
print('syntax ERROR!')
usage()
sys.exit(1)
# exist code:
# 0: success
# 1: sytax error
# 2: file not exist
# 3: file already existed
if "__main__" == __name__:
main(sys.argv[1:])
sys.exit(0)