Jan-24-2022, 02:14 PM
(This post was last modified: Jan-24-2022, 02:15 PM by wardancer84.)
very helpful inputs...thanks for that.
i changed the script according to your suggestions...
looks not right.
wbr
chris
i changed the script according to your suggestions...
#!/usr/bin/env python3 import sys import os import pprint from collections import defaultdict import pymysql import pymysql.cursors from SudoersLib import * input_path="/admin/sudoers" infiles= os.listdir(input_path) connection = pymysql.connect(host='localhost', user='sudodb', password='sudodb', database='sudoersdb', cursorclass=pymysql.cursors.DictCursor) for infile in infiles: infile=os.path.join(input_path, infile) sudo_obj = Sudoers(path=infile) file_name = os.path.basename(infile) sudohost = file_name.split('-')[1] results = defaultdict(list) sudo_host_list = [] sudo_host_list.append(sudohost) results['sudohost'].append(sudo_host_list) for key in sudo_obj.host_aliases: host_alias_list = [] host_alias_list.append((key, sudo_obj.host_aliases[key])) results['hostalias'].append(host_alias_list) for key in sudo_obj.cmnd_aliases: cmnd_alias_list = [] cmnd_alias_list.append((key, sudo_obj.cmnd_aliases[key])) results['cmndalias'].append(cmnd_alias_list) for key in sudo_obj.runas_aliases: runas_alias_list = [] runas_alias_list.append((key, sudo_obj.runas_aliases[key])) results['runasalias'].append(runas_alias_list) for key in sudo_obj.user_aliases: user_alias_list = [] user_alias_list.append((key, sudo_obj.user_aliases[key])) results['useralias'].append(user_alias_list) for rule in sudo_obj.rules: users_list = [] hosts_list = [] rules_list = [] users_list.append((rule["users"])) results['users'].append(users_list) hosts_list.append((rule["hosts"])) results['hosts'].append(hosts_list) rules_list.append((rule["users"], rule["hosts"], (rule["commands"]))) results['commands'].append(rules_list) #print("%s|%s|%s|%s" % (sudohost, ",".join(rule["users"]), ",".join(rule["hosts"]), ",".join(map(str, rule["commands"])))) cursor = connection.cursor() qcolname = ",".join(map(str, results.keys())) qmarks = ",".join('?' * len(results)) qry = "INSERT INTO rules (%s) VALUES (%s)" % (qcolname, qmarks) #qvals = ",".join(map(str, results.values())) qvals = list(results.values()) qvals_tupledx = tuple(qvals) #qvals_stringed = ','.join(map(str, qvals)) #print(qvals_stringed) print(type(qvals_tupledx)) print(qry, qvals_tupledx) #cursor.execute(qry, qvals_stringed) #connection.commit()output is now a tuple and the sql string looks more or less ok..
<class 'tuple'> INSERT INTO rules (sudohost,users,hosts,commands) VALUES (?,?,?,?) ([['aixacodbt']], [[['root']]], [[['ALL']]], [[(['root'], ['ALL'], [{'run_as': ['ALL'], 't ags': None, 'command': 'ALL'}])]])what puzzles me all time time with this kind of stuff...how to get rid of all those square brakets in the output as this
looks not right.
wbr
chris